Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Nevado4ka
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 45
1

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

02.12.2011, 18:31. Просмотров 1012. Ответов 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
Ответы с готовыми решениями:

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

Строки, вывести слова в обратном порядке
Подскажите,как вывести слова в обратном порядке? Вот код, что нужно исправить ...

Вывести слова из строки в алфавитно порядке
Написать программу на языке Си которая запрашивает строку у пользователя,...

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

Строки. Вывести совпадающие в текстах слова
Заданы два текста. Вывести совпадающие в этих текстах слова. Помогите...

8
fasked
Эксперт С++
4982 / 2561 / 241
Регистрация: 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
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 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
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 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
Эксперт С++
4982 / 2561 / 241
Регистрация: 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
Фрилансер
Эксперт С++
5838 / 1219 / 499
Регистрация: 23.11.2010
Сообщений: 3,377
Записей в блоге: 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
06.12.2011, 12:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2011, 12:34

Как вывести разбитые слова из строки по алфавиту?
Задание: Разбить строку на слова и вывести их за алфавитом. Разбить, я разбил,...

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

Строки: вывести на экран слова четной длинны
Вводим строку, требуется вывести на экран слова четной длинны в одной...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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