Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
3 / 3 / 2
Регистрация: 09.12.2011
Сообщений: 58
1

Считать текст из файла и вывести на экран все слова с максимальной длиной

12.02.2012, 19:34. Показов 2215. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Напишите программу, которая считывает текст из файла и выводит на экран все слова, с максимальной длиной. Необходимо предусмотреть случай, если файла не существует.

Подскажите кто решения или хотя бы идею (нахождение слов с максимальной длинной)

Вот проверка на существование файла и вывод его содержимого на экран:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream.h>
 #include <string.h>
 #include <stdio.h>
 #include <conio.h>
 
int main()
{
char s[1000];
 FILE * f;
 clrscr ();
 if ((f=fopen("readme.txt", "rt")) == NULL) {cout <<"fail ne najden" ;}
do {
int Char=fgetc (f);
if (Char != EOF) putchar (Char);
} while (!feof (f));
 getch ();
 return 0;
 }
Добавлено через 2 часа 22 минуты
Друзья, помагите пожайлуста!!! Вот я написал кое-что....низнаю даже где и ошибка....Он вообще ничего не выводит кроме длины самого длинного слова. Наверное это потому что когда я первый раз "прошелся по файлу" его надо закрыть, а затем заново открывать...я же не закрывал (а если и закрывал то при выполнение программы она зависала и приходилась нажимать "ctrl+break")

