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

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

Войти
Регистрация
Восстановить пароль
 
edw1n
7 / 7 / 1
Регистрация: 12.11.2012
Сообщений: 114
#1

Окончание слова - xyz (СИ) - C++

22.04.2013, 17:07. Просмотров 1057. Ответов 4
Метки нет (Все метки)

Приветствую.
Нужно сделать программу, которая бы выводила на экран слова, окончания которых - xyz.
Программу нужно сделать при помощи массива строк, то есть вот инициализация и вывод на экран:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <string.h>
int main (void)
{ int n, i, j;
  printf ("Enter n\n");
  scanf ("%d", &n);
  char str[n+1][11];
  printf ("Enter words\n");
  for (i=0; i<n+1; i++)
      gets (str[i]);
  for (i=0; i<n+1; i++)
      puts (str[i]);
system ("pause");
return 0;
}
Есть идея отталкиваться от пробела, то есть мы начинаем прогонять каждое слово, и как только мы попадаем на пробел, то циклом if сравниваем предыдущий символ с z, ещё на один меньше с y и ещё на один меньше с x, если условие истинно, то выводим слово на экран. Но для этой реализации нужно знать длину каждого слова, и да, длинна каждого слова колеблется от 3 до 11 символов, а нужно знать точную длину каждого слова.
Есть идеи ? Заранее благодарен.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 17:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Окончание слова - xyz (СИ) (C++):

Вывести на экран слова с суфиксами XYZ - C++
Дано массив слов от 3 до 10 малых латинских букв. Вывести на экран слова, последние буквы которых - xyz. Приблизительно представляю...

В зависимости от введенного числа изменить окончание у слова - C++
Программировать начал только 2 недели назад, поэтому опыта очень мало. Может кто поможет. Нужно написать программу, которая в...

Подобрать окончание слова в зависимости от числительного, его описывающего - C++
Для натурального числа k напечатать фразу &quot;мы нашли k грибов в лесу&quot;, согласовав окончание слова &quot;гриб&quot; с числом k.

Для натурального числа k напечатать фразу «мы нашли k грибов в лесу», согласовав окончание слова «гриб» с числом k - C++
Для натурального числа k напечатать фразу «мы нашли k грибов в лесу», согласовав окончание слова «гриб» с числом k .

Дан текстовый файл. Заменить окончание ing каждого слова, встречающегося в заданном предложении на ED и сохранить результат в новый файл. - C++
Всем вечер добрый. Хотелось бы, чтоб кто-нибудь помог с прогой. Её текст ниже: Дан текстовый файл. Заменить окончание ing каждого...

Пользователь вводит вещественные числа x,y,z. Вычислить max(x+y+z, xyz) - C++
Составить ДВЕ программы на языке C++ для решения одного из вариантов заданий с применением ОПЕРАТОРА if и с применением условий операции. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kranxx
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 18
22.04.2013, 17:31 #2
Почитай про библиотеку regex и регулярные выражения.
0
edw1n
7 / 7 / 1
Регистрация: 12.11.2012
Сообщений: 114
22.04.2013, 17:51  [ТС] #3
Спасибо. Почитал. Узнал теперь что можно в любую точку слова попасть и сравнивать, но как мне это сделать это для каждого слова своего массива слов ?
0
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
22.04.2013, 18:31 #4
Вроде бы работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstring>
 
int main() {
    const char size = 5;
    int count;
    std::cin >> count;
    char buff[size][200];
    
    for( int i = 0; i < ( count > size ? size : count ); i++, count++ )
        std::cin >> buff[i];
        
    for( int i = 0; i < count; i++ ) {
        char *tmp = buff[i];
        tmp = tmp + strlen( buff[i] ) - 3;
        if( !strcmp( tmp, "xyz" ))
            std::cout << buff[i] << std::endl;
    }
    return 0;
}
0
edw1n
7 / 7 / 1
Регистрация: 12.11.2012
Сообщений: 114
22.04.2013, 18:47  [ТС] #5
Цитата Сообщение от coloc Посмотреть сообщение
Вроде бы работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstring>
 
int main() {
    const char size = 5;
    int count;
    std::cin >> count;
    char buff[size][200];
    
    for( int i = 0; i < ( count > size ? size : count ); i++, count++ )
        std::cin >> buff[i];
        
    for( int i = 0; i < count; i++ ) {
        char *tmp = buff[i];
        tmp = tmp + strlen( buff[i] ) - 3;
        if( !strcmp( tmp, "xyz" ))
            std::cout << buff[i] << std::endl;
    }
    return 0;
}
Спасибо. Пытаюсь разобраться.
Я так понимаю это ввод наших слов ?

C
1
2
for( int i = 0; i < ( count > size ? size : count ); i++, count++ )
        std::cin >> buff[i];
Можно его как-нибудь проще записать ?
И ещё, что делает переменная count ? Зачем её нужно вводить в начале работы программы ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2013, 18:47
Привет! Вот еще темы с ответами:

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

Окончание W и A в функциях - C++
Привет. Объясните пожалуйста допустим: GetCurrentDirectoryW (Unicode) and GetCurrentDirectoryA (ANSI) - это понятно. А обычная...

Окончание ввода - C++
Здравствуйте. Возникла проблема как окончить заполнение вектора по нажатию определенной клавиши? (В данном случае &quot;Enter&quot;. do { ...

Окончание связанного списка - C++
Скажите, пожалуйста, как в моём случае можно поступить: выйти из цикла, если нажатием Enter ничего не вводится и выдавать ошибку, если...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.04.2013, 18:47
Ответ Создать тему
Опции темы

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