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

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

Войти
Регистрация
Восстановить пароль
 
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
#1

Не получается со строками (исправить код) - C++

01.11.2012, 20:05. Просмотров 395. Ответов 14
Метки нет (Все метки)

Добрый вечер! У меня возникла такая проблема: есть задача, я ее разбил на подпрограммы, подпрограммы написал, а вот теперь составить одну программу не получается! Помогите мне, буду благодарен!

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

Вот подпрограммы:

Количество предложений:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main ()
{
    char str [10000];
    gets(str);
    int i;
    int count = 0;
    int count1 = 1;
    for (i = 0; str [i] != '\0'; i++)
    {
            if (str [i] == '.'||str [i] == '!'||str [i] == '?') count++;
        
    }
    
    cout << count << endl;
    cout << count1 << endl;
    system("pause");
    return 0;
}
Количество слов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <locale.h>
#include <math.h>
#include <string.h>
#include <conio.h>
 
int main()
{
    char myString[40];
    puts("Vvedyte stroku: ");
    gets(myString);
    int space=0;
    for (int i =1; i<=strlen(myString); i++)
    {
        if (myString[i] == ' ')
        {
            space = space+1;
        }
    }
    printf("chislo slov ravno %d\n", space);
    getch();
    return 0;
}
Четные и нечетные предложения:
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>
using namespace std;
 
int main ()
{
    char str [10000];
    cout << "vv string\n";
    gets(str);
    int i;
    int count = 1;
    for (i = 0; str [i] != '\0'; i++)
    {
        if (str [i] == ' ')
            count++;
    }
    if(count%2==0) cout<<"parne"<<endl;
    else
    cout<<"neparne"<<endl;
    cout << count << endl;
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2012, 20:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не получается со строками (исправить код) (C++):

Не получается исправить код - C++
помогите исправить код пожалуйста char limit, notation; do { error = 0; int i = 0; cout &lt;&lt;...

Исправить программу, работа со строками - C++
прошу помощи написана программа // ConsoleApplication21.cpp: определяет точку входа для консольного приложения. // #include...

Нужно исправить ошибки в програме по работе со строками - C++
Описание классов: Базовый класс &quot;Строки&quot;: виртуальные функции нахождения длины и сортировка с выводом результата. Класс наследник...

Не получается запустить длинный код Алгоритма Гомори, код правильный. - C++
Собственно как запустить код через С++Builder 6 #include&lt;ctype.h&gt; #include&lt;string.h&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt; ...

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

Не получается исправить ошибки в коде - C++
Помогите найти ошибки #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; class Schet{ public: int balance; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
01.11.2012, 21:04 #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
27
28
#include <iostream> 
 
int main() 
{  
   
   int count = 0;
   int word = 1; 
   char ch;
   char buffer[100]; 
   do 
   { 
       std::cout << "Inter a string" << std::endl; 
       std::cin.getline(buffer, 100); 
 
       for ( unsigned i = 0; i < strlen(buffer); i++) 
           if(buffer[i] == ' ')  
               word++;  
       if(word % 2 == 0) 
           count++; 
       word = 1;
       std::cout << "Continue y/n " << std::endl; 
       std::cin >> ch; 
       std::cin.sync();
 
 
   } while(ch!='n');  
   std::cout << count << std::endl;
}
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
01.11.2012, 21:16  [ТС] #3
Цитата Сообщение от David Sylva Посмотреть сообщение
Можно задачу вот так решить
Я что-то не понимаю как она работает! Она хоть правильно работает?
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
01.11.2012, 21:21 #4
В соответствии с условием.
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
01.11.2012, 21:27  [ТС] #5
Я уже понял что к чему!) Спасибо!!

Добавлено через 4 минуты
David Sylva, А за что эта команда отвечает?
C++
1
cin.sync();
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
01.11.2012, 21:29 #6
После cin в потоке остаётся '\n', cin.sync() убирает мусор из потока.
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
01.11.2012, 21:30  [ТС] #7
Цитата Сообщение от David Sylva Посмотреть сообщение
После cin в потоке остаётся '\n', cin.sync() убирает мусор из потока.
А ее можно чем-то другим заменить?
Мы просто так еще не проходили)
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
01.11.2012, 21:40 #8
Цитата Сообщение от vasiliy21 Посмотреть сообщение
А ее можно чем-то другим заменить?
Надо тогда как-нибудь по другому считывать файл.
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
01.11.2012, 21:44  [ТС] #9
Я вот сделал через gets и оно перестало работать! Не подскажите почему?

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> 
 using namespace std;
int main() 
{  
   
   int count = 0;
   int word = 1; 
   char ch;
   char buffer[100]; 
   do 
   { 
       cout << "Inter a string" << std::endl; 
       gets(buffer); 
 
       for ( unsigned i = 0; i < strlen(buffer); i++) 
           if(buffer[i] == ' ')  
               word++;  
       if(word % 2 != 0) 
           count++; 
       word = 1;
       cout << "Continue y/n " << std::endl; 
       cin >> ch; 
   } while(ch!='n');  
   cout << count << std::endl;
   system("pause");
}
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
01.11.2012, 21:47 #10
Подскажу потому что, gets должен принимать параметр *char, а не char.
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
01.11.2012, 22:02  [ТС] #11
David Sylva, Может сделаете эту программу через gets , потому что я еще долго буду возиться!)

Добавлено через 11 минут
Пожалуйста))
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
01.11.2012, 22:02 #12
с gets сделать можно, но это будет очень криво.
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
01.11.2012, 22:04  [ТС] #13
Цитата Сообщение от David Sylva Посмотреть сообщение
с gets сделать можно, но это будет очень криво.
И пусть криво будет, но чтобы этими методами что я знаю!
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
01.11.2012, 22:05 #14
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> 
 
int main() 
{  
   
   int count = 0;
   int word = 1; 
   char ch[2];
   char* ptr = ch;
   char buffer[100];  
 
   do 
   { 
       std::cout << "Inter a string" << std::endl; 
       std::cin.getline(buffer, 100);  
 
 
       for ( unsigned i = 0; i < strlen(buffer); i++) 
           if(buffer[i] == ' ')  
               word++;  
       if(word % 2 == 0) 
           count++; 
       word = 1;
       std::cout << "Continue y/n " << std::endl;
       std::gets(ptr);
       
       
     } while(*ptr!='n');
 
   std::cout << count <<  std::endl;
}
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
01.11.2012, 22:12  [ТС] #15
Спасибо вам больше!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2012, 22:12
Привет! Вот еще темы с ответами:

Работа со строками - разобрать код - C++
разбираю сейчас работу со строками и попался такой код программы: #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { ...

Работа со строками - прокомментировать код - C++
На просторах интернета нарыл данную прогу : #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; ...

Код работает не совсем корректно со строками - C++
почему-то при любом количестве строк,которое я задаю,он позволяет написать только одну,а потом переходит к следующему пункту и вообще...

Надо написать код программы со строками - C++
3. С клавиатуры вводится последовательность символов до тех пор, пока не встретится символ, не являющийся цифрой. Подсчитать количество...


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

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

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