105 / 102 / 89
Регистрация: 18.05.2009
Сообщений: 201
|
|
1 | |
создать файл29.05.2009, 17:00. Показов 1107. Ответов 2
Метки нет (Все метки)
Помогите пожайлуста исправить программу. Файл вроде создает,а вот просмотр,добавление и изменение никак. Подскажите как поменять местами в файле записи о первых двух спортсменах.Заранее благодарен!
Используя функции и режим меню, создать файл из 10 структур, просмотреть файл, добавить в файл новую информацию , применяя режим прямого доступа. Структура имеет вид: фамилия спортсмена, его номер, количество набранных очков. Поменять местами в файле записи о первых двух спортсменах. Код
[CPP]#include<stdio.h> #include<conio.h> #include<string.h> struct sport{char name[10];int number;int kol;}sp; void input(FILE *); void print(FILE *); void app(FILE *); void find(FILE *); main() { char c; FILE *tf; while (1) { puts("1-novuy fail"); puts("2-prosmotr faila"); puts("3-dobavlenie v fail"); puts("4-poisk i izmenenie"); puts("0-vyhod"); c=getch(); switch(c) {case '1':input(tf); break; case '2':input(tf);break; case '3':input(tf);break; case '4':input(tf);break; case '0':input(tf);break; default : puts("nevernuy regim"); } } } void input(FILE *tf) {char ch; tf=fopen("FILE1.dat","wb"); printf("\n vvedite informaciu o sportcmene \n"); do { printf("\n familiya: "); scanf("%s",sp.name); printf(" nomer: "); scanf("%d",&sp.number); printf(" kolichestvo ochkov: "); scanf("%d",&sp.kol); fwrite(&sp,sizeof(sp),1,tf); printf("\n Zakonchity ? y/n"); ch=getch(); } while (ch != 'y'); fclose(tf); } void print(FILE*tf) { int i; tf=fopen("file.dat","rb"); i=1; fread(&sp,sizeof(sp),1,tf); while(!feof(tf)) {printf("\n %3d familiya %10s number %6d kolichestvo ochkov %4d ",i,sp.name,sp.number,sp.kol); fread(&sp,sizeof(sp),1,tf); i++; } getch(); } void app(FILE *tf) {char ch; tf=fopen("file1.dat","ab"); printf("\n vvedite informaciu o sportcmene \n"); do { printf("\n familiya: "); scanf("%s",sp.name); printf(" nomer: "); scanf("%d",&sp.number); printf(" kolichestvo ochkov: "); scanf("%d",&sp.kol); fwrite(&sp,sizeof(sp),1,tf); printf("\n Zakonchity ? y/n"); ch=getch(); } while (ch != 'y'); fclose(tf); } void FIND(FILE*tf) {char c, sport[10]; long int i; tf=fopen("file1.dat","rb+"); puts(" Familiya sportcmena: "); gets(sport); fread(&sp,sizeof(sp),1,tf); while (!feof(tf)) {if (strcmp(sp.name,sport)==0) {printf(" familya %10s number %6.2d kolichestvo ochkov %d",sp.name,sp.number,sp.kol); printf("/n Izmenity ? y/n"); c=getch(); if (c=='y') {printf("\n kolichestvo: "); scanf("%d",&sp.kol); printf("\n number: "); scanf("%d",&sp.number); i=sizeof(sp); fseek(tf,-i,1); fwrite(&sp,sizeof(sp),1,tf); } } fread(&sp,sizeof(sp),1,tf); } fclose(tf); } [/CPP] Подправил. Создание, добавление и чтение работают. Поиск, вроде, тоже.А вот поменять местами в файле записи первых двух спортсменов не могу. Помогите. Код
[CPP]#include <stdio.h> #include <conio.h> #include <string.h> struct sport { char name[10]; int number; int kol; } sp; void input(FILE *); void print(FILE *); void app(FILE *); void find(FILE *); main() { char c; FILE *tf; while (1) { puts("\n 1-novuy fail"); puts(" 2-prosmotr faila"); puts(" 3-dobavlenie v fail"); puts(" 4-poisk i izmenenie"); puts(" 0-vyhod"); 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("nevernuy regim"); } } } //---------- void input(FILE *tf) { char ch; tf=fopen("file.dat","wb"); printf("\n vvedite informaciu o sportcmene \n"); do { printf("\n familiya: "); scanf("%s",sp.name); printf(" nomer: "); scanf("%d",&sp.number); printf(" kolichestvo ochkov: "); scanf("%d",&sp.kol); fwrite(&sp,sizeof(struct sport),1,tf); printf("\n Zakonchity ? y/n"); ch=getch(); } while (ch != 'y'); fclose(tf); } void print(FILE *tf) { int i; tf=fopen("file.dat","rb"); i=1; fread(&sp,sizeof(struct sport),1,tf); while(!feof(tf)) { printf("\n %3d familiya %10s number %6d kolichestvo ochkov %4d ",i,sp.name,sp.number,sp.kol); fread(&sp,sizeof(struct sport),1,tf); i++; } getch(); } void app(FILE *tf) { char ch; tf=fopen("file.dat","ab"); printf("\n vvedite informaciu o sportcmene \n"); do { printf("\n familiya: "); scanf("%s",sp.name); printf(" nomer: "); scanf("%d",&sp.number); printf(" kolichestvo ochkov: "); scanf("%d",&sp.kol); fwrite(&sp,sizeof(sp),1,tf); printf("\n Zakonchity ? y/n"); ch=getch(); } while (ch != 'y'); fclose(tf); } void find(FILE*tf) { char c, sport[10]; long int i; tf=fopen("file.dat","r+b"); puts(" Familiya sportcmena: "); gets(sport); fread(&sp,sizeof(sp),1,tf); while (!feof(tf)) { if (strcmp(sp.name,sport)==0) { printf(" familya %10s number %6.2d kolichestvo ochkov %d",sp.name,sp.number,sp.kol); printf("/n Izmenity ? y/n"); c=getch(); if (c=='y') { printf("\n kolichestvo: "); scanf("%d",&sp.kol); printf("\n number: "); scanf("%d",&sp.number); i=sizeof(sp); fseek(tf,-i,1); fwrite(&sp,sizeof(sp),1,tf); } } fread(&sp,sizeof(sp),1,tf); } fclose(tf); }[/CPP]
0
|
29.05.2009, 17:00 | |
Ответы с готовыми решениями:
2
Создать файл F1, записать в него N чисел, а затем создать его копию - файл F2 Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл согласно своему варианту. Dev C++ Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и исходный файл, но в обратном порядке создать файл 1.part и записать в него первые x элементов массива. После чего, создать второй файл 2.part, куда записать оставшиеся в массиве элементы. |
105 / 102 / 89
Регистрация: 18.05.2009
Сообщений: 201
|
|
31.05.2009, 21:23 [ТС] | 2 |
Подскажите ка поменять местами в файле записи первых двух спортсменов
0
|
692 / 383 / 51
Регистрация: 22.01.2009
Сообщений: 1,135
|
|
31.05.2009, 21:32 | 3 |
По-моему придется считывать весь файл в массив... затем в этом массиве елементы менять местами... а затем обратно в файл.
1
|
31.05.2009, 21:32 | |
31.05.2009, 21:32 | |
Помогаю со студенческими работами здесь
3
Файл: Создать файл и записать в него обратные натуральные числа 1,1/2,...1/n. Файл: Создать новый файл, содержащий числа исходного файла в обратном порядке. Подскажите, нужно перегрузить оператор или создать метод(если создать то не понимаю как) записи в файл Создать файл с квадратной матрицей; чётные элементы переместить в один файл, нечётные - в другой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |