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

Прога на строки - C++

Восстановить пароль Регистрация
 
papirus
 Аватар для papirus
2 / 2 / 0
Регистрация: 21.07.2009
Сообщений: 49
30.01.2010, 16:23     Прога на строки #1
Условие: дана строка. Определить кол-во букв "а" в последнем слове.
Посмотрите в чем дело? не работает что-то выдает значение 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
24
25
26
27
28
29
30
#include <iostream.h>
#include <math.h>;
#include <conio.h>;
#include <string.h>;
int main()
{
    char st[100];
    cout<<"Введите строку";
    cin>>st;
    int f=1; //флаг о том что пробел отсутсвует
    int kol=0; //кол-во букв "а"
    for (int i=strlen(st); (i==0); i--) //считываем посимвольно с конца файла
    {
     
         if (st[i]='a') // если это буква-а то kol увеличиваем
           ++kol; 
        else
             if (st[i]==' ')  // иначе если это пробел то
                {
                  if (f==1)   // и пробелов не встречалось то 
                   continue  //переходим к следующей итерации
                  else
                    break;   // если пробел был то выходим из цикла
                    }
        f=0;
        }
    cout<<kol;
    getchar();
    getchar();
}
вот исходник:
Вложения
Тип файла: rar exe_8.rar (402 байт, 19 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
papirus
 Аватар для papirus
2 / 2 / 0
Регистрация: 21.07.2009
Сообщений: 49
30.01.2010, 16:28  [ТС]     Прога на строки #2
или может кто сможет переделать вот эту прогу, она на билдере сделана, все работает. Один чел помог
Вложения
Тип файла: rar qwer.rar (296.4 Кб, 14 просмотров)
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
30.01.2010, 17:01     Прога на строки #3
Навскидку проблема вот тут:
for (int i=strlen(st); (i==0); i--) //считываем посимвольно с конца файла
должно быть
... (i>=0); ...
papirus
 Аватар для papirus
2 / 2 / 0
Регистрация: 21.07.2009
Сообщений: 49
30.01.2010, 19:56  [ТС]     Прога на строки #4
CheshireCat, не помогло

Добавлено через 2 часа 43 минуты
ну плз гляньте
insideone
Модератор
Автор FAQ
 Аватар для insideone
3623 / 901 / 48
Регистрация: 10.01.2010
Сообщений: 2,429
30.01.2010, 20:21     Прога на строки #5
C++
1
2
3
char st[100];
cout<<"Введите строку";
cin>>st;
У меня после этого в st введенная строка не лежит. Наверное что то связанное с кодировками? Не знаю. В остальном вроде верно но основной цикл я бы сделал так:
C++
1
2
3
4
5
6
7
8
        for (int i=strlen(st); (i==0); i--) //считываем посимвольно с конца файла
        {
            if (st[i]='a') // если это буква-а то kol увеличиваем
                ++kol; 
            else
            if (st[i]==' ')  // иначе если это пробел то
                break;
        }
papirus
 Аватар для papirus
2 / 2 / 0
Регистрация: 21.07.2009
Сообщений: 49
30.01.2010, 20:26  [ТС]     Прога на строки #6
insideone, а как ввод сделать строки?
insideone
Модератор
Автор FAQ
 Аватар для insideone
3623 / 901 / 48
Регистрация: 10.01.2010
Сообщений: 2,429
30.01.2010, 21:06     Прога на строки #7
Стоп стоп! Вы приглядитесь!
C++
1
if (st[i]='a')
Это не сравнение, это присваивание. К тому же цикл при i == 0 не выполняется ни разу.


Добавлено через 4 минуты
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 <iostream>
#include <math.h>
#include <conio.h>
#include <string.h>
 
using namespace std;
int main()
{
        unsigned char st[100];
        cout << "Введите строку";
        int Count=0;
        while ((st[Count]=getchar())!='\n')
        {
        Count++;
        }
        st[Count]='\0';
        int kol = 0; //кол-во букв "а"
        for (int i=Count; i > 0; i--) //считываем посимвольно с конца файла
        {
            if (st[i]==160) // если это буква-а то kol увеличиваем
                ++kol; 
            else
            if (st[i]==32)  // иначе если это пробел то
                break;
        }
        cout << kol;
        getchar();
        getchar();
}
Вот теперь это работает! Проанализируйте =)
papirus
 Аватар для papirus
2 / 2 / 0
Регистрация: 21.07.2009
Сообщений: 49
30.01.2010, 21:18  [ТС]     Прога на строки #8
insideone,
спасибо большое))
вроде бы понял.

Цитата Сообщение от insideone Посмотреть сообщение
st[Count]='\0';
только это непонятно для чего?

Добавлено через 42 секунды
конец строки?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2010, 21:22     Прога на строки
Еще ссылки по теме:

C++ не работает прога
Прога не компилируется(( C++
Не запускается прога C++

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

Или воспользуйтесь поиском по форуму:
insideone
Модератор
Автор FAQ
 Аватар для insideone
3623 / 901 / 48
Регистрация: 10.01.2010
Сообщений: 2,429
30.01.2010, 21:22     Прога на строки #9
да, нужно закончить строку нулевым символом иначе если его там нет строка окажется непредсказуемо больше)
Yandex
Объявления
30.01.2010, 21:22     Прога на строки
Ответ Создать тему
Опции темы

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