Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2016, 17:43   #1
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию Ввести строку, вывести только слова, заканчивающиеся на гласную букву.(Программа на си)

Ввести строку, вывести только слова, заканчивающиеся на гласную букву.
Напишите, пожалуйста, с комментарием
Кристина1998 вне форума Ответить с цитированием
Старый 07.11.2016, 18:39   #2
Zams
Пользователь
 
Аватар для Zams
 
Регистрация: 25.10.2016
Сообщений: 15
По умолчанию

Код:
#include <stdio.h>
#include <string.h>
 
#define del " ,.?!;"
#define n 256
#define _n 13
 
int main()
{
    char str[n], gol[_n] = "AaEeIiOoUuYy";//Это гласные буквы латинского алфавита, а строку вы вводите ручками
    printf("Enter string: \n\t-> ");
    gets(str);
 
    printf("\nWords: \n\t-> ");
    for(char *p = strtok(str, del); p; p = strtok(NULL, del))//Разделяем строку на слова при помощи функции strtok()
    {
        for(int i = 0; i < _n; ++i)
            if(p[strlen(p) - 1] == gol[i])//Если последня буква слова из строки гласная...
                printf("%s ", p);//...выводим это слово на экран
    }
    return 0;
}
Zams вне форума Ответить с цитированием
Старый 07.11.2016, 18:41   #3
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию

Мне нельзя использовать функцию strtok(), если и можно то ее расписать надо
Что в этой ситуации делать?
Кристина1998 вне форума Ответить с цитированием
Старый 07.11.2016, 18:42   #4
Zams
Пользователь
 
Аватар для Zams
 
Регистрация: 25.10.2016
Сообщений: 15
По умолчанию

В такой ситуации надо писать нормально условия задания в первом сообщении.
Zams вне форума Ответить с цитированием
Старый 07.11.2016, 18:42   #5
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию

Алгоритм: for-бегает по строке
1.пропустить все пробелы , пока str[i]==пробел -двигаем индекс
индекс-начало слова
2.пока str[i]!=пробелу или str[i]!=\0
индекс-конец слова
3. пробежали по строке и сравниваем конец слова с гласными
3.1если гласная , то вводим
По такому алгоритму это сделать можно?
Кристина1998 вне форума Ответить с цитированием
Старый 07.11.2016, 19:00   #6
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию

#include <stdio.h>


int main()
{
//Объявляем массив символов и считываем его
char stroka[255];
printf("Enter: ");
gets(stroka);

//Находим количество символов в строке
int N=0, i=0;
while(stroka[i]!='\0')
{
i++;
N++;
}

//Проходим по строке. Если найдена гласная буква, то смотрим, где она распологается. В зависимости от этого, ищем целиком слово и выводим его, или нет.
int i, j, k;
for(i=0; i<N; i++)
{
if(stroka[i]=='A' || stroka[i]=='a' || stroka[i]=='O' || stroka[i]=='o' || stroka[i]=='E' || stroka[i]=='e' || stroka[i]=='I' || stroka[i]=='i' || stroka[i]=='U' || stroka[i]=='u')
{
if(i!=N-1)
{
if(stroka[i+1]==' ')
{
j = i;
while(j)
{
if(stroka[j] == ' ') break;
j--;
}
if(j==0)
{
for(k=j; k<i+1; k++)
{
printf("%c", stroka[k]);
}
printf(" ");
}
else
{
for(k=j+1; k<i+1; k++)
{
printf("%c", stroka[k]);
}
printf(" ");
}
}
}
else
{
j = i;
while(j)
{
if(stroka[j] == ' ') break;
j--;
}
if(j==0)
{
for(k=j; k<i+1; k++)
{
printf("%c", stroka[k]);
}
printf(" ");
}
else
{
for(k=j+1; k<i+1; k++)
{
printf("%c", stroka[k]);
}
printf(" ");
}
}
}
}

return 0;
}
Кристина1998 вне форума Ответить с цитированием
Старый 07.11.2016, 19:01   #7
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию

Прога работает, но одну букву не выводит
Кристина1998 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввести строку. Вывести только различные встречающиеся отрицательные действительные числа.(программа на си) Кристина1998 Помощь студентам 0 07.11.2016 17:38
Java. Найти в тексте слова, заканчивающиеся на заданную букву. Помогите, написать комментарии к программе lenulichkal Помощь студентам 1 05.12.2014 08:36
(turbo pascal) Ввести строку. Определить количество слов, содержащих букву Z lexa_soad Помощь студентам 0 04.12.2011 19:31
определить количество слов в тексте, оканчивающихся на гласную букву Lellya Помощь студентам 0 10.04.2011 23:15
Вывести все слова входного потока, заканчивающиеся заданной последовательностью символов fiaftw Общие вопросы C/C++ 2 03.02.2009 00:44