|
Вопрос # 4 071/ вопрос открыт / |
|
Приветствую, уважаемые эксперты! Подскажите в чем ошибка в моей программе, сделал, запускается но когда ввожу не считает нечего.
Условие задачи: дана последовотельность n троек (a, b, c) где a,b,c - целые числа. Посчитать количество троек, у которых хотя бы одно число равно нулю, и посчитать суму всех цифр у таких тройках. Создать процедуру, которая проверяет, есть ли в тройке ноль, и если есть то процедура считает суму цифр тройки.
Приложение: Переключить в обычный режим- #include <stdio.h>
- #include <conio.h>
- int triyka(int a, int b, int c, int *d);
- int main(void)
- {int a,b,c,n,i,K=0, S=0, e;
- printf("vvedite nn");
- scanf("%d",&n);
- for (i=1; i<=n; i++)
- {printf("vvedite a b cn");
- scanf("%d %d %d",&a , &b , &c);
- S+=triyka(a,b,c,&e);
- K+=e;
- }
- printf("kilkist triyok=%dn", K);
- printf("suma triyok=%dn", S);
- getch();
- return 0;
- }
- int triyka(int a, int b, int c, int *d)
- { if ((a=0) || (b=0) || (c=0))
- { *d=1;
- return (a+b+c);
- }
- else *d=0;
- return 0;
- }
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Дементьев Евгений Владимирович!
Ошибка - классика жанра:) в с/с++ равно это ==. А одно равно, это присвоить. a=0 присвоит ноль и его же и возвратит. Ноль - это ложь, поэтому условие не выполняется:)
#include <stdio.h>
int triyka(int a, int b, int c, int *d);
int main(void)
{
int a,b,c,n,i,K=0, S=0, e;
printf("vvedite n\n");
scanf("%d",&n);
for (i=1; i<=n; i++) {
printf("vvedite a b c\n");
scanf("%d %d %d",&a , &b , &c);
S+=triyka(a,b,c,&e);
K+=e;
}
printf("kilkist triyok=%d\n", K);
printf("suma triyok=%d\n", S);
return 0;
}
int triyka(int a, int b, int c, int *d)
{
if ((a==0) || (b==0) || (c==0)) {
*d=1;
return (a+b+c);
}
else
*d=0;
return 0;
}
P.S. учитесь форматировать код.
P.S.S код считает сумму чисел, а не цифр. Ваш код делал тоже.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 21 апреля 2010, 10:44
Оценка за ответ: 5
Комментарий к оценке: Спасибо) я забыл что надо два равно ))
|
Ответ #2. Отвечает эксперт: min@y™
Я тут тоже переделал немного и отладил. Всё работает.
#include <stdio.h>
#include <conio.h>
int triyka(int a, int b, int c, int *d)
{
if (!(a * b * c))
{
*d = 1;
return (a + b + c);
}
*d = 0;
return 0;
} // triyka
int main(void)
{
int a, b, c, n, i, K = 0, S = 0, e;
printf("vvedite n: \n");
scanf("%d", &n);
for (i = 0; i != n; i++)
{
printf("vvedite a b c: \n");
scanf("%d %d %d", &a, &b, &c);
S += triyka(a, b, c, &e);
K += e;
} // for
printf("kilkist triyok = %d\n", K);
printf("suma triyok = %d\n", S);
getch();
return 0;
} // main
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 21 апреля 2010, 10:53
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|