| 
| 
 | Вопрос # 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
 
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |