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

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

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

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

01.11.2012, 20:05. Просмотров 381. Ответов 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1284 / 946 / 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
 Аватар для David Sylva
1284 / 946 / 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
 Аватар для David Sylva
1284 / 946 / 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
 Аватар для David Sylva
1284 / 946 / 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
 Аватар для David Sylva
1284 / 946 / 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
 Аватар для David Sylva
1284 / 946 / 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
 Аватар для David Sylva
1284 / 946 / 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2012, 22:12     Не получается со строками (исправить код)
Еще ссылки по теме:

C++ исправить код
C++ Исправить код
Код работает не совсем корректно со строками C++
Нужно исправить ошибки в програме по работе со строками C++
Не получается исправить ошибки в коде C++

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

Или воспользуйтесь поиском по форуму:
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
01.11.2012, 22:12  [ТС]     Не получается со строками (исправить код) #15
Спасибо вам больше!
Yandex
Объявления
01.11.2012, 22:12     Не получается со строками (исправить код)
Ответ Создать тему
Опции темы

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