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


Автор: sasha1212 19.3.2014, 21:23
Почему компилятор выдает мне ошибку вот тут?

#include <stdio.h>
#include <conio.h>

void main (void)
{  \\ здесь
  float A,B,C;

  printf ("\n\t Vvedite chisla cherez probel:");
  scanf ("%d %d %d" ,&A,&B,&C);


  printf("\n\t Chisla %d i %d i %d " ,A,B,C);

  if(A/2+B/2+C/2 > 0)
  {
     if(A<B;A<C)
        A=A*A;
     else
       { 
       if(B<A;B<C)
           B=B*B;
       else
          if(C<A;C<B)
           C=C*C;
  else
     if(A<0)
          A=A/2;
             if(B<0)
                 B=B/2;
                         if(C<0)
                                C=C/2;
                         else;
             else(C<0)
                    C=C/2;
     else 
        if(B<0)
            B=B/2;
        else
            if(C<0)
               C=C/2;
printf("\n\t Rezultat : A,B,C\n");
}
getch();
}

Автор: Guinness 20.3.2014, 07:21
int main?

Добавлено через 44 секунды
В таких случаях, было бы здорово, писать текст ошибки.

Автор: baldina 20.3.2014, 10:00
main скорее непричем. у него количество скобок и if|else не совпадает

Добавлено через 1 минуту и 14 секунд
не говоря уж о  if(A<B;A<C)  smile

Добавлено через 4 минуты и 3 секунды
sasha1212, компилятор выдает тебе кучу ошибок и предупреждений; их количество зависит, как компилируешь - С или С++

для оформления кода пользуйся кнопочкой "код" - появятся номера строк, на которые можно ссылаться

Автор: Guinness 20.3.2014, 11:22
Цитата(baldina @  20.3.2014,  11:00 Найти цитируемый пост)
не говоря уж о  if(A<B;A<C)  smile

Ого). Зря код не посмотрел, дошёл исключительно до строчки "//здесь"

Автор: k0rvin 20.3.2014, 11:32
Код вообще отформатирован ужасно, сложно определить какой else к какому if относится. Наверняка, кроме синтаксических ошибок, есть и логические.

Автор: feodorv 20.3.2014, 14:12
Цитата(k0rvin @  20.3.2014,  12:32 Найти цитируемый пост)
Код вообще отформатирован ужасно, сложно определить какой else к какому if относится. Наверняка, кроме синтаксических ошибок, есть и логические. 

Да уж(((
Цитата(sasha1212 @  19.3.2014,  22:23 Найти цитируемый пост)
if(A/2+B/2+C/2 > 0)
  {
     if(A<B;A<C)
        A=A*A;
     else
       { 
       if(B<A;B<C)
           B=B*B;
       else
          if(C<A;C<B)
           C=C*C;
  else
     if(A<0)
          A=A/2;
             if(B<0)
                 B=B/2;
                         if(C<0)
                                C=C/2;
                         else;
             else(C<0)
                    C=C/2;
     else 
        if(B<0)
            B=B/2;
        else
            if(C<0)
               C=C/2;

Всё проще до безобразия:
Код

if( (A+B+C)/2 > 0)
{
  if( A<B && A<C ) 
    A=A*A;
  else if( B<A && B<C ) 
    B=B*B;
  else if( C<A && C<B ) 
    C=C*C;
}
else
{
  if( A < 0 ) A = A / 2;
  if( B < 0 ) B = B / 2;
  if( C < 0 ) C = C / 2;
}


Небольшое замечание. sasha1212, Вы упорствуете в том, что есть полусумма трёх чисел, подменяя её на сумму полузначений:
Цитата(sasha1212 @  19.3.2014,  22:23 Найти цитируемый пост)
  if(A/2+B/2+C/2 > 0)
 Полусумма же есть (A+B+C)/2. То есть начала сумма, потом делим пополам, а не сначала делим пополам, а потом суммируем. Результат может отличаться.

Добавлено через 3 минуты и 14 секунд
Цитата(sasha1212 @  19.3.2014,  22:23 Найти цитируемый пост)
  float A,B,C;

  printf ("\n\t Vvedite chisla cherez probel:");
  scanf ("%d %d %d" ,&A,&B,&C);

%d - это ввод целого числа, не float.

Добавлено через 4 минуты и 58 секунд
Цитата(sasha1212 @  19.3.2014,  22:23 Найти цитируемый пост)
printf("\n\t Rezultat : A,B,C\n");

Это есть всего лишь печать на экран строки "\n\t Rezultat : A,B,C\n", но никак не значений переменных A, B, C.

Автор: k0rvin 20.3.2014, 17:21
Цитата(feodorv @  20.3.2014,  14:12 Найти цитируемый пост)
То есть начала сумма, потом делим пополам, а не сначала делим пополам, а потом суммируем. Результат может отличаться.

Ага, например переполнение float. =))

Автор: feodorv 20.3.2014, 18:01
Цитата(k0rvin @  20.3.2014,  18:21 Найти цитируемый пост)
Ага, например переполнение float. =)) 

Ну, я так понял, что float там по-ошибке вместо int smile 

Автор: k0rvin 20.3.2014, 18:10
Цитата(feodorv @  20.3.2014,  18:01 Найти цитируемый пост)
Ну, я так понял, что float там по-ошибке вместо int

int будет еще проще переполнить.

Автор: baldina 20.3.2014, 18:17
int и переполнять не надо

Автор: feodorv 20.3.2014, 19:04
Цитата(k0rvin @  20.3.2014,  19:10 Найти цитируемый пост)
int будет еще проще переполнить

Это верно, но речь шла о простых значениях вида a = -5, b = 2, c = 4. Никакого переполнения, но результат отличается (и именно в контексте данной задачи). А переполниться может и A/2+B/2+C/2.

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