Вот примерный алгоритм: сначала я нашел самое длинное слово (слова)=max.....а затем пробовал заново "пройтись по файлу" и найти и вывести все слова равные длинне max...
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
int main()
{
   clrscr ();
   FILE *f;
   int max;
   char *e;
   char s[255];
   int k,d,i,ii;
   f = fopen("lol.txt", "rt");
   if (f==NULL)
   {
      printf("Owibka\n");
      getch ();
      return 0;
   }
   max=0;  ii=0;
   k=0;
   d=0;
   i=0;
   while(feof(f)==NULL)
   {
      e[0]=fgetc(f);
      if (e[0]!=' ') k++;
      if (e[0]==' ')
      {
     if (k>max)
     {
        (max=k);
 
     }
     k=0;
      }
   }
   // fclose (f);
 
 
     //  f=fopen ("log.txt","rt");
     while(feof(f)==NULL)
     {
        e[0]=fgetc(f);
        i++;
        s[i]=e[0];
        if (e[0]!=' ') {(d++) ; }
        if ((e[0]==' ') && (d==max))
        {
           ii=i-max; // возращение к началу слова
           for (int h=ii; h>=i; h++)
           {
          printf ("%s",s[h]);
          d=0;
          ii=0;
           }
        }
 
      }
 
   fclose(f);
   cout<<max;
   getch();
   return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2012, 19:34
Ответы с готовыми решениями:

Считать из файла текст; вывести на экран все слова текста, упорядочив их по размеру
Ребят, помогите с задачей пожалуйста. Нужно считать текст из файла, потом вывести все слова этого...

Считать текст из файла и вывести на экран все слова текста, начинающиеся с гласной буквы
Напиcать программу, которая считывает текст из файла и выводит на экран все слова текста,...

Считать текст из файла и вывести на экран слова из него в алфаыитном порядке
Здравствуйте. Помогите пожалуйста с решением одной задачи. Необходимо считать текст из файла и...

Считать текст из файла и вывести его на экран, заменив цифры от 0 до 9 на слова
Задачка в С++ Считать текст из файла и вывести его на экран, заменив цифры от 0 до 9 на слова...

9
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
12.02.2012, 19:59 2
fseek(f, 0, SEEK_SET); вернет указатель позиции в начало файла.
0
3 / 3 / 2
Регистрация: 09.12.2011
Сообщений: 58
12.02.2012, 20:25  [ТС] 3
NoMasters спасибо за fseek(f, 0, SEEK_SET);... но я после первого прохода закрыл, а затем заново открыл...программа стала каректно работать (не зависает), но так ничего мне и не вывела...даже теперь и не знаю где может быть ошибка
0
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
12.02.2012, 20:37 4
Цитата Сообщение от alexandr017 Посмотреть сообщение
C
1
printf ("%s",s[h]);
Тут вообще падать должно по идее. У символа формат %c, %s для строки целиком.
0
3 / 3 / 2
Регистрация: 09.12.2011
Сообщений: 58
12.02.2012, 20:54  [ТС] 5
Если записать так: printf ("%с",s[h]); то всё равно выводит только переменную max (63 строка)....
0
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
12.02.2012, 21:09 6
В цикле 52 условие всегда ложное.
1
3 / 3 / 2
Регистрация: 09.12.2011
Сообщений: 58
12.02.2012, 21:24  [ТС] 7
получается что строка 49 не срабатывает почему-то.... (пробовал даже вместо && поставить || все равно не работает)......да и ещё....у меня переменная max паходу правильно работает только когда в файле одна строва....
0
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
12.02.2012, 21:31 8
Оно срабатывает, зато h заведомо меньше i, так что тело цикла не выполниться ни разу. Кроме того, обнулять счетчик длинны нужно на любом пробеле.
1
3 / 3 / 2
Регистрация: 09.12.2011
Сообщений: 58
12.02.2012, 23:25  [ТС] 9
Вроде исправил, но почему-то свё равно не работает.
Народ, помогите плиз, а то эта задача мне уже скоро сниться будет.... вот мой конечный вариант


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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
int main()
{
   clrscr ();
   FILE *f;
   int max;
   char *e;
   char s[255];
   int k,d,i,ii;
   f = fopen("lol.txt", "rt");
   if (f==NULL)
   {
      printf("Owibka\n");
      getch ();
      return 0;
   }
   max=0;  ii=0;
   k=0;
   d=0;
   i=0;
   while(feof(f)==NULL)
   {
      e[0]=fgetc(f);
      if (e[0]!=' ') k++;
      if (e[0]==' ')
      {
     if (k>max)
     {
        (max=k);
 
     }
      k=0;
      }
   }
   fclose (f);
  //      fseek (f,0,SEEK_SET);
 
     f=fopen ("log.txt", "rt");
     if (f!=0)
     {
        while(feof(f)==NULL)
        {
           e[0]=fgetc(f);
           i++;
           s[i]=e[0];
           if (e[0]!=' ') (d++) ;
           if (e[0]==' ')
           {
          if (d==max)
          {
             ii=i-max-1; // возращение к началу слова
             for (int h=ii; h>=i; h++)
             {
            printf ("%c",s[h]);
             }
             ii=0;
             d=0;
          }
          else
             d=0;
    }  }
      }
   fclose (f);
  // for (int r=0; r<=strlen (s); r++) { printf ("%c",s[r]);}
  // cout<<s;
  // puts (s);
   cout<<max;
   getch();
   return 0;
}
0
3 / 3 / 2
Регистрация: 09.12.2011
Сообщений: 58
19.02.2012, 16:27  [ТС] 10
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Решил всё-таки доделать задачу до конца...вот код, может кому-нить пригодиться....:
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
int main()
{
   clrscr ();
   int ggg;
   FILE *f;
   int max;
   char *e;
   char s[255];
   int k,d,i,ii,m,h;
   f = fopen("readme.txt", "rt");
   if (f==NULL)
   {
      printf("Owibka\n");
      getch ();
      return 0;
   }
   cout<<"Samye dlinnye slova:\n";
   max=0;  ii=0; k=0; m=0; d=0; i=0;
   while(feof(f)==NULL)
   {
      e[0]=fgetc(f);
      if (e[0]!=' ') k++;
      if (e[0]==' ')
      {
         if (k>max)
     {
        (max=k);
 
     }
      k=0;
      }
   }
   fseek (f,0,SEEK_SET);
   while(feof(f)==NULL)
   {
      e[0]=fgetc(f);
      s[i]=e[0];
      if (e[0]!=' ') (d++) ;
      if (e[0]==' ')
      {
         if (d==max)
    {
            ii=i-max;
        m=i;
        for (h=ii; h<=m; h++)
        {
           printf ("%c",s[h]);
        }
        ii=0;
        d=0;
         }
         else
         d=0;
      } 
   i++;
   }
   fclose (f);
   getch();
   return 0;
}
0
19.02.2012, 16:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2012, 16:27
Помогаю со студенческими работами здесь

Считать английский текст из файла и вывести на экран слова, начинающиеся с гласных букв
Написать программу, которая считывает английский текст из файла и выводит на экран слова,...

Строки: считать текст из файла и вывести на экран слова, начинающиеся с гласных букв
Написать программу, которая считывает текст из файла и выводит на экран слова, начинающиеся с...

Считать английский текст из файла и вывести на экран слова, начинающиеся с гласных букв
программа , которая считает английский текст из файла и выводит на экран слова, начинающиеся с...

Считать текст из файла и вывести на экран, меняя местами каждые два соседних слова
Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru