• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Вывод слов,которые заканчиваются на "С" - C++

Tikusjomo

Ученик
Регистрация
28 Ноя 2016
Сообщения
2
Реакции
0
Баллы
0
Вывод слов,которые заканчиваются на "С" - C++

ано несколько слов,которые пользователь вводит с клавиатуры,нужно вывести те,что заканчиваются на "с".
У меня пока получилось только сделать так,чтобы он выводил количество таких слов,а вот сами слова не могу,помогите.
Код:
#include "stdafx.h"
#include "iostream"
#include "math.h"
#include "string"
#include "windows.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{SetConsoleCP(1251);
SetConsoleOutputCP(1251);
string s; 
int n=0;
int a;
cout <<"Введите слова через запятую:" << endl; 
cin>> s;
a=s.length();
for (int i=0; i<a; i++){
    if ((s[i]=='с')&&(s[i+1]==','))  {n++;};
    ;
} 
cout << n << endl;
cout << s;
system ("pause");
    return 0;
}
 
Попытаюсь помочь, хотя в С - ни бельмеса. Тем более, в С++.
Но так, несколько соображений.

1. У Вас даже подсчет количества слов не совсем корректен: практически исключено из обработки последнее слово. А ведь оно тоже может заканчиваться на "с", и после него нет запятой! Поэтому цикл следует поправить как-то так:
for (int i=0; i<a; i++){
if (((s=='с')&&(s[i+1]==','))||((s=='с')&&(i==a-1)))
2. Чтобы выводить нужные слова, проще всего создать вспомогательную строковую переменную, например
string Q;
И дальше как-то так:
Q='';
for (int i=0; i<a; i++){
while ((!s==' ')&&(!s==',')) {Q=Q+s}
if (((s=='с')&&(s[i+1]==','))||((s=='с')&&(i==a-1)))
{
{n++;
cout << Q;
Q=''};
;
}

Извините за возможные ошибки, языка не знаю, просто на уровне идей.
 
Попытаюсь помочь, хотя в С - ни бельмеса. Тем более, в С++.
Но так, несколько соображений.

1. У Вас даже подсчет количества слов не совсем корректен: практически исключено из обработки последнее слово. А ведь оно тоже может заканчиваться на "с", и после него нет запятой! Поэтому цикл следует поправить как-то так:
for (int i=0; i<a; i++){
if (((s=='с')&&(s[i+1]==','))||((s=='с')&&(i==a-1)))
2. Чтобы выводить нужные слова, проще всего создать вспомогательную строковую переменную, например
string Q;
И дальше как-то так:
Q='';
for (int i=0; i<a; i++){
while ((!s==' ')&&(!s==',')) {Q=Q+s}
if (((s=='с')&&(s[i+1]==','))||((s=='с')&&(i==a-1)))
{
{n++;
cout << Q;
Q=''};
;
}

Извините за возможные ошибки, языка не знаю, просто на уровне идей.


Ошибок немного,быстро исправил,только вот программа ничего не делает после ввода слов :D
 
Ошибок немного,быстро исправил,только вот программа ничего не делает после ввода слов
Всё, чем могу помочь - нарисовать на Паскале и протестировать. А дальше уж Вы сами.
Ага, понял, в чем ошибка - надо оператор While заменить на If.
На Паскале - так (отлажено; учтите, что, в отличие от С, счет в цикле идет с 1, а не с 0):
Код:
Var
 S,Q:String;
 i,a,n:Byte;

Begin      
 Writeln('Enter the string with coma separator:');
 Readln(S);
 a:=Length(S);
 n:=0;
 Q:='';
 for i:=1 to a do
  begin
   if (S[i]<>',') and (S[i]<>' ') then Q:=Q+S[i];
   if ((S[i]='s') and (S[i+1]=',')) or ((S[i]='s') and (i=a)) then
    begin
     n:=n+1;
     writeln(Q);
     Q:='';
    end;
  end;
 Writeln('n = ',n);
 Readln
End.
 
Назад
Сверху