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

как организовать удаление? работа с файлами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Шифр Полибия http://www.cyberforum.ru/cpp-beginners/thread742622.html
Ребята, есть у кого-нибудь шифр квадрата Полибия на c++ рабочий? Весь интернет прошуршил и не нашел..
C++ Массивы. Найти четвертое отрицательное число Дан одномерный массив. Найти в нем четвертое отрицательное число(если его нет то вывести на екран текст: не найдено число) http://www.cyberforum.ru/cpp-beginners/thread742620.html
C++ Массив из максимальных элементов строк файла
Добрый вечер!Возникла проблема, которую не могу решить уже 3 часа...Как найти все максимальные элементы строк файла заданного рандомно от -100 до 100 и записать их в массив? Заранее спасибо! Вот часть кода: #include <iostream> #include <istream> #include <fstream> #include <conio.h> #include <cstdlib> #include <ctime> #include <iomanip> #include <windows.h> #include <stdio.h>
установка include В Borland c++ 3.1 C++
Мне необходимо запустить один файл ранее написанный на брланде, при компиляции ругается что не установленны conio.h math.h и многи и другие, подскажите их нужно как то отдельно что ли загружать в борланд? Добавлено через 16 минут Мне необходимо запустить один файл ранее написанный на брланде, при компиляции ругается что не установленны conio.h math.h и многи и другие, подскажите их нужно как...
C++ Пишу программу, для моделирования физ. процесса, что использовать для визуализации: окно, с помощью CreateWindow, или канву, или ещё что-то? http://www.cyberforum.ru/cpp-beginners/thread742600.html
Доброго времени суток, делаю программу, для моделирования физ. процесса, так вот что использовать для визуализации: окно, с помощью CreateWindow, или канву, или ещё что-то?
 

Показать сообщение отдельно
нови4ок
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 4
23.12.2012, 00:38     как организовать удаление? работа с файлами
при вводе фамилии в файле должна удаляться строка... как это сделать? в программе удаление работает неправильно..

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 sport        /* структура записи входного файла */
{  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);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru