Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

работа с файлами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Pac-Man в консоли http://www.cyberforum.ru/cpp-beginners/thread742574.html
Недавно начал изучать программирование. Интереснее всего писать игры. Пока тренируюсь в консольном режиме(VSC++2010). Из сделаного ранее, могу похвалится игрой вроде Pac-Маn: обьект перемещается...
C++ Нужны примеры использования пространства имён Помогите пожалуйста , нужно сделать небольшую программку,самому придумать , но в голову ничего не лезет . Я в С++ новичок,но примерно понимаю,что такое пространство имён) Наведите ,пожалуйста, хоть... http://www.cyberforum.ru/cpp-beginners/thread742548.html
Найти исходное число C++
Помогите решить задачку, пожалуйста, очень важно!!! В трехзначном числе зачеркнули первую цифру слева. Когда полученное двузначное число умножили на 7, то получили исходное число. Найти исходное...
Коды управления передвижением каретки C++
Доброе время суток) Задача: управление кареткой принтера с помощью LPT порта в EPP режиме(не обязательно EPP). Собственно вопрос: Подскажите материалы по работе c кареткой принтера. есть статья по...
C++ Работа с файлами http://www.cyberforum.ru/cpp-beginners/thread742512.html
На указатель ругается Possibly incorrect assignment Строки в файл записывает, но не выводит. Что не так? #include <fstream.h> #include <conio.h> #include <iostream.h> int main() { char...
C++ Метод Монте-Карло для тройных интегралов Здравствуйте уважаемые эксперты! Прочитал у вас на форуме информацию по методу Монте-Карло. Основа понятная, реализация присутствует во многих примерах. У меня следующая задача : Вычислить значение... подробнее

Показать сообщение отдельно
нови4ок
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 4

работа с файлами - C++

22.12.2012, 23:51. Просмотров 276. Ответов 3
Метки (Все метки)

в программе не работает удаление... что делать??

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
#include "stdafx.h"
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
#include <windows.h>
 
#define  DL_NOM 4   /* длина поля названия в файле */
#define  DL_FAM 15  /* длина поля имени автора */
#define  DL_GOR 10  /* длина поля года издания */
#define  DL_OCH 5
#define  MAX 20
 
FILE *f,*f2;
 
struct books        /* структура записи входного файла */
{  char  nom[DL_NOM];   /* Название книги */
   char  fam[DL_FAM]; /* автор */
   char  gor[DL_GOR];   /* год издания */
   char och1[DL_OCH];
   char och2[DL_OCH];
};
 
/*-------------------------------------------------*/
 /* функция вывода списка спортсменов */
 /*-------------------------------------------------*/
 
void spisok(FILE *f)
{struct sport tz;    /* текущая запись файла */
    
    printf("\n");
    rewind(f);
    printf("\n № |  Фамилия   |   Город   | Рез. 1 | Рез. 2 |\n");
    printf("------------------------------------------------\n");
    while(fgets((char *)&tz,sizeof(struct sport),f)!=NULL)
        {tz.nom[DL_NOM-1] = '\0';
         tz.fam[DL_FAM-1] = '\0';
         tz.gor[DL_GOR-1] = '\0';
         tz.och1[DL_OCH-1] = '\0';
         tz.och2[DL_OCH-1] = '\0';
         
         printf("%s   %s%s   %s     %s\n",tz.nom,tz.fam,tz.gor,tz.och1,tz.och2);
        }
}
 
/*--------------------------------------------------------*/
 /* функция вывода фамилии спортсмена по сумме рузультатов */
 /*------------------------------------------------------*/
 
void poisk1 (FILE *f)
{   struct sport tz[MAX],z;  /* текущая запись файла */
    int n=0,i=0,k,j;
    rewind(f);
    while(fgets((char *)&tz[i],sizeof(struct sport),f)!=NULL)
        {tz[i].nom[DL_NOM-1] = '\0';
         tz[i].fam[DL_FAM-1] = '\0';
         tz[i].gor[DL_GOR-1] = '\0';
         tz[i].och1[DL_OCH-1] = '\0';
         tz[i].och2[DL_OCH-1] = '\0';
         i++; 
        }
    for(k=0;k<i;k++) 
        for(j=0;j<i-k-1;j++) 
            if(atoi(tz[j].och1)+atoi(tz[j].och2) < atoi(tz[j+1].och1)+atoi(tz[j+1].och2)) 
                {z=tz[j];
                 tz[j]=tz[j+1];
                 tz[j+1]=z;
                }
    printf("\nМесто |  Фамилия  |    Город    |  Сумма результатов   |\n");
    printf("-----------------------------------------------------------");
    for(k=0;k<3;k++)
        printf("\n  %d      %s%s          %d\n",k+1,tz[k].fam,tz[k].gor,atoi(tz[k].och1)+atoi(tz[k].och2));
}
 
 /*-------------------------------------------------*/
 /* функция вывода результатов спортсмена по фамилии */
 /*-------------------------------------------------*/
 
