Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Строки


Автор: РомаБонд 24.8.2006, 14:56
Условие задачи:программа вводит строку и подсчитывает сколько раз в строке встречается буква 'А'
сам пробовал решать эту задачу,вот текст программы которую я написал:
#include<stdio.h>
void main()
{
char s[30];
int i;
printf("введите строку");
scanf("%s",s);
for(i=0;s[i]!='\0';i++);
if (s[i]!=='a')
printf("кол-во 'a'=%d,i);
}
считает но неправильно!!!!

Автор: Darhazer 24.8.2006, 15:01
конечно же, ты негде не записиваеш сколько раз встретил 'a', а i у тебе просто количество символов в строке
Попробуй так:
Код

#include<stdio.h>
void main()
{
char s[30];
int count = 0;
printf("введите строку");
scanf("%s",s);
for(int i=0;s[i]!='\0'; ++i)
{
if (s[i]=='a') ++count;
}
printf("кол-во 'a'=%d,count);
}

Автор: Oleg_Ci 24.8.2006, 15:32
Ваша программа считывает строку до первого пробела smile 
Код

void main()    
{    
    char s[100];
    int count = 0, i;
    printf("введите строку > ");
    gets( s );  //  <<<<< надо так
    for( i=0; s[i]!='\0'; ++i )
        if ( s[i] == 'a' ) ++count;
    printf("кол-во 'a' = %d",count);
    getchar();
}

Автор: Darhazer 24.8.2006, 15:41
А еще - main не void, а int  smile 
Код
 int main()
{
...
return 0;
}

Автор: Oleg_Ci 24.8.2006, 16:02
А можно и так smile 
Код

char * main()    
{    
    ...
    return 0;
}

Автор: HappyLife 24.8.2006, 16:05
Против стандарта.

Автор: Oleg_Ci 24.8.2006, 16:07
На Microsoft Visual 2003 компилируется.

Автор: РомаБонд 24.8.2006, 19:14
Цитата(Darhazer @  24.8.2006,  15:41 Найти цитируемый пост)
А еще - main не void, а int


Цитата(Darhazer @  24.8.2006,  15:41 Найти цитируемый пост)
А еще - main не void, а int

А нас весь год училли Void Main от этого в моей проге ничего не зависит!!!

Автор: jonie 24.8.2006, 20:00
всеж написать ф-цмю считаю хорошим тоном....хотяб так
Код

int GetCountOfChar(const char* lps,const char Char)
{
    int count=0;
    for(;*lps;lps++)if(*lps==Char) count++;
    return count;
}

int main()
{
    char str[200];
    gets( str );
    printf("%d",GetCountOfChar(str,'A'));
    return 0;
}

Автор: MAKCim 24.8.2006, 21:03
Код

...
std::string str;
std::getline(std::cin,str);
size_t size=std::count(str.begin(),str.end(),'A');
...


Добавлено @ 21:04 
или
Код

size_t count(const char* dest, char sym)
{
    size_t size=0;
    while (*dest) size+=*dest++==sym ? 1: 0;
    return size;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)