Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2010, 15:28   #1
metallldoctor
Новичок
Джуниор
 
Регистрация: 25.12.2009
Сообщений: 2
По умолчанию работа с текстовыми файлами

!!!!!!Огромная!!!!! просьба помочь доработать программу

Задача:
Дан текстовый файл F. Найти предложение с максимальным количеством слов, состоящих из N символов. Если таких предложений с максимальным количеством символов несколько, найти их все. Переписать эти предложения в другой файл G.

Код:
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <stdlib.h>

void menu();
void add();
void operation();
void view();

FILE *F,*G;

int main()
{
setlocale(LC_ALL,".1251");
printf("                            Задача 2.\n"
"--------------------------------------------------------------------------------"
"Описание.Дан текстовый файл F.Найти предложение с максимальным количеством слов,"
"cостоящих из N символов.Если таких предложений с максимальным количеством симво-лов" 
" несколько, найти их все. Переписать эти предложения в другой файл G.                \n"
"--------------------------------------------------------------------------------\n" 
);
menu();
char c;
while (true) {
printf("\rВыбери действие: ");
c=_getche();
switch(c) {
case '1': add(); menu(); break;
case '2': operation(); menu(); break;
case '3': view(); menu(); break;
case '0': return 0;
}
}
getch();
}

void operation() {
int j=0;
char s2[10000]="";

setlocale(LC_ALL,".1251");

int N;
printf( "Введи количество символов N " );
setlocale(LC_ALL,".866");
scanf("%i", &N);
printf( "\n");
setlocale(LC_ALL,".1251");

printf("\n\n-Произвести операцию------------------------------------------------------------\n");
F=fopen("TextF.txt","rt");
if (F==NULL) {
printf("Невозможно открыть текстовый файл, программа будет завершена.\n");
_getch;
exit(-1);
}
for (int i=1;i<=10;i++)
{
printf("\n Строка %d\n",i);
setlocale(LC_ALL,".866");
for (int j=0;j<=999;j++)
{
char s1;
fscanf(F,"%c", &s1);
s2[(i-1)*1000+j]=s1;
printf("%c",s1);
}
setlocale(LC_ALL,".1251");
}
G=fopen("TextG.txt","wt+");
if (G==NULL) {
printf("Невозможно открыть текстовый файл для перезаписи, программа будет завершена.\n");
_getch;
exit(-1);
}

int tmpmax = 0;
int max = 0;
int count = 0;

for (int i=0;i<10;i++)
{
for (int j=0;j<=999;j++)
{
if ((s2[(i*1000)+j]==' ') || (s2[(i*1000)+j]=='.')) 
{
if (count == N) tmpmax++; 
count = 0;
if (s2[(i*1000)+j]=='.')
{
printf("%i", tmpmax); printf( "\n");
if (tmpmax>max) max=tmpmax;
tmpmax = 0;
break;
}
}
else count++;
}
}

tmpmax = 0;
count = 0;
if (max!=0)
{
for (int i=0;i<10;i++)
{
for (int j=0;j<=999;j++)
{
if ((s2[(i*1000)+j]==' ') || (s2[(i*1000)+j]=='.')) 
{
if (count == N) tmpmax++; 
count = 0;
if (s2[(i*1000)+j]=='.')
{
if (max==tmpmax)
{
int k;
for (k=(i*1000);k<(i*1000+1000);k++)
fwrite(&s2[k], sizeof(s2[k]), 1,G);
}
tmpmax = 0;
break;
}
}
else count++;
}
}
}

fclose(G);
fclose(F);
printf("\n-Произвести операцию: завершено-------------------------------------------------\n");
}

void add() {
printf("\n\n-Изменить файл F----------------------------------------------------------------\n");
printf("\nФайл будет перезаписан, ввод информации заново:\n"
"Введи 10 строк длиной до 1000 символов (для того, чтобы остановить ввод, ничего\n"
"не вводя в новую строку нажми Enter):\n\n");
F=fopen("TextF.txt","wt+");
if (F==NULL) {
printf("Невозможно открыть текстовый файл для перезаписи, программа будет завершена.\n");
_getch;
exit(-1);
}
for (int i=1;i<=10;i++)
{
printf("Введи строку %d: ",i);
char s[1000]="";
scanf("%999[^\n]s", s);
fflush(stdin);

fwrite(s, sizeof(s), 1,F);
}
fclose(F);
printf("\n-Изменить файл F: завершено-----------------------------------------------------\n");
}

void view() {
int k1=0;
printf("\n\n-Посмотреть файл G--------------------------------------------------------------\n");
G=fopen("TextG.txt","rt");
if (G==NULL) {
printf("Невозможно открыть текстовый файл, программа будет завершена.\n");
_getch;
exit(-1);
}
printf("Строки с цифрами:\n");
setlocale(LC_ALL,".866");
do
{
char s3;
fscanf(G,"%c", &s3);
if (k1%1000==0) printf("\n-----\n");
k1++;
printf("%c",s3);
} while (!feof(G));
setlocale(LC_ALL,".1251");
if (k1==1) printf("\rВ файле F строк с цифрами нет.\n");
printf("\n-Посмотреть файл G: завершено---------------------------------------------------\n");
}

void menu(void) {
printf(
"\n"
"Меню\n"
"1. Изменить файл F.\n"
"2. Произвести операцию.\n"
"3. Посмотреть файл G.\n"
"0. Выход.\n"
);
}
metallldoctor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстовыми файлами Bytas Общие вопросы C/C++ 1 01.12.2009 22:39
Работа с текстовыми файлами hascker Паскаль, Turbo Pascal, PascalABC.NET 6 14.09.2009 19:01
Работа с текстовыми файлами KroSer63 Общие вопросы по Java, Java SE, Kotlin 0 19.12.2008 20:03
работа с текстовыми файлами Bayazet Общие вопросы Delphi 10 09.12.2008 18:39
Работа с текстовыми файлами DartMrakkk Общие вопросы Delphi 3 14.07.2007 16:52