0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 45
1

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

02.12.2011, 18:31. Показов 1201. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2011, 18:31
Ответы с готовыми решениями:

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

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

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

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

8
Эксперт С++
5032 / 2611 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 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
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 45
02.12.2011, 18:51  [ТС] 3
мне просто нужно чтобы было с использованием самых простых, пусть и громоздких, конструкций.я все-таки первый курс((

Добавлено через 1 минуту
по условию нужно использовать библиотеку из вот 5 символов и пробела
0
Делаю внезапно и красиво
Эксперт С++
1312 / 1227 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
02.12.2011, 19:10 4
Цитата Сообщение от Nevado4ka Посмотреть сообщение
по условию нужно использовать библиотеку из вот 5 символов и пробела
Замени isalpha на проверку вхождения символа в массив simb, а всё остальное как в посте №2.
1
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
Делаю внезапно и красиво
Эксперт С++
1312 / 1227 / 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
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 45
06.12.2011, 09:45  [ТС] 7
Вот что выходит
Миниатюры
Вывести слова строки  
0
Эксперт С++
5032 / 2611 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 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
Фрилансер
Эксперт С++
5843 / 1224 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2011, 12:34
Помогаю со студенческими работами здесь

Вывести слова строки в обратном порядке
Здравствуйте. Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими)....

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru