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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 50, средняя оценка - 4.92
Zend
-7 / 0 / 0
Регистрация: 01.08.2011
Сообщений: 9
#1

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

02.08.2011, 06:53. Просмотров 6582. Ответов 20
Метки нет (Все метки)

напишите пожалуйста в С++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2011, 06:53     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы.
Посмотрите здесь:

C++ написать программу, которая считывает текст из файла и выводит на экран
C++ Написать программу,которая считывает текст из файла и выводит его на экран,меняя местами каждые два соседних слова.
C++ Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова
Написать программу,которая считывает текст с клавиатуры и выводит на экран слова начинающиеся с гласных букв C++
Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова C++
C++ Написать программу, которая считывает текст из файла и выводит на экран сначала предложения, начинающиеся с однобуквенных слов, а затем все остальные
Написать программу, которая считывает английский текст и выводит на экран слова, начинающиеся с гласных букв. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
02.08.2011, 12:13     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #2
Это очень просто, только нет резона все это делать.

Добавлено через 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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define GLAS "AEIOUYaeiouy"  
 
 
int PrintWords(char *fileName)
{
   FILE *f;
   char s[500];
   if ((f = fopen(fileName, "rt")) == NULL)
      return 1;
   while (fscanf(f, "%s", s) != EOF)
   {
      if (strchr(GLAS, s[0]) && strchr(GLAS, s[strlen(s)-1]))
         puts(s);
   }
   fclose(f);
   return 0;
}
 
