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

обработка файлов - C++

Восстановить пароль Регистрация
 
zttx
1 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 65
15.05.2012, 12:24     обработка файлов #1
дан текстовый файл. получить строку, в которой минимальное число слов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2012, 12:24     обработка файлов
Посмотрите здесь:

обработка файлов C++
C++ Создание и обработка файлов
C++ обработка файлов
C++ c++ обработка файлов
обработка файлов данных C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
15.05.2012, 16:05     обработка файлов #2
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
#include <iostream>
#include <fstream>
 
#define N 256
 
typedef struct Lines
{
      char* m_line;
      int m_wcount;
} LINES;
 
using namespace std;
 
int main()
{
     const char* filename = "d:\\input.txt";
     ifstream ifs(filename,ifstream::in);
 
     static char line[256] = "\0"; int count = 0; 
     LINES* lines = (LINES*)malloc(N * sizeof(LINES));
     while (ifs.peek() >= 0 && ifs.getline(line, 256))
     {
          lines[count].m_line = new char[256];
          strcpy(lines[count++].m_line, line);
     }
 
     for (int index = 0; index < count; index++)
     {
          lines[index].m_wcount = 1;
          char* line = lines[index].m_line;
          for (int q = 0; line[q] != '\0'; q++)
              if (isspace(line[q])) lines[index].m_wcount++;
     }
 
     int min = 0;
     for (int q = 0; q < count; q++)
          if (lines[q].m_wcount < lines[min].m_wcount)
              min = q;
 
     printf("%s\n", lines[min].m_line);
}
zttx
1 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 65
29.05.2012, 11:24  [ТС]     обработка файлов #3
создаем папку, в ней создаем файл с программой и текстовый документ in.txt, в котором будет 5 строк(строки для наглядности разделю запятыми) : 12345678,1234,123,12
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
#include<iostream>
#include<stdio.h>
#include<locale>
#include<string>
using namespace std;
 
 
int main()
{FILE *old, *new1;
 int x=0,min=0,j=0;
 char a; char mas[100];
  if((old=fopen("in.txt","r+"))!=NULL)
    {for(int i=1; (a=getc(old))!='\n'; i++)
      {x++;
      fseek(old,i,SEEK_SET);
      
      }
    min=x;
     x=0;
     for(int i=1; (a=getc(old))!=EOF; i++)
      {x++;
      fseek(old,i,SEEK_SET);
       if((int)a==0x0a)
        {x--;
         if(x<min)  
           { min=x;;
             x=0;
           fseek(old,0,SEEK_CUR);
           new1=fopen("samaya korotkaya stroka.txt","w+");
             while((a=getc(old))!=0x0a)
               putc(a,new1);
             
           }
         else 
           x=0;
            
        }
      
      }
     
    }
  else
    cout<<"Исходный документ пустой!!!"<<endl;
       
system("pause");
}
почему программа не проверяет остальные строки и всегда выдает вторую?
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
29.05.2012, 11:44     обработка файлов #4
Данный код вряд-ли приведет к решению данной задачи, поскольку файл необходимо считывать не посимвольно с помощью fgetc, а построчно используя fgets, и далее считать длину каждой строки отдельно при помощи strlen.
zttx
1 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 65
29.05.2012, 13:30  [ТС]     обработка файлов #5
А как тогда переделать?
zttx
1 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 65
03.06.2012, 09:09  [ТС]     обработка файлов #6
zitxbit, ваша программа также выдает всегда вторую строку не зависимо больше в ней символов или меньше..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2012, 09:17     обработка файлов
Еще ссылки по теме:

C++ обработка файлов
Создание и обработка файлов C++
Обработка файлов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ilyawow
24 / 24 / 5
Регистрация: 18.11.2011
Сообщений: 266
03.06.2012, 09:17     обработка файлов #7
Можн оиспользовать следуйщий метод: допустим 1 строка самая короткая, считываем 2 строку сравниваем если первая меньше то оставляем все на своих местах,иначе минимальная строка это 2 и дальше читаем 3 строку и сравниваем и.т.д. до конца файла .
Yandex
Объявления
03.06.2012, 09:17     обработка файлов
Ответ Создать тему
Опции темы

Текущее время: 12:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru