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

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

Войти
Регистрация
Восстановить пароль
 
Nevado4ka
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 45
#1

Вывести слова строки - C++

02.12.2011, 18:31. Просмотров 444. Ответов 8
Метки нет (Все метки)

Нужно вывести слова из строки
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
int main(){
  char s[100] = " Every . solution , breeds ! new ? problems / ";
  char simb[10] = " .,!?/";
  int simb_begin = 0;
  int k = 0;
  for ( unsigned int i=0; i<strlen(s); i++ ){
      for ( unsigned int j = 0; i<strlen(simb); j++){
      if ( s[i] != simb[j] && s[i-1] == simb[0] ){ 
        simb_begin = k; 
      }
      }
    if ( s[i] == simb[0] && simb_begin > 0 ){ 
      for ( int j=simb_begin; j<k; j++ ){
        cout << s[j];
      }
      cout << endl;
      simb_begin = 0;
    }
    k++;
  
  }
  getch();
  return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2011, 18:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести слова строки (C++):

Строки: вывести слова с наименьшим количеством букв; удалить слова, начинающиеся с маленькой буквы - C++
Здравствуйте. Помогите, пожалуйста сделать программу... Задание: Составить программу, которая выводит на экран слова с наименьшим...

Вывести слова строки в алфавитном порядке - C++
Создать программу, которая из произвольного строки, содержащий некоторый текст, выделяет все слова и печатает их в алфавитном порядке (по...

Строки, вывести слова в обратном порядке - C++
Подскажите,как вывести слова в обратном порядке? Вот код, что нужно исправить { char str1; char str2=&quot;, &quot;; cout&lt;&lt;&quot;Enter...

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

Строки. Вывести совпадающие в текстах слова - C++
Заданы два текста. Вывести совпадающие в этих текстах слова. Помогите пожалуйста, не знаю с чего начать.

Вывести слова строки, содержащие не более 4 букв - C++
Здравствуйте. Задание: Вписать строку в консоль. Вывести слова этой строки, состоящие не более чем из 4 букв. Пример входных...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
02.12.2011, 18:48 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Можно же проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cctype>
 
int main() {
   const char *s = " Every . solution , breeds ! new ? problems / ";
 
   bool endline = true;   
   for (int i = 0; s[i]; ++i) {  
      if (isalpha(s[i])) {
         std::cout << s[i];
         endline = true;
      }
      else if (endline) {
         std::cout << std::endl;
         endline = false;
      }
   }
}
А правильнее это, наверное, делать через stringstream или boost tokenizer
1
Nevado4ka
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 45
02.12.2011, 18:51  [ТС] #3
мне просто нужно чтобы было с использованием самых простых, пусть и громоздких, конструкций.я все-таки первый курс((

Добавлено через 1 минуту
по условию нужно использовать библиотеку из вот 5 символов и пробела
0
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.12.2011, 19:10 #4
Цитата Сообщение от Nevado4ka Посмотреть сообщение
по условию нужно использовать библиотеку из вот 5 символов и пробела
Замени isalpha на проверку вхождения символа в массив simb, а всё остальное как в посте №2.
1
Nevado4ka
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 45
05.12.2011, 18:28  [ТС] #5
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 "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
#include <cctype>
 
int main() 
{
   char s[100] = " Every . solution , breeds ! new ? problems / ";
   char simb[10] = " .,!?";
 
   bool endline = true;   
   for (int i = 0; s[i]; ++i)
   {  
       for (int j = 1; j < 4; j++)
       {
           if (s[i] = simb [j]) 
           {
               cout << s[i];
               endline = true;
           }
           else if (endline)
           {
               cout << endl;
               endline = false;
           }
       }
   }
   getch();
}
что я тут не так сделала?
он выводит странные символы((
кажется я совсем дуб(((
0
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
06.12.2011, 06:15 #6
Цитата Сообщение от Nevado4ka Посмотреть сообщение
for (int j = 1; j < 4; j++)
При этом в simb у тебя ПЯТЬ символов. И индексация с нуля в С++ начинается.

Цитата Сообщение от Nevado4ka Посмотреть сообщение
if (s[i] = simb [j])
Это присваивание, а не сравнение
1
Nevado4ka
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 45
06.12.2011, 09:45  [ТС] #7
Вот что выходит
0
Миниатюры
Вывести слова строки  
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
06.12.2011, 11:52 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Nevado4ka, сказали же с нуля.
C++
1
for (int j = 0; j < 5; ++j)
И вообще логика измениться должна:
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
#include <iostream>
 
using namespace std;
 
int main() 
{
   char s[100] = " Every . solution , breeds ! new ? problems / ";
   char simb[10] = " .,!?/";
 
   bool endline = true; 
   for (int i = 0; s[i]; ++i)
   {  
           bool found = false;  
           for (int j = 0; j < 6 && !found; j++)
           {
              if (s[i] == simb[j])
                 found = true;
           }
           
           if (!found) 
           {
                   cout << s[i];
                   endline = true;
           }
           else if (endline)
           {
                   cout << endl;
                   endline = false;
           }
   }
}
1
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
06.12.2011, 12:34 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
stringstream
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <sstream>
 
const std::string delims = " .,!?/";
 
int main()
{
    std::string Str = " Every . solution , breeds ! new ? problems / ";
    std::istringstream ist(Str);
    while(ist>>Str)
        if(Str.find_first_of(delims) == std::string::npos)
            std::cout<<Str<<std::endl;
    system("pause");
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2011, 12:34
Привет! Вот еще темы с ответами:

Вывести слова строки в порядке убывания длины - C++
требуется написать программу которая: -считает количество слов в предложении -выводит слова строки в порядке убывания ее длины ...

Как вывести разбитые слова из строки по алфавиту? - C++
Задание: Разбить строку на слова и вывести их за алфавитом. Разбить, я разбил, а как вывести за алфавитом не знаю. Помогите, пожалуйста. ...

Строки: вывести на экран слова четной длинны - C++
Вводим строку, требуется вывести на экран слова четной длинны в одной строке,нечетной в другом...заранее огромное спасибо!!!

Вывести все слова строки в порядке убывания - C++
Помогите пожалуйста: Дана строка текста, в которой слова разделены пробелами. Необходимо: определить количество слов в строке, ...


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

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

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