int main()
{
   char *fileName = "c:\\a.txt";
   PrintWords(fileName);
   getchar();
   return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
02.08.2011, 13:49     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #3
Вот пример "оптимизации"
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
 
bool is_vowel(char ch)
{
    bool ret = false;
    ch = toupper(ch);
    char vowel[] = "AEIOUY";
    int sLen = strlen(vowel);
    for(int i = 0;i < sLen; i++)
    {
        if(ch == vowel[i])
            break;
    }
    if(i < sLen)
        ret = true;
    return ret;
}
 
int main()
{
    int Len = 0;
    FILE * f;
    char fPath[256], *pch, *str;
    do
    {
        printf("Enter FileName with text : ");
        scanf("%s",fPath);
        if(!(f = fopen(fPath,"rb+")))
            printf("ERROR ACCESS %s\r\n",fPath);
        else
        {
            fseek(f,0,SEEK_END);
            Len = ftell(f);
            fseek(f,0,SEEK_SET);
 
            str = new char[Len];
            if(!str)
            {
                printf("ERROR ALLOC MEMORY\r\n");
                return 1;
            }
            else
                fread(str,1,Len,f);
                str[Len] = '\0';
            fclose(f);
 
            pch = strtok(str," ,.!?\r\n");
            while(pch)
            {
                if(is_vowel(pch[0]) || is_vowel(pch[strlen(pch) - 1]))
                    printf("%s\r\n",pch);
                pch = strtok(NULL," ,.!?\r\n");
            }
        }
        printf("[Y/N] Y - scan new file\r\n");
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
Миниатюры
Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы.  
Вложения
Тип файла: txt text.txt (4.3 Кб, 150 просмотров)
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
02.08.2011, 13:51     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #4
-=ЮрА=-, а в чём оптимизация?
-=ЮрА=-
Заблокирован
Автор FAQ
02.08.2011, 13:54     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #5
Пример Ольги недочитал входной файл text.txt который привёл в качестве примера...

Добавлено через 1 минуту
Цитата Сообщение от grizlik78 Посмотреть сообщение
-=ЮрА=-, а в чём оптимизация?
В том что мой алгоритм работает для любого текстового файла. Оптимизации нет, есть другой алгоритм
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
02.08.2011, 13:57     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #6
"Наполовину" работает. Наверное задание не дочитал.
-=ЮрА=-
Заблокирован
Автор FAQ
02.08.2011, 13:58     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #7
оканчивающиеся буквы не доглядел, момент...
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
02.08.2011, 13:58     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #8
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Пример Ольги недочитал входной файл text.txt который привёл в качестве примера...

Добавлено через 1 минуту

В том что мой алгоритм работает для любого текстового файла. Оптимизации нет, есть другой алгоритм
А можно выложить этот файл text.txt для теста, тогда скажу в чем дело. У меня все работает.
И почему вместо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool is_vowel(char ch)
{
        bool ret = false;
        ch = toupper(ch);
        char vowel[] = "AEIOUY";
        int sLen = strlen(vowel);
        for(int i = 0;i < sLen; i++)
        {
                if(ch == vowel[i])
                        break;
        }
        if(i < sLen)
                ret = true;
        return ret;
}
просто не написать if (strchr("AEIOUY", ch))
-=ЮрА=-
Заблокирован
Автор FAQ
02.08.2011, 14:04     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #9
Цитата Сообщение от grizlik78 Посмотреть сообщение
И в шутку не дописал. Наверное задание не дочитал.
Уже исправил код в посте

Добавлено через 47 секунд
Цитата Сообщение от Olga_ Посмотреть сообщение
А можно выложить этот файл text.txt для теста, тогда скажу в чем дело. У меня все работает.
Посмотри вложения в моем посте...

Добавлено через 2 минуты
Последними словами на выводе должны быть
A
collapse
in
relativity
emission
of
and
in

У тебя программа выводит

Once
escape
a
energy
a
are
a
inside
a
a
a
a
A
, даже последнего слова in нет
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
02.08.2011, 14:10     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #10

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
, даже последнего слова in нет
Смешно. После того, как "дочитал" задание



Добавлено через 2 минуты
Хотя задание действительно можно прочитать двояко

Добавлено через 2 минуты
Но по-моему имелись в виду всё-таки те слова, которые одновременно и начинаются и заканчиваются гласными. Иначе правильнее было бы слово "слова" использовать в задании дважды: слова начинающиеся и слова заканчивающиеся гласными буквами.
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
02.08.2011, 14:16     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #11
Так в чем же ошибка? Во первых однобуквенные слова - тоже слова, а во-вторых, слово in не должно по заданию выводится. Сказано же "...начинающиеся и оканчивающиеся на гласные буквы"


Вот более оптимальный вариант. Но могу еще оптимизировать.

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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define GLAS "AEIOUYaeiouy"  
#define DELIMITERS  " .,:;\n\t"
 
int ReadTextFile(char *fileName)
{
   FILE *f;
   char line[500], *word;
   if ((f = fopen(fileName, "rt")) == NULL)
      return 1;
   while (fgets(line, 500, f) != NULL)
   {
      word = strtok(line, DELIMITERS);
      while (word != NULL)
      {
         if (strchr(GLAS, word[0]) && strchr(GLAS, word[strlen(word)-1]))
            puts(word);
         word = strtok(NULL, DELIMITERS);
      }
   }
   fclose(f);
   return 0;
}
 
 
int main()
{
   char *fileName = "c:\\a.txt";
   ReadTextFile(fileName);
   return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
02.08.2011, 14:29     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #12
Цитата Сообщение от grizlik78 Посмотреть сообщение
Но по-моему имелись в виду всё-таки те слова, которые одновременно и начинаются и заканчиваются гласными. Иначе правильнее было бы слово "слова" использовать в задании дважды: слова начинающиеся и слова заканчивающиеся гласными буквами.
Всё с водится к реализации условия в строке 54 моего кода
Вот возможные варианты вывода, а дальше уже как кому нужно
C++
1
2
3
4
if(is_vowel(pch[0]) ) - выводятся слова только начинающиеся на гласную
if(is_vowel(pch[strlen(pch) - 1])) - выводятся слова только заканчивающиеся на гласную
if(is_vowel(pch[0]) || is_vowel(pch[strlen(pch) - 1])) - слова начинающиеся или заканчивающиеся на гласную
if(is_vowel(pch[0]) && is_vowel(pch[strlen(pch) - 1])) - слова ожновременно начинающиеся и оканчивающиеся на гласную
Добавлено через 8 минут
Цитата Сообщение от Olga_ Посмотреть сообщение
Так в чем же ошибка? Во первых однобуквенные слова - тоже слова, а во-вторых, слово in не должно по заданию выводится. Сказано же "...начинающиеся и оканчивающиеся на гласные буквы"
В том что твой код не выводит ещё 4 слова, сравни работу своего алгоритма с моим, если тебе это сложно то вод вывод консолей с моего и твоего приложения
Мой
Enter FileName with text : text.txt
вывод
a
influence
any
opposite
a
above
a
once
usually
universe
eventually
a
example
a
a
a
a
a
also
energy
are
undergo
a
a
a
a
a
are
a
envelope
a
a
a
accrete
a
undergo
a
Ia
are
above
a
any
Once
escape
a
energy
a
are
a
inside
a
a
a
a
A

[Y/N] Y - scan new file
Твой
a
influence
any
opposite
a
above
a
once
usually
eventually
a
a
a
a
a
a
also
energy
are
undergo
a
a
a
a
a
are
a
envelope
a
a
a
accrete
a
undergo
a
Ia
are
above
a
any
Once
escape
a
energy
a
are
a
inside
a
a
a
a
A


отличие 4 слова, хочешь проверь сам...

Добавлено через 31 секунду
В строке 54 использовал такое условие
C++
1
if(is_vowel(pch[0]) && is_vowel(pch[strlen(pch) - 1]))
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
02.08.2011, 14:31     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #13
Все элементарно, код в посте 2 учитывает только такие разделители: \0, \n, \t, поэтому и говорилось, что это простой вариант.
В посте 11 задание четко выполнено, причем код не нагромажден.
-=ЮрА=-
Заблокирован
Автор FAQ
02.08.2011, 15:00     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #14
Цитата Сообщение от Olga_ Посмотреть сообщение
Все элементарно, код в посте 2 учитывает только такие разделители: \0, \n, \t, поэтому и говорилось, что это простой вариант.
В посте 11 задание четко выполнено, причем код не нагромажден.
Задание не выполнено т.к. программа не работает с предложенным txt-шником!
Вот тебе сравнительная характеристика вывода консолей в xls (см 10,11 строки), что касается кода, я специально вобью сейчас в текстовик слово из 501 буквы и твой fscanf если не опрокинется то недочитает слово...
Вложения
Тип файла: xls Сравнительный анализ.xls (14.5 Кб, 18 просмотров)
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
02.08.2011, 15:15     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #15
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Задание не выполнено т.к. программа не работает с предложенным txt-шником!
Вот тебе сравнительная характеристика вывода консолей в xls (см 10,11 строки), что касается кода, я специально вобью сейчас в текстовик слово из 501 буквы и твой fscanf если не опрокинется то недочитает слово...
Кто-то считать плохо умеет. Выводит ровно 56 слов (новый код из 11 поста). А про 500 это ты зря, это пример, можно динамический массив сделать, можно всякие случае рассмотреть, что ты как маленький.
-=ЮрА=-
Заблокирован
Автор FAQ
02.08.2011, 15:26     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #16
Цитата Сообщение от Olga_ Посмотреть сообщение
while (fgets(line, 500, f) != NULL)
* *{
* * * word = strtok(line, DELIMITERS);
* * * while (word != NULL)
* * * {
* * * * *if (strchr(GLAS, word[0]) && strchr(GLAS, word[strlen(word)-1]))
* * * * * * puts(word);
* * * * *word = strtok(NULL, DELIMITERS);
* * * }
* *}
Код уже разделяет строку на токены, поэтому использован уже мой алгоритм, я не маленький, я показал как нужно...
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
02.08.2011, 15:41     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #17
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Код уже разделяет строку на токены, поэтому использован уже мой алгоритм, я не маленький, я показал как нужно...
Да, про strtok трудно мне было догадаться, я тут плагиатом занимаюсь, весело... Я могу функцию прописать, которая быстрее strtok работает. strtok это просто для примера. А про 'как маленький', извиняюсь, если обидела.
Mиxaил
531 / 436 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
02.08.2011, 15:44     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #18
Zend, закрой тему во фрилансе!
easybudda
Эксперт С++
9452 / 5465 / 926
Регистрация: 25.07.2009
Сообщений: 10,490
02.08.2011, 20:19     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #19
Было уже много раз... Вот ещё кусок быдлокода...
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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
 
#define VOWELS "AEIOUYaeiouy"
 
int goodword(const char * w) { return ( w && *w && strchr(VOWELS, *w) && strchr(VOWELS, *(w + strlen(w) - 1)) ); }
 
char * clearword(char * w){
    char * p;
    
    for ( p = w; *p; ++p )
        ;
    while ( p > w ){
        if ( ispunct(*--p) )
            *p = '\0';
        else
            break;
    }
    
    return w;
}
 
#define MAX_WORD 256 /* Если напишите слово длиннее - просто попробуйте его вслух прочитать */
#define WORD_MASK "%255s"
#define PROG_NAME argv[0]
#define INPUT_FILE argv[1]
 
int main(int argc, char ** argv){
    char buf[MAX_WORD];
    FILE * f;
    int cnt;
    
    if ( argc < 2 ){
        fprintf(stderr, "Usage: %s input_file\n", PROG_NAME);
        exit(1);
    }
    
    if ( ! ( f = fopen(INPUT_FILE, "r") ) ){
        fprintf(stderr, "%s: can't open input file!\n", PROG_NAME);
        exit(1);
    }
    
    cnt = 0;
    while ( fscanf(f, WORD_MASK, buf) == 1 )
        if ( goodword(clearword(buf)) )
            printf("%3d: %s\n", ++cnt, buf);
        
    if ( ferror(f) || fclose(f) ){
        fprintf(stderr, "%s: error while reading input file!\n", PROG_NAME);
        exit(1);
    }
    
    exit(0);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2011, 21:44     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы.
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Форумчанин
Эксперт С++
4468 / 2830 / 224
Регистрация: 12.12.2009
Сообщений: 7,199
Записей в блоге: 1
Завершенные тесты: 1
02.08.2011, 21:44     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. #20
Цитата Сообщение от easybudda Посмотреть сообщение
Вот ещё кусок быдлокода...
И еще
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
#include<iostream>
#include<fstream>
#include<string>
#include<sstream>
 
 
struct string:public std::basic_string<char, std::char_traits<char>, std::allocator<char> >{
    operator bool(){
        std::string vowel("AEIOUYaeiouy");
        return _Mysize!=0 &&  //скорее всего это будет работать только в MSVS
            vowel.find(_Myptr()[0])!=std::string::npos &&
            vowel.find(*(_Myptr() + this->_Mysize-1))!=std::string::npos;
 
    }
};
 
 
int main(){
    std::ifstream f("ttext.txt");
    if(f)
        std::cin.rdbuf(f.rdbuf());
    else 
        std::cerr<<"Can't open file!\n\nEnter string: ";
    string str;
    std::istringstream is;
    while(getline(std::cin,str) && str!=""){
    is.str(str);
    while(is>>str)
        if(str)
            std::cout<<str<<std::endl;
    is.clear();
    }
    return 0;
}
Yandex
Объявления
02.08.2011, 21:44     Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы.
Ответ Создать тему
Опции темы

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