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

Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу - C++

Восстановить пароль Регистрация
 
dimoncheg
 Аватар для dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
17.03.2014, 15:29     Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу #1
Добрый день, уважаемые форумчане. Дана задача:

С помощью текстового редактора Блокнот создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки не превышает 70 символов). Имя файла должно иметь расширение txt. Написать программу, которая выводит содержимое файла на экран и выполняет действия в соответствии с вариантом.

И, допустим, мой вариант: Определить количество слов в тексте; вывести на экран десятое слово.

Создал все файлики, все работает. Можете помочь разобраться в программе, т.к большинство кода не я писал, я просто не понимаю?

Желательно все, или часть кода от мэйна до if (k == 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
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
 
using namespace std;
 
int main(){
    
    FILE *f; char ch, p; int k=0;
    if((f=fopen("txt.txt","r"))==NULL)
    {
     printf("Fail ne otkruvaetsya.\n");
     getch();
     return 1;
     }
     while(!feof(f))
     {
      ch=getc(f);
      if((p >= 'a' && p <= 'z' || p >= 'A' && p <= 'Z')
      && (ch < 'a' || ch > 'z') && (ch < 'A' || ch > 'Z')) {
             k++;
      if (k == 9) {
          cout<<'<';  
         }
      if (k == 10) {
          cout<<'>';  
         }
      }
      cout<<ch;     
      p = ch;
      }
      cout<<endl<<endl<<k<<endl;
  system("Pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2014, 15:29     Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу
Посмотрите здесь:

C++ Определить и вывести на экран количество слов во введеной строке
C++ Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину.
Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину. C++
В параметрах командной строки передается список слов. Определить и вывести на экран слово максимальной длины. C++
C++ Определить количество слов в тексте
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5944 / 5549 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
17.03.2014, 15:43     Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу #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
#include <stdio.h>
#include <conio.h>
int main()
 {
    FILE *f; 
    char ch[100];
    int count=0;
    if((f=fopen("txt.txt","r"))==NULL)
    {
           printf("Fail ne otkruvaetsya.\n");
           getch();
           return 1;
     }
     while(!feof(f))
     {
         fscanf(f,"%s",ch);// ввод очередного слова
          count++;  // считаем слова
         if (count == 10) 
               printf("10-е слово:%s",ch);
     }  
     printf("Всего в файле %d слов\n",count);
     getch();
     return 0;
}
Замечание: старайтесь не смешивать в одной программе методы потокового ввода-вывода С++ и функции из stdio.h
dimoncheg
 Аватар для dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
17.03.2014, 16:06  [ТС]     Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу #3
Добавлено через 49 секунд
zss, Огромное спасибо!

Добавлено через 13 минут
zss, можно вопрос? В вашей программе у меня выдает ошибку:

16 24 C:\Users\Ïîëüçîâàòåëü\Desktop\Ëþáèìûé óíèâåð\C++\6\6.cpp [Error] cannot convert 'const char*' to 'FILE* {aka _iobuf*}' for argument '1' to 'int fscanf(FILE*, const char*, ...)'

в чем тут дело?
zss
Модератор
Эксперт С++
 Аватар для zss
5944 / 5549 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
17.03.2014, 16:25     Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Пардон, первый параметр - дескриптор файла
C++
1
 fscanf(f,"%s",ch);// ввод очередного слова
dimoncheg
 Аватар для dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
21.03.2014, 18:25  [ТС]     Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу #5
zss, здравствуйте, еще раз. Не могли бы вы объяснить эту функцию:

C++
1
2
3
4
5
6
{
         fscanf(f,"%s",ch);// ввод очередного слова
          count++;  // считаем слова
         if (count == 10) 
               printf("10-е слово:%s",ch);
     }
Не понятен прицип вычисления. Заранее спасибо. Даже мой преподаватель по программированию не понял, как это происходит, вычисление. Либо сказал так, чтобы я помучился сам.
zss
Модератор
Эксперт С++
 Аватар для zss
5944 / 5549 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
21.03.2014, 18:45     Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу #6
Так вроде все прокомментировано
fscanf(f,"%s",ch) - считывает ОДНО слово без пробельных символов.
count++ - Их считает.
10-е слово выводим
dimoncheg
 Аватар для dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
21.03.2014, 19:24  [ТС]     Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу #7
zss, ну это ладно. Тут я так понимаю в скобках (fid, format, size)? т.е fid – указатель на файл; format – формат чтения (записи) данных; size – максимальное число считываемых данных? А как получается, что он пробелы в учет не берет? Это функцией уже заложено?
zss
Модератор
Эксперт С++
 Аватар для zss
5944 / 5549 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
21.03.2014, 19:43     Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу #8
Цитата Сообщение от dimoncheg Посмотреть сообщение
Это функцией уже заложено?
Да, заложено!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2014, 16:31     Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу
Еще ссылки по теме:

Определить количество слов в тексте C++
Определить количество слов в заданном тексте и количество символов в каждом слове C++
Определить количество слов в тексте, и вывести слова, которые по длине меньше заданного числа C++

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

Или воспользуйтесь поиском по форуму:
dimoncheg
 Аватар для dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
30.03.2014, 16:31  [ТС]     Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу #9
Подскажите пожалуйста, как эту функцию сделать методом прямого выбора? Нельзя мне через fscanf
Yandex
Объявления
30.03.2014, 16:31     Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу
Ответ Создать тему
Опции темы

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