Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2009, 12:14   #1
InstanT'
 
Регистрация: 07.11.2009
Сообщений: 9
Вопрос Помогите найти ошибку в программе С++..(структуры)

В общем суть программы- подсчёт чётных и нечетных цифр в строке, цифры введены через запятую или точку...вот собственно мой код:
Код:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>

void main(void)
{
clrscr();
char s[19]={0};
int a=0,b=0;
gets(s);
for (int i=0;i<19;++i){
if (s[i] !=',' || s[i]!='.'){
if (s[i]%2==0.0){
a=a+1;
}
if (s[i]%2!=0.0){
b=b+1;
}
}
}
cout << "4etHblx ="<<a<<endl;
cout << "He4eTHblx ="<<b<<endl;
getch();
}
Но вот результат выводится не верный..помогите пож-ста найти ошибку..думаю она тут какая-то элементарная..
InstanT' вне форума Ответить с цитированием
Старый 12.11.2009, 13:09   #2
lamak
C++
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 30
По умолчанию

Я бы сделал так, правда будет работать только для чисел < 10.
Код:
#include <iostream.h>
#include <ctype.h>
#include <conio.h>
#include <string.h>

int main()
{ 
char s[19];
int a=0,b=0,len;
gets(s);
len=strlen(s);
for (int i=0; i<len; i++)
   if (isdigit(s[i]))
      { if ((s[i]-'0')%2==0.0)  a=a+1;  
          else b=b+1; }
     
cout << "4etHblx ="<<a<<endl;
cout << "He4eTHblx ="<<b<<endl;
getch();
}
Верю в google...
lamak вне форума Ответить с цитированием
Старый 14.11.2009, 16:14   #3
InstanT'
 
Регистрация: 07.11.2009
Сообщений: 9
По умолчанию

Up...может всётаки кто-нибудь подскажет в чём ошибка у меня в программе..?
InstanT' вне форума Ответить с цитированием
Старый 14.11.2009, 16:27   #4
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

Напишите в чем конкретно ошибка,у меня все нормально работает,по крайней мере я не заметил ошибок в программе от lamak.
InstanT',у вас любой символ ,кроме нечетных увеличивает а,в этом и ошибка...почитайте про isdigit,можно здесь
Не давай организму поблажки, каждый день тренируй его в шашки..

Последний раз редактировалось Скарам; 14.11.2009 в 16:38.
Скарам вне форума Ответить с цитированием
Старый 14.11.2009, 16:32   #5
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
if (s[i]%2==0.0)
так вы узнаете четный ли код символа s[i], делайте как сказал lamak
counter вне форума Ответить с цитированием
Старый 14.11.2009, 16:44   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
так вы узнаете четный ли код символа s[i], делайте как сказал lamak
Благо чётность кодов цифр соответствует чётности этих цифр )
(48 == 0, 49 == 1...)

2InstanT'

У вас ошибка в проверке условия
Код:
if(s[i] != ',' || s[i] != '.') - тут нужно вместо || поставить &&
Ещё рекомендовал бы воспользоваться как минимум частью кода lamak
Код:
gets(s);
len=strlen(s);
for (int i=0; i<len; i++)
А вообще говоря лучше весь его код взять ))
Только одно замечание - сравнивать остаток от деления нужно с целыми, из соображений производительности, так как он никогда не будет дробным
Код:
if(s[i]%2 == 0)
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку в программе(СИ) Ker_33rus Общие вопросы C/C++ 7 19.10.2009 20:03
Помогите найти ошибку в программе Nemles Помощь студентам 0 14.06.2009 14:21
Помогите найти ошибку в программе (C++) Olya90 Помощь студентам 1 28.03.2009 16:36
помогите на найти ошибку в программе SYL@R Помощь студентам 1 28.11.2008 12:35
Помогите найти ошибку в программе Evgenii Помощь студентам 3 24.07.2008 09:06