C Programming
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me
Go Back   Dev Shed ForumsProgramming LanguagesC Programming

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
Stay one step ahead of the competition. Evaluate and give feedback on some of the hottest web development tools on the market today. Make your opinion heard! Click Here
  #1  
Old April 20th, 2003, 01:33 PM
Neildadon Neildadon is offline
Junior Member
Dev Shed Newbie (0 - 499 posts)
 
Join Date: May 2002
Posts: 12 Neildadon User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: < 1 sec
Reputation Power: 0
comparing character arrays from a class and from main

ive become frustrated with this application im trying to solve and would be most grateful if someone could help.

im designing an application which will enable a user to enter marks for a module and work out their result.
Data for a module is stored in a file.

Most of it is yet to be finished but my problem currently is to do with the find_module() function. The function in the class Module called bool is_match has to compare the module code entered by the user with the module codes read into a character array from the text file. If theres a match i.e my module code entered exists the function should return true to my find_module().

text file
Code:
3sfe408
Software Development Principles
12
1
Tut1 2
Tut2 2
Tut3 2
Tut4 2
Tut5 2
Tut6 2
Tut7 2
Tut8 2
Tut9 2
Tut10 2
Cswk1 10
Cswk2 20
50
50
30
30
40
30
3sfe403
System Software
4
1
Test1 10
Test2 10
Test3 10
Test4 10
40
60
30
30
40
30
3sfe407
Introduction to Internet Programming
9
1
Tut1 2
Tut2 3
Tut3 2
Tut4 2
Tut5 2
Tut6 3
Tut7 3
Tut8 2
Cswk 20
40
60
30
30
40
30
3isy453
Modelling in Information Systems
2
1
Cwk1 10
Cwk2 30
40
60
30
30
40
30


header file

Code:
// file module.h

#include <iostream>
#include <fstream>

using namespace std;

const int MODULE_NAME_SIZE = 50; // e.g. System Software
const int CSWK_NAME_SIZE = 10;   // e.g Cswk1
const int MODULE_CODE_SIZE = 10; // e.g. 3sfe403
const int MAX_COURSEWORKS = 20;  // arbitrary limit?

class Module
{
private:
   char code[MODULE_CODE_SIZE]; // module code
   char name[MODULE_NAME_SIZE]; // module name
   int n_cswks; // number of courseworks
   int n_exams; // number of exams (0 or 1)
   char names[MAX_COURSEWORKS][CSWK_NAME_SIZE]; // names of courseworks
   int weightings[MAX_COURSEWORKS]; // weighting of each cswk
   int c_wtg; // overall coursework weighting
   int ex_wtg; // overall exam weighting
   int c_thold; // coursework threshold
   int ex_thold; // exam threshold
   int passmrk; // passmark
   int refer_mark; // referral mark
public:
   Module();
   bool has_exam(); // returns true if module has an exam
   int num_cswks(); // returns number of cswks
   bool is_match(char id[]); // returns true if id matches code
   char* get_name(); // returns name of module as a string
   char* get_cswk_name(int i); // name of coursework i as a string
   int get_cswk_wtg(int i); // weighting for coursework i
   int get_c_wtg(); // returns coursework weighting
   int get_ex_wtg(); // returns exam weighting
   int get_c_thold(); // returns cswk threshold
   int get_ex_thold(); // returns exam threshold
   int get_passmrk(); // returns minimum pass mark
   int get_refer_mark(); // returns minimum referral mark
   void get(ifstream&); // gets data from file
};


module.cc file

Code:
// file module.cc

#include <iostream>
#include "module.h"
#include <cstring>

using namespace std;

Module::Module()
{
   int n_cswks =0; // number of courseworks
   int n_exams=0; // number of exams (0 or 1)
   int c_wtg=0; // overall coursework weighting
   int ex_wtg=0; // overall exam weighting
   int c_thold=0; // coursework threshold
   int ex_thold=0; // exam threshold
   int passmrk=0; // passmark
   int refer_mark=0; // referral mark
}

bool Module::is_match(char id)
{
  return(strcmp(total,id)==0);
}     

char* Module::get_name()
{
   return "DUMMY MODULE NAME"; // UNFINISHED
}

