Jump to content

малко помощ моля


Препоръчан пост

Да се състави обектно-ориентирана програма с до 300 обекта за отчитане на общия хорариум часове, в даден семестър от обучението. Програмата да има следните характеристики:
1. За всеки семестър да се въвеждат следните данни:
- номер на семестър;
- име на учебната дисциплина;
- брой часове на дисциплината - общ = лекции + упражнения;
2.  Да се предвидят следните допълнителни възможности:
- извеждане броя на обектите в програмата и максимално възможният им брой;
- добавяне на нови данни;
- разглеждане на данните за определен номер;
- корекция на данните за определен номер;
- запис и четене на данните във файл;
- да извежда на екрана дисциплините и часовете за дисциплините в избран семестър.
 
Имам проблем със записа и четенето на файл (case 4 i case 5) записва данни които въведа но после не ми изкарва същото:
#include "stdafx.h"
#include <iostream.h>
#include <string.h>
#include <fstream.h>


class Semester

{
public:
	void GetData();
	void Display();
	void Write(ofstream&ofile);
	void Read(ifstream &ifile);
private:
	char disc [40];
	unsigned int sem;
    unsigned int lek;
	unsigned int upr;
};


void Semester::GetData()
{
	cout<<"Semester = ";cin>>sem;
	cout<<"Ime na Uchebna disciplina ";cin>>disc;
	cout<<"Broi lekcii =";cin>>lek;
	cout<<"Broi uprajneniq =";cin>>upr;
}
void Semester::Display()
{
	cout<<"Semester: "<<sem<<" Uchebna Disciplina: "<<disc<<endl;
	cout<<"Broi lekcii: "<<lek<<"  Broi uprajneniq: "<<upr<<"  Obsht horarium = "<<lek+upr<<endl;

}
void Semester::Write(ofstream & ofile)
{
	ofile<<" "<<sem<<" "<<disc<<" "<<lek<<" "<<upr<<endl;
}
void Semester::Read(ifstream & ifile)
{
	ifile>>sem>>disc>>lek>>upr;
}

int main()
{
	Semester s[300];
	int el=0,m; //Broi na elementite
	do
	{
		cout<<el<<" Element ot max 300\n";
		cout<<"1 - Dobavqne na novi danni\n";
		cout<<"2 - Razglejdane na dannite na opredelen nomer\n";
		cout<<"3 - Korekciq na danni za opredelen nomer\n";
		cout<<"4 - Zapis na dannite vav fail\n";
		cout<<"5 - Chetene na dannite ot fail\n";
		cout<<"6 - Disciplini i chasove v semestar\n";
		cout<<"0 - Izhod\n";
		cin>>m;
	
		switch(m)
		{
		case 1:
			s[el].GetData();
			el++;
			cout<<"   "<<endl;
			break;
		case 2:
		{
			int k;
			cout<<"Vavedi nomer 1 do " <<el<<" ";
			cin>>k;
			s[k-1].Display();
			cout<<" "<<endl;
			break;
		}
		case 3:
			{
			int k;
			char c;
			cout<<"Vavedi nomer 1 do "<<el<<" " ;
			cin>>k;
			cout<<"Vashite danni sa: ";
			s[k-1].Display();
            cout<<" "<<endl;
			cout<<"Iskate li da promenite dannite Y/N ";cin>>c;
			if (c=='Y'|| c=='y')
				s[k-1].GetData();
			cout<<" "<<endl;
			break;
			}
		case 4:
			{
				
			Semester s[300];
			ofstream outFile;		
			outFile.open("Semester.txt", ios::out);
	       		el++;	
				for (int i = 0; i<el ; i++)
			{
					
				s[el].GetData();
		    	cout<<"   "<<endl;
				
				s[i].Write(outFile);}

 	        outFile.close();
			break;
			}
		case 5:
			{
				ifstream inFile;		//4etene ot fajl
				inFile.open("Semester.txt", ios::in);
				
				for (int i = 0; i <el ; i++)
				{
					
					s[i].Display();
					cout<<"  "<<endl;
					
				}
				inFile.close();
				break;
			}


		}
	}
	while(m);

	return 0;
	
}

 

Link to comment
Сподели другаде

  • 4 weeks later...

А като запишеш Semester.txt и като го отвориш какво се чете там? Вярно записан файл или е същото което ти вади после от case 5? Освен това в case 5 където трябва да прочетеш файла ти просто го отваряш в променливата inFile и после не я ползваш а използваш променливата s която се намира в текущия ти клас и въобще не е същото като да прочетеш нещо от файла и да го използваш. Единия и най забележим проблем е че не правиш нищо с прочетения файл. Освен да го отвориш и затвориш. Виж този код>
http://msdn.microsoft.com/en-us/library/ae1k9a9f.aspx

 ifstream infile("existingtextfile.txt");

if (!infile.bad())

{

// Dump the contents of the file to cout.

cout << infile.rdbuf();

infile.close();

} 

Ето тук вече се ползва отворения фаил infile от тип ifstream. Не знам какво точно прави функцията .rdbuf() но ако не изкарва текста трябва да намериш друга функция за това.

Link to comment
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...