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


Автор: Ekate 24.6.2008, 21:02
Хочу сосчитать количество цифр.
Для начала взяла легкий пример посчитать цифры в строке 12, но ...
Код на С
Код

int count;
char *ch;
char str[]="12";
 ch = str;

  while(*ch!='\0'){
    if ((*ch>='0')&&(*ch<='9')){ count++;};
    ch++;
  }
 printf("%d\t %d",strlen("12"),count);


Но в результате получаю 2 и 2293626.
Не понимаю почему?
Заранее спасибо

Автор: rrrFer 24.6.2008, 21:17
Ekate, 
Код

main(){
    int count;
    char *ch,str[]="12";
    for(ch = str,count =0;*ch!='\0';ch++)
        if ((*ch>='0')&&(*ch<='9'))
            count++;
    printf("%d\t %d",strlen("12"),count);
}

забыли обнулить счетчик count, потому изначально в нем был мусор
------
ЗЫ:
возможно не стоит хранить 2 символьных массива, и заместо этого использовать целоцисленную переменную:
Код

#include <stdio.h>
#include <string.h>
main(){
    int count,i;
    char str[]="12";
    for(count=0,i=0;str[i]!='\0';i++)
        if ((str[i]>='0')&&(str[i]<='9'))
            count++;
    printf("%d\t %d",strlen(str),count);
}

а также вместо char[] использовать string...(если нет ограничения писать без плюсов)

Автор: bsa 24.6.2008, 21:17
а чему у тебя равен count перед входом в цикл while?  smile

Добавлено через 1 минуту и 29 секунд
rrrFer, опередил. Но считаю, что полезнее подтолкнуть человека в сторону решения проблемы, а не решать за него. Особенно, в случае такой классики.

Автор: Ekate 24.6.2008, 21:32
Спасибо, ребята!  smile  Недоглядела  smile 

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