char* Module::get_cswk_name(int i)
{
   return "CSWK"; // UNFINISHED
}

int Module::get_cswk_wtg(int i)
{
   return 0; // UNFINISHED
}

int Module::get_c_wtg()
{
   return 0; // UNFINISHED
}

int Module::get_ex_wtg()
{
   return 0; // UNFINISHED
}

int Module::get_c_thold()
{
   return 0; // UNFINISHED
}

int Module::get_ex_thold()
{
   return 0; // UNFINISHED
}

int Module::get_passmrk()
{
   return 0; // UNFINISHED
}

int Module::get_refer_mark()
{
   return 0; // UNFINISHED
}

bool Module::has_exam()
{
   return false; // UNFINISHED
}

int Module::num_cswks()
{
   return 0; // UNFINISHED
}

void Module::get(ifstream& infile)
{
   char dummy[80];
   infile.getline(code,MODULE_CODE_SIZE) ;
   infile.getline(name,MODULE_NAME_SIZE) ;
   infile >> n_cswks >> n_exams;
   for (int i = 0; i < n_cswks; i++)
   {
      infile >> names[i] >> weightings[i];
   }
   infile >> c_wtg >> ex_wtg >> c_thold >> ex_thold >> passmrk >> refer_mark;
   infile.getline(dummy,80);
}


main file

Code:
// file demo.cc

#include "module.h"
#include <iostream>

using namespace std;

enum Result { PASS, FAIL, REFER}; // used in Result

const int MAX_NUMBER_OF_MODULES = 50; // arbitrary

int find_module(Module modules[],int n,char code[])
{
  int result;
  int i =0;
  while(i < n)
    {
      if(modules[i].is_match(code))
	{
	  result = i;
	  break;
	}
      i++;    
    }

   // if found returns index of position of code in array of modules
   // if not found returns -1
   // n is number of modules read from input file
   return result;
}

void get_marks(Module mod, int marks[])
{
   // gets user entry of marks for module mod
      cout << "Enter marks for " << mod.get_name() << endl;
      cout << "Coursework marks ... " << endl;
      int num_cswks = mod.num_cswks();
      for (int i = 0; i < num_cswks; i++)
      {
         cout << " Enter % mark for " << mod.get_cswk_name(i) << " : ";
         cin >> marks[i];
      }

      if(mod.has_exam())
      {
         cout <<"Enter exam mark : ";
         cin >> marks[num_cswks];
      }
}

void result(Module mod, int marks[])
{
   // it displays the results (pass / fail / list of referrals
   // mod is the module we are working on
   // marks[] is the array of marks - both coursework and exam
   // the exam mark is there is one is the last mark in marks[]
}


int main()
{
   int marks[MAX_COURSEWORKS]; // actual coursework marks
   char module_code[MODULE_NAME_SIZE];
   Module m[MAX_NUMBER_OF_MODULES];
   
   // open the data file if possible - abort if not found
   ifstream infile("module.txt");
   if (infile.fail())
   {
      cerr << "Unable to open input file.";
      exit(1);
   }

   // read data from file and count modules
   int i = 0;
   while(infile)
   {
      m[i].get(infile);
      if (infile)
      {
         i++;
      }

      if(i == MAX_NUMBER_OF_MODULES) break; // just in case!
   }

   int n_modules = i; 

   // get data from user
   cout << "Enter module code : ";
   cin >> module_code;
   
   // check if the module exists
   int num = find_module(m,n_modules,module_code);
   
   if(num >= 0)
   {  // module exists - num is array index
      get_marks(m[num],marks);
      result(m[num],marks);
   }
   else
   {
      cout << "Module " << module_code << " not found\n";
   }
   return 0;
}


at the moment when i run the program it displays "not found"
all i want it to do at this early stage is return the index of position of code in array of modules to main.

im not sure if theres a problem with the way im comparing it in the bool is_match function or if theres a problem in the find_module function with what im sending to be compared, or BOTH.

Reply With Quote
Reply

Viewing: Dev Shed ForumsProgramming LanguagesC Programming > comparing character arrays from a class and from main


Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump


Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 





© 2003-2008 by Developer Shed. All rights reserved. DS Cluster 6 hosted by Hostway