Вывести информацию о всех двоечниках и корректировать ее - C (СИ)
Формулировка задачи:
такая проблема, нужно сделать задание по своему варианту:
Используя функции и режим меню, создать файл из 10 структур, просмотреть файл, добавить в файл новую информацию и, применяя режим прямого доступа, выполнить задание по своему варианту.
4. Структура имеет вид: фамилия студента, номер зачетной книжки, 4 оценки за экзамен. Выводить информацию о всех двоечниках и корректировать ее.
Уже не хватает нервов исправлять ее... Пока что сделано: создание файла,добавление в него, просмотр файла, а вот поиск и изменение нихера не работают(( очень прошу помочь исправить!
//4. ÑòðóêòóðГ* èìååò ГўГЁГ¤: //ГґГ*ìèëèÿ ñòóäåГ*ГІГ*, Г*îìåð Г§Г*Г·ГҐГІГ*îé ГЄГ*èæêè, 4 îöåГ*ГЄГЁ Г§Г* ГЅГЄГ§Г*ìåГ*. //Âûâîäèòü ГЁГ*ôîðìГ*öèþ Г® ГўГ±ГҐГµ äâîå÷Г*ГЁГЄГ*Гµ ГЁ êîððåêòèðîâГ*ГІГј ГҐГҐ. #include <stdio.h> #include <conio.h> #include <string.h> #include <clocale> #include <stdlib.h> int p; using namespace std; struct tov {char name[10]; int c; int kol;} t1; void input(FILE *); // ñîçäГ*Г*ГЁГҐ Г*îâîãî ГґГ*éëГ* void print(FILE *); // ïðîñìîòð ГґГ*éëГ* void app(FILE *); // äîáГ*âëåГ*ГЁГҐ Гў ГґГ*éë void find(FILE *); // ïîèñê ГЁ èçìåГ*ГҐГ*ГЁГҐ main() { setlocale(LC_CTYPE,"Russian"); char c; FILE *tf; while (1) { puts(" 1 – Г*îâûé ГґГ*éë"); puts(" 2 – ïðîñìîòð ГґГ*éëГ*"); puts(" 3 – äîáГ*âëåГ*ГЁГҐ Гў ГґГ*éë"); puts(" 4 – ïîèñê ГЁ èçìåГ*ГҐГ*ГЁГҐ"); puts(" 0 - âûõîä"); c=getch(); switch(c) { case '1':input(tf);break; case '2':print(tf);break; case '3':app(tf);break; case '4':find(tf);break; case '0':return 0; default : puts(" Г*ГҐГўГҐГ°Г*ûé ðåæèì"); } } } void input(FILE *tf) {char ch; tf=fopen("file1.dat","wb"); // îòêðûòèå ГЎГЁГ*Г*Г°Г*îãî ГґГ*éëГ* äëÿ Г§Г*ГЇГЁГ±ГЁ printf("\n Ââîä ГЁГ*ôîðìГ*öèè Г® ñòóäåГ*ГІГ*Гµ:\n"); do { printf("\n Г”Г*ìèëèÿ ñòóäåГ*ГІГ*: "); scanf("%s",t1.name); printf(" Íîìåð Г§Г*Г·ГҐГІГ*îé ГЄГ*èæêè "); scanf("%d",&t1.c); printf(" 4 îöåГ*ГЄГЁ Г§Г* ГЅГЄГ§Г*ìåГ*: "); scanf("%d",&t1.kol); fwrite(&t1,sizeof(t1),1,tf); // Г§Г*ГЇГЁГ±Гј Гў ГґГ*éë îäГ*îé ñòðóêòóðû t1 printf("\n Г‡Г*ГЄГ®Г*Г·ГЁГІГј? y/n \n"); ch=getch(); } while (ch != 'y'); fclose(tf); } void print(FILE *tf) { int i; tf=fopen("file1.dat","rb"); // îòêðûòèå ГЎГЁГ*Г*Г°Г*îãî ГґГ*éëГ* äëÿ Г·ГІГҐГ*ГЁГї i=1; fread(&t1,sizeof(t1),1,tf); // Г·ГІГҐГ*ГЁГҐ ГЁГ§ ГґГ*éëГ* îäГ*îé ñòðóêòóðû t1 while (!feof(tf)) {printf("\n %3d)Г”Г*ìèëèÿ: %s Íîìåð Г§Г*Г·.ГЄГ*.: %d ",i, t1.name, t1.c); printf(" ÎöåГ*ГЄГ* Г§Г* ГЅГЄГ§Г*ìåГ*: %d",t1.kol); printf("\n"); fread(&t1,sizeof(t1),1,tf); i++; } getch(); } void app(FILE *tf) {char ch; tf=fopen("file1.dat","ab"); // îòêðûòèå ГЎГЁГ*Г*Г°Г*îãî ГґГ*éëГ* äëÿ äîáГ*âëåГ*ГЁГї printf("\n Ââîä ГЁГ*ôîðìГ*öèè Г® ñòóäåГ*ГІГ*Гµ:\n"); do { printf("\n Г”Г*ìèëèÿ ñòóäåГ*ГІГ*: "); scanf("%s",t1.name); printf(" Íîìåð Г§Г*Г·ГҐГІГ*îé ГЄГ*èæêè "); scanf("%d",&t1.c); printf(" 4 îöåГ*ГЄГЁ Г§Г* ГЅГЄГ§Г*ìåГ*: ");scanf("%d",&t1.kol); fwrite(&t1,sizeof(t1),1,tf); // Г§Г*ГЇГЁГ±Гј Гў ГґГ*éë îäГ*îé ñòðóêòóðû t1 printf("\n Г‡Г*ГЄГ®Г*Г·ГЁГІГј? y/n "); ch=getch(); } while (ch != 'y'); fclose(tf); } void find(FILE *tf) {char c, tov[10]; long int i; tf=fopen("file1.dat","rb+"); // îòêðûòèå ГЎГЁГ*Г*Г°Г*îãî ГґГ*éëГ* äëÿ Г·ГІГҐГ*ГЁГї ГЁ Г§Г*ГЇГЁГ±ГЁ puts(" Г”Г*ìèëèÿ ñòóäåГ*ГІГ* "); gets(tov); fread(&t1,sizeof(t1),1,tf); while (!feof(tf)) {if (strcmp(t1.name,tov)==0) {printf(" Г”Г*ìèëèÿ %s Íîìåð Г§Г*Г·.ГЄГ*. %d",t1.name,t1.c); printf(" ÎöåГ*ГЄГ* Г§Г* ГЅГЄГ§Г*ìåГ*: %d",t1.kol); printf("\n èçìåГ*ГЁГІГј? y/n "); c=getch(); if (c=='y') { printf("\nÍîìåð Г§Г*Г·ГҐГІГ*îé ГЄГ*èæêè "); scanf("%d",&t1.c); printf(" 4 îöåГ*ГЄГЁ Г§Г* ГЅГЄГ§Г*ìåГ*: ");scanf("%d",&t1.kol); i=sizeof(t1); fseek(tf, -i, 1); // âîçâðГ*ГІ Г*Г* sizeof(t1) ГЎГ*éò Г*Г*Г§Г*Г¤ fwrite(&t1,sizeof(t1),1,tf);//Г§Г*ГЇГЁГ±Гј èçìåГ*ВёГ*Г*îé ñòðóêòóðû } } fread(&t1,sizeof(t1),1,tf); } fclose(tf); }
Решение задачи: «Вывести информацию о всех двоечниках и корректировать ее»
textual
Листинг программы
FILE *f1; f1=fopen("SpisokStud.bin", "wb");
Объяснение кода листинга программы
- Открывается файл
SpisokStud.bin
в режиме записи (wb
).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д