Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
#1

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

17.03.2014, 15:29. Просмотров 836. Ответов 8
Метки нет (Все метки)

Добрый день, уважаемые форумчане. Дана задача:

С помощью текстового редактора Блокнот создать файл, содержащий текст, длина которого не превышает 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");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2014, 15:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить количество слов в тексте; вывести на экран десятое слово. Объяснить готовую программу (C++):

Оределить количество слов в строке и вывести на экран каждое нечетное слово - C++
Дана строка текста, в которой слова разделены запятыми и двоеточиями. Необходимо: а) оределить количество слов в строке и вывести на...

Определить количество слов в тексте, и вывести слова, которые по длине меньше заданного числа - C++
Помогите написать прогу... Не работает..;) /*Дан текст, в котором слова разделяются пробелами, * в конце стоит точка. Определить...

В параметрах командной строки передается список слов. Определить и вывести на экран слово максимальной длины. - C++
Необходимо разработать программу согласно варианту задания. Данные в программу передаются через параметры командной строки. ...

Определить и вывести на экран количество слов во введеной строке - C++
определить и вывести на экран количество слов во введеной строке

Определить количество слов в строке и вывести на экран слова строки в столбик - C++
Добрый вечер! Помогите разобраться: Исходное задание: Дана строка текста, в которой слова разделены символами # и пробелами. ...

Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину. - C++
Помогите сделать программу, нужно чтоб была хотя бы одна подпрограмма. Желательно на СИ. Подсчитать количество слов и определить и...

8
zss
Модератор
Эксперт С++
6569 / 6131 / 2021
Регистрация: 18.12.2011
Сообщений: 15,983
Завершенные тесты: 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
1
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*, ...)'

в чем тут дело?
0
zss
Модератор
Эксперт С++
6569 / 6131 / 2021
Регистрация: 18.12.2011
Сообщений: 15,983
Завершенные тесты: 1
17.03.2014, 16:25 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Пардон, первый параметр - дескриптор файла
C++
1
 fscanf(f,"%s",ch);// ввод очередного слова
1
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);
     }
Не понятен прицип вычисления. Заранее спасибо. Даже мой преподаватель по программированию не понял, как это происходит, вычисление. Либо сказал так, чтобы я помучился сам.
0
zss
Модератор
Эксперт С++
6569 / 6131 / 2021
Регистрация: 18.12.2011
Сообщений: 15,983
Завершенные тесты: 1
21.03.2014, 18:45 #6
Так вроде все прокомментировано
fscanf(f,"%s",ch) - считывает ОДНО слово без пробельных символов.
count++ - Их считает.
10-е слово выводим
1
dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
21.03.2014, 19:24  [ТС] #7
zss, ну это ладно. Тут я так понимаю в скобках (fid, format, size)? т.е fid – указатель на файл; format – формат чтения (записи) данных; size – максимальное число считываемых данных? А как получается, что он пробелы в учет не берет? Это функцией уже заложено?
0
zss
Модератор
Эксперт С++
6569 / 6131 / 2021
Регистрация: 18.12.2011
Сообщений: 15,983
Завершенные тесты: 1
21.03.2014, 19:43 #8
Цитата Сообщение от dimoncheg Посмотреть сообщение
Это функцией уже заложено?
Да, заложено!
1
dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
30.03.2014, 16:31  [ТС] #9
Подскажите пожалуйста, как эту функцию сделать методом прямого выбора? Нельзя мне через fscanf
0
30.03.2014, 16:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2014, 16:31
Привет! Вот еще темы с ответами:

Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину. - C++
Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину. Помогите...

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

Определить количество слов в тексте - C++
Разработать алгоритм и программу для определения количества слов в тексте

Определить количество слов в тексте - C++
Определить количество слов в тексте. Слова в тексте могут быть разделены только с помощью одного символа пробела.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.