void poisk2(FILE *F)
{   char zfam [DL_FAM]; /* заданная фамилия спорсмена */
    int n=0;         
    struct sport tz;     
    rewind(f);
    puts ("\nВведите фамилию спортсмена");
    SetConsoleCP(1251);
    gets (zfam);
    SetConsoleCP(866);
    if(zfam[0]=='\0')
        {printf("Фамилия не введена\n");
         return;
        }
    printf("\nФамилия   |     Город     | Рез. 1 | Рез. 2 |\n");
    printf("------------------------------------------------");
    while (fgets((char *)&tz,sizeof(struct sport),f) != NULL)
        {tz.nom[DL_NOM-1] = '\0';
         tz.fam[DL_FAM-1] = '\0';
         tz.gor[DL_GOR-1] = '\0';
         tz.och1[DL_OCH-1] = '\0';
         tz.och2[DL_OCH-1] = '\0';
         if (strstr(tz.fam,zfam)==tz.fam)
         {printf ("\n%s %s      %s     %s\n",tz.fam,tz.gor,tz.och1,tz.och2);
             n=1;
            }
        }
         if (n==0)  
            {puts ("\nТаких спортсменов нет"); 
             return;
            }
         else return;
        
}
 
void add(FILE *F)
{ int i=0,k;         
  struct sport tz[MAX]; 
    
    rewind(f);
    puts("\nВведите нового спортсмена\n");
    puts("Номер: ");
    gets((char *)&tz[i].nom);
    puts("Фамилия: ");
    SetConsoleCP(1251);
    gets((char *)&tz[i].fam);
    SetConsoleCP(866);
    puts("Город (Команда): ");
    SetConsoleCP(1251);
    gets((char *)&tz[i].gor);
    SetConsoleCP(866);
    puts("Первый результат: ");
    gets((char *)&tz[i].och1);
    puts("Второй результат: ");
    gets((char *)&tz[i].och2);
    fprintf(f,"\n");
    for(k=0;k<DL_NOM;k++)
        {if(tz[i].nom[k]!='\0'&&tz[i].nom[k]!=-52) 
            fprintf(f,"%c",tz[i].nom[k]);
         else fprintf(f," ");
        }
    for(k=0;k<DL_FAM;k++)
        {if(tz[i].fam[k]!='\0'&&tz[i].fam[k]!='М') fprintf(f,"%c",tz[i].fam[k]);
         else fprintf(f," ");
        }
    for(k=0;k<DL_GOR;k++)
        {if(tz[i].gor[k]!='\0'&&tz[i].gor[k]!=-52) fprintf(f,"%c",tz[i].gor[k]);
         else fprintf(f," ");
        }
    for(k=0;k<DL_OCH;k++)
        {if(tz[i].och1[k]!='\0'&&tz[i].och1[k]!=-52) fprintf(f,"%c",tz[i].och1[k]);
         else fprintf(f," ");
        }
    for(k=0;k<3;k++)
        {if(tz[i].och2[k]!='\0'&&tz[i].och2[k]!=-52) fprintf(f,"%c",tz[i].och2[k]);
         else fprintf(f," ");
        }
}
 
void del(FILE *f)
{ int i=0,k;         
  struct sport tz[MAX],z;   
  char zfam[DL_FAM];
    while(fgets((char *)&tz[i],sizeof(struct sport),f)!=NULL)
        {tz[i].nom[DL_NOM-1] = '\0';
         tz[i].fam[DL_FAM-1] = '\0';
         tz[i].gor[DL_GOR-1] = '\0';
         tz[i].och1[DL_OCH-1] = '\0';
         tz[i].och2[DL_OCH-1] = '\0';
         i++; 
        }
    f2=fopen("sport.txt","w+");
    puts("Введите фамилию");
    SetConsoleCP(1251);
    gets (zfam);
    SetConsoleCP(866);
    if(zfam[0]=='\0')
        {printf("Фамилия не введена\n");
         return;
        }
    for(k=0;k<i;k++)
        if (strstr(tz[k].fam,zfam)==tz[k].fam)
            {z=tz[k];
             tz[k]=tz[k+1];
             tz[k+1]=z;
            }
    for(k=0;k<i-1;k++)
        fprintf(f2,"%s %s %s %s %s",tz[k].nom,tz[k].fam,tz[k].gor,tz[k].och1,tz[k].och2);
    fclose(f2);
}
 
 
        /*----------------------*/
       /*    главная функция   */
       /*----------------------*/
 
void main()
{   
    setlocale(LC_ALL,"Russian");
    char n;   /* номер пункта меню */
    f= fopen("sport.txt", "a+");
    
    if (f==NULL)
        {puts ("Файл  books.txt не найден");
         _getch();
         return ;
        }
    do
    {  puts ("\n========================================================");
       puts ("Выберите номер пункта меню:");
       puts ("1 - вывод списка участников");
       puts ("2 - вывод призеров");
       puts ("3 - поиск спортсмена по фамилии");
       puts ("4 - добавление нового спортсмена в файл");
       puts ("5 - удаление спортсмена по фамилии");
       puts ("6 - выход");
       puts ("---------------------------------------------------------");
       n = _getche();
       switch(n)
            {case '1': spisok(f); break;
             case '2': poisk1(f); break;
             case '3': poisk2(f); break;
             case '4': add(f); break;
             case '5': del(f); break;
             case '6': break;
             default: puts("\nНужно вводить номер пункта от 1 до 6");
            }
       if (n!='6')
            {puts("\nДля продолжения нажмите любую клавишу");
             _getch();
            }
    }
    while (n != '6');
    fclose(f);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru