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

вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.71
ZverBoy
0 / 0 / 0
Регистрация: 15.02.2010
Сообщений: 6
15.02.2010, 13:30     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. #1
Здравствуйте. Прошу пожалуйста мне помочь с написанием этой программы. Всем за ранее огромное спасибо! Вы спасёте мне жизнь. =)

Условие:

Ввод данных осуществляется из файла с расширением .DAT.
Использовать ТОЛЬКО библиотечные функции ввода/вывода СИМВОЛА.
Исходный текст и результат работы программы выводятся на экран.
Нельзя использовать функции библиотеки в файле string.h
Нельзя использовать библиотечные функции работы со строками(словами)!
Обработка текста должна вестись посимвольно!


Задание:

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

Написать программу, которая:
1) Выводит текст на экран дисплея;
2) определяет количество слов в тексте, у которых первый и последний символы совпадают.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2010, 13:30     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают.
Посмотрите здесь:

C++ Найти количество слов, у которых первый и последний символы совпадают между собой.
Найти количество слов, у которых первый и последний символы совпадают между собой C++
C++ Определить количество слов текста, в которых первый и последний символы совпадают
Дана строка символов. Определить количество слов, у которых первый и последний символы совпадают между собой. C++
Дан текст, найти количество слов и количество слов, у которых первый и последний символ совпадают C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yurii_74
paladin
 Аватар для Yurii_74
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
15.02.2010, 13:51     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. #2
Посимвольно читаем файл. Находим букву из алфавита, заносим ее в переменную, продолжаем посимвольное чтение с сохраненимем еще двух значений - текущего и предыдущего символов. Если текущий символ является разделителем, то сравниваем предыдущий с начальным. Если равны, то увеличиваем значение счетчика. Снова ищем символ из алфавита. Повторяем дот тех пор, пока не кончится файл.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
15.02.2010, 13:53     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. #3
Какой язык программирования?
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
15.02.2010, 13:58     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. #4
ZverBoy:
Какой язык это важно.
Так как люди могут сделать c ifstream(C++), без fopen языка(C), и других вещей языка C.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
15.02.2010, 14:40     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. #5
Ладно вот тебе сишный вариант
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 <stdio.h>
#include <conio.h>
 
int main()
{
   FILE *fstream;
   char first_ch = ' ', last_ch = '\0', tmp_ch;
   int count = 0;
 
   fstream = fopen("file.dat", "r");
   if (!fstream)
   {
      printf("File error\n");
      getch();
      return 1;
   }
   printf("Soderjimoe faila\n");
   printf("-------------------------------\n");
   while ((tmp_ch = fgetc(fstream)) != EOF)
   {
      printf("%c", tmp_ch);
      if (first_ch == ' ' || first_ch == '\n')
         first_ch = tmp_ch;
      else
      {
         if (tmp_ch == ' ' || tmp_ch == '\n')
         {
            if (first_ch == last_ch)
            {
               count++;
            }
            first_ch = tmp_ch;
         }
         else if (last_ch == ' ' || last_ch == '\n')
         {
            first_ch = tmp_ch;
         }
         else
            last_ch = tmp_ch;
      }
   }
   printf("-------------------------------\n");
   printf("Kolichestvo slov s odinakovymi pervoi i poslednei bukvami %i\n", count);
   getch();
   return 0;
}
ZverBoy
0 / 0 / 0
Регистрация: 15.02.2010
Сообщений: 6
16.02.2010, 00:03  [ТС]     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. #6
Простите, что сразу не ответил... очень не удобно. Язык программирования С++. Программа написанная вами у меня к сожалению не работает... пишет: File error.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
16.02.2010, 00:26     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. #7
Чтобы ошибка пропала, надо создать файл file.dat, записать в него текст, и сохранить в папке с программой.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
16.02.2010, 01:37     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. #8
Цитата Сообщение от ZverBoy Посмотреть сообщение
Использовать ТОЛЬКО библиотечные функции ввода/вывода СИМВОЛА.
Исходный текст и результат работы программы выводятся на экран.
Нельзя использовать функции библиотеки в файле string.h
Нельзя использовать библиотечные функции работы со строками(словами)!
Обработка текста должна вестись посимвольно!
Мазохизм какой-то! Точно не подойдёт, но может ещё кому пригодится:
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
#include <iostream>
#include <fstream>
#include <sstream>
#include <list>
#include <iterator>
#include <string>
 
/*
*   Написать программу, которая:
*   1) Выводит текст на экран дисплея;
*   2) определяет количество слов в тексте, у которых первый и последний символы совпадают.
*/
 
int main(){
    std::string buf, tmp;
    std::list<std::string> words;
    std::ifstream fin("text.dat");
    if ( !fin.is_open() ){
        std::cerr << "Can't open input file!" << std::endl;
        return 1;
    }
    std::cout << std::endl << "File content:" << std::endl << std::endl;
    while ( std::getline(fin, buf) ){
        std::cout << buf << std::endl;
        std::istringstream ist(buf);
        while ( ist >> tmp ){
            std::string::size_type pos = tmp.find_last_not_of(".,!?:;");
            if ( pos == std::string::npos )
                continue;
            tmp.erase(pos + 1);
            if ( tmp.size() > 1 && *tmp.begin() == *tmp.rbegin() )
                words.push_back(tmp);
        }
    }
    fin.close();
    words.sort();
    words.unique();
    std::cout << std::endl << words.size() << " words with same first and last letter." << std::endl;
    std::copy(words.begin(), words.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    std::cout << std::endl;
    
    return 0;
}

text.dat
Код
This tutorial assumes no previous knowledge of scripting or programming, 
but progresses rapidly toward an intermediate/advanced level of instruction 
(...all the while sneaking in little snippets of UNIX wisdom and lore). 
It serves as a textbook, a manual for self-study, and a reference and source 
of knowledge on shell scripting techniques. The exercises and heavily-commented 
examples invite active reader participation, under the premise that the only 
way to really learn scripting is to write scripts.


вывод
Код
$ ./same_first_last_letter 
File content:

This tutorial assumes no previous knowledge of scripting or programming, 
but progresses rapidly toward an intermediate/advanced level of instruction 
(...all the while sneaking in little snippets of UNIX wisdom and lore). 
It serves as a textbook, a manual for self-study, and a reference and source 
of knowledge on shell scripting techniques. The exercises and heavily-commented 
examples invite active reader participation, under the premise that the only 
way to really learn scripting is to write scripts.

6 words with same first and last letter.
level
reader
scripts
serves
snippets
that
ZverBoy
0 / 0 / 0
Регистрация: 15.02.2010
Сообщений: 6
16.02.2010, 01:45  [ТС]     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. #9
Спасибо огромнейшее! Я вам благодарен. )
Olenj-Olenj
Сообщений: n/a
03.11.2010, 13:29     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. #10
Подскажите пожалуйста как переделать эту программу так, чтобы еще:
при нажатии произвольной клавиши, поочередно выделялось цветом каждое из слов текста в котором первый и последний символы совпадают

Добавлено через 2 минуты
Цитата Сообщение от kazak Посмотреть сообщение
Ладно вот тебе сишный вариант
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 <stdio.h>
#include <conio.h>
 
int main()
{
   FILE *fstream;
   char first_ch = ' ', last_ch = '\0', tmp_ch;
   int count = 0;
 
   fstream = fopen("file.dat", "r");
   if (!fstream)
   {
      printf("File error\n");
      getch();
      return 1;
   }
   printf("Soderjimoe faila\n");
   printf("-------------------------------\n");
   while ((tmp_ch = fgetc(fstream)) != EOF)
   {
      printf("%c", tmp_ch);
      if (first_ch == ' ' || first_ch == '\n')
         first_ch = tmp_ch;
      else
      {
         if (tmp_ch == ' ' || tmp_ch == '\n')
         {
            if (first_ch == last_ch)
            {
               count++;
            }
            first_ch = tmp_ch;
         }
         else if (last_ch == ' ' || last_ch == '\n')
         {
            first_ch = tmp_ch;
         }
         else
            last_ch = tmp_ch;
      }
   }
   printf("-------------------------------\n");
   printf("Kolichestvo slov s odinakovymi pervoi i poslednei bukvami %i\n", count);
   getch();
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2012, 23:35     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают.
Еще ссылки по теме:

C++ В созданном массиве строк, подсчитать в тексте количество слов, в которых нету цифр
Определить количество слов в тексте, у которых первый и последний символы совпадают между собой C++
Определить количество слов, у которых первый и последний символы совпадают C++

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

Или воспользуйтесь поиском по форуму:
Сергей_Малой
Сообщений: n/a
15.03.2012, 23:35     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. #11
Извините, что вмешиваюсь, но программа, написанная на Си, не совсем правильно работает, а я никак не могу понять почему, помогите разобраться, пожалуйста. Дело в том, что при вводе текста, если в последнем слове первый и последний символы совпадают, то почему-то количество таких слов не увеличивается, т.е. почему-то не учитывается последнее слово, почему так?
Yandex
Объявления
15.03.2012, 23:35     вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают.
Ответ Создать тему
Опции темы

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