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

/*Введём текст с заканчивающийся точкой , вывести все слова у которых первая и последняя буквы одинаковы.*/h - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
fazanaka
Горе студент
 Аватар для fazanaka
37 / 37 / 1
Регистрация: 27.01.2010
Сообщений: 270
28.03.2010, 17:29     /*Введём текст с заканчивающийся точкой , вывести все слова у которых первая и последняя буквы одинаковы.*/h #1
Программа работает а результата нет, или я туплю...
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
/*Введём текст с заканчивающийся точкой , вывести все слова у которых первая и последняя буквы одинаковы.*/
#include <iostream.h>
#include <string.h>
char main()
{
  char a[200],k[50],x,y;
  int t,j,i=0;
  cin.get(a,200,'.');
  while (a[i]!='.')//пока не равно точке
  {
    for (j=0;a[j]==' ';j++)/*откроем цикл до первого пробела, чтобы вычеслить длинну слова и сравнить первую и последнюю буквы.*/
    {
      if (a[j]==' ')
      {
        strncpy(k,a,j);
      }
    }
    x=k[0];//присваиваем значение
    y=k[j];
    if (x==y)//сравниваем
    {
      for (t=0;t==j;t++)
      {
        cout << k[t];//распечатываем
      }
    }
    i++;
  }
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2010, 17:29     /*Введём текст с заканчивающийся точкой , вывести все слова у которых первая и последняя буквы одинаковы.*/h
Посмотрите здесь:

Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы. C++
Вывести на печать все слова, у которых есть двойные буквы C++
C++ Слова, в которых встречается первая и последняя буквы предыдущего слова
C++ Вывести на экран количество слов где первая и последняя буквы одинаковы (не понимаю где ошибка)
Что здесь неправильно? (Вывести все слова строки в которых первая буква входит в него ещё раз) C++
Напечатать слова у которых первая и последняя буква совпадают C++
С++ Дана строка содержащая текст заканчивающийся точкой. Вывести на экран слова содержащие 3 буквы C++
C++ Вывести слова в строке ДО слова, у которого одинаковые первая и последняя буквы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
28.03.2010, 18:37     /*Введём текст с заканчивающийся точкой , вывести все слова у которых первая и последняя буквы одинаковы.*/h #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
25
26
#include <iostream>
#include <string>
 /*Введём текст с заканчивающийся точкой , вывести все слова у которых первая и последняя буквы одинаковы.*/
 
int main()
{
    std::string str;
    std::string punctuation("!,?:;\'\"()-%#$^*[]{}\\|/");
    size_t index=0;
    //Чтение строки, пока не встретится символ-разделитель '.'
    std::getline(std::cin, str, '.');
    //Удаление знаков препинания из исходной строки
    while((index=str.find_first_of(punctuation, index))!=std::string::npos)
        str[index++]=' ';
    while((index=str.find(' '))!=std::string::npos)//Поиск индекса первого встретившегося пробела
    {
        std::string temp(str.begin(), str.begin()+index);//Выделение слова
        str.erase(0, index+1);//Удаление слова с пробелом из исходной строки
        if(temp.empty())//Если выделилось пустое слово (встретилось два пробела подряд)
            continue;//Переход на следующую итерацию цикла
        if(*temp.begin()==*temp.rbegin())//Проверка, равен ли первый символ слова последнему
            std::cout << temp << std::endl;
    }
    system("pause");
    return 0;
}
Добавлено через 22 минуты
Вот переделанный твой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
 
int main()
{
    char a[200], *k=a, *l=a;
    //Символ '.' - разделитель, и от НЕ считывается из входного потока
    std::cin.get(a,200,'.');
    while(*k)//Цикл нужно выполнять, пока не встретится нуль-терминатор
    {
        while((*l++!=' ')&&(*l))//Пока не встретим пробел или нуль-терминатор, выполняется пустой цикл
            ;
        if(*k==*(l-2))//Если первый символ в слове равен последнему
        {
            *(l-1)='\0';
            std::cout << k << std::endl;
        }
        k=l;
    }   
    system("pause");
    return 0;
}
fazanaka
Горе студент
 Аватар для fazanaka
37 / 37 / 1
Регистрация: 27.01.2010
Сообщений: 270
30.03.2010, 17:08  [ТС]     /*Введём текст с заканчивающийся точкой , вывести все слова у которых первая и последняя буквы одинаковы.*/h #3
Большое спасибо!
Yandex
Объявления
30.03.2010, 17:08     /*Введём текст с заканчивающийся точкой , вывести все слова у которых первая и последняя буквы одинаковы.*/h
Ответ Создать тему
Опции темы

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