Файлы

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
seen
Сообщения: 1
Зарегистрирован: 05 май 2011, 00:22

Нужна помощь...

Задание: Ведомость абитуриентов содержит ФИО, город проживания, суммарный балл. Вывести информацию об абитуриентах, проживающих в г. Минске и набравших бал больше 220.

код программы :

Код: Выделить всё

#include <iostream.h>  
#include <stdio.h>  
#include <conio.h> 
#include <stdlib.h> 
#include <string.h> 
 
FILE *fl; 
typedef struct  
{ 
	char fio[30]; 
	char city[30];
    int ball; 
} abiturient; 
 
abiturient ved[30]; 
char name[20];      
int n=0;     
int menu();       
void nnf();       
void newf();  
void spisok();
void opf();   
void resc();  
void resf();
 
int main()  
{  
	while (true)  
	{ 
		switch (menu()) 
		{ 
			case 1: nnf();    break; 
			case 2: newf();   break; 
			case 3: spisok(); break; 
			case 4: opf();    break; 
			case 5: resc();   break; 
			case 6: resf();   break; 
			case 7: return 0; 
			default: "Viberite pravilno!"; 
		} 
		puts("Press any key to continue");  
		getch();      
		system("cls");  
	}  
}  
 
int menu() 
{ 
	cout << "VIBERITE:" << endl; 
	cout << "1. Vvod file name" << endl; 
	cout << "2. New file" << endl; 
	cout << "3. Vvesti spisok" << endl; 
	cout << "4. Open file" << endl; 
	cout << "5. Vivesti result" << endl; 
	cout << "6. Vivesti v fail" << endl; 
	cout << "7. Exit" << endl; 
	int i; 
	cin >> i; 
	return i; 
} 
 
void nnf() 
{ 
	cout << "Vvedite file name" << endl; 
	cin >> name; 
} 
 
void newf()
{ 
	if ((fl = fopen(name,"wb"))==NULL) 
	{ 
		cout << "Oshibka pri sozdanii"<<endl; 
		exit(1); 
	} 
	cout << "OK" << endl; 
	fclose(fl); 
} 
 
void spisok()
{ 
	if ((fl = fopen(name,"rb+"))==NULL) 
	{ 
		cout << "Oshibka pri sozdanii"<<endl; 
		exit(1); 
	} 
 
	cout << "Vvedite chislo abiturientov " << endl; 
	cin >> n; 
 
	for (int i=0; i<n; i++) 
	{ 
		cout << "Vvedite fio: "; 
		cin >> ved[i].fio; 
		cout << "Vvedite summarni ball: "; 
		cin >> ved[i].ball; 
		cout << "Vvedite gorod: "; 
		cin >> ved[i].city;
		fwrite( &ved[i], sizeof(abiturient), 1, fl ); 
	} 
	fclose(fl); 
} 
 
void opf()
{ 
	if ((fl = fopen(name,"rb"))==NULL) 
	{
		cout << "Oshibka pri otkritii"<<endl; 
		exit(1); 
	} 
 
	n=0; abiturient t; 
	while(true) 
	{ 
		int  nwrt = fread( &t, sizeof(abiturient), 1, fl ); 
		if (nwrt!=1) break; 
		ved[n]=t; 
		cout << ved[n].fio << "  " << ved[n].ball  << "  " << ved[n].city<<endl;
		n++; 
	} 
	fclose(fl); 
} 
 
void resc()
{ 
	
	for (int i=0; i<n; i++) 
	
	if (ved[i].ball>220 && ved[i].city == "minsk")
	
	{	
		cout << ved[i].fio <<" "<<ved[i].ball<<" "<<ved[i].city << endl;  
	}
	


} 
 
void resf()
{ 
	char namet[30]; 
	FILE *ft; 
	cout << "Vvedite imya faila" << endl; 
	cin >> namet; 
	if ((ft = fopen(namet,"w"))==NULL) 
	{ 
		cout << "Oshibka pri sozdanii "<<endl; 
		exit(1); 
	} 
	char s[80]; 
	
	for (int i=0; i<n; i++) 
	if (ved[i].ball>220 && ved[i].city == "minsk")
	{
		strcpy(s, ved[i].fio);
		strcat(s, "\n");
		fputs(s, ft); 
		strcpy(s, ved[i].city);
		strcat(s, "\n");
		fputs(s, ft);

    } 
	fclose(ft); 
}
Помогите пожалуйста с выводом нужного абитуриента, вот что-то написал, в результате ничего не выдает...
Ответить