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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2008, 19:06   #1
Zid@ne
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 49
По умолчанию Условный оператор IF в Си

почти работает, но не до конца... не всё считает...
Код:
#include<stdio.h>
#include<conio.h>
void main (void)
{
int a,b;
double x;
clrscr();
puts("Vvedite chisla");
scanf("%d,%d",&a,&b);
if (a>b)
  x=(a*b)-1;
else
   if (a=b)
     x=255;
   else
       if (a<b) {
	  x=(a-5)/b;
	  printf("Ravno:%5.2lf",x);}

printf("Ravno:%5.2lf",x); 
getch();
}
Прога работает, но правильно вычисляет только где a>b и a=b
подскажите почему???
Zid@ne вне форума Ответить с цитированием
Старый 24.12.2008, 19:15   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот здесь:
Код:
else
   if (a=b)
     x=255;
Надо
Код:
else
   if (a==b)
     x=255;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.12.2008, 19:18   #3
Zid@ne
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 49
По умолчанию

точно-точно!!! я совсем забыл... спасибо!!!
Zid@ne вне форума Ответить с цитированием
Старый 24.12.2008, 19:23   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Кстати, заметил, что при a<b не всегда правильно считает. Возможно, это еще от компилятора может зависеть, но имхо лучше изменить вот так:
Код:
else if(a<b) {
	  x=(a-5)/(double)b;
      }
В исходном варианте правильный ответ получался только если значение выражения x=(a-5)/b было целочисленным. В остальных случаях выдавал 0.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.12.2008, 19:46   #5
Zid@ne
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 49
По умолчанию

приму на заметку! благодарю!

кстати ещё вопрос есть по факториалу, неправильно почему-то считает его. вот код:

Код:
#include<stdio.h>
#include<conio.h>

long fact(unsigned char j)
{
 long p = 1, i;
 for (i = 1; i <= j; i++)
  p = p*j;
 return p;
};

void main(void)
{
 unsigned char n, i;
 long s;
 clrscr();
 puts("Vvedite chislo:");
 scanf("%u",&n);
 s=0;
 for (i=1; i <= n; i++)
  s = s + fact(i);
 printf("Factorial = %d\n",s);
 getch();
}
всё проверил - ошибки не вижу...
Zid@ne вне форума Ответить с цитированием
Старый 24.12.2008, 19:49   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Вместо
else if (a<b) { ...
можно написать просто else {...
Arigato вне форума Ответить с цитированием
Старый 24.12.2008, 19:58   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Zid@ne
Код:
 for (i = 1; i <= j; i++)
  p = p*j;
надо
Код:
 for (i = 1; i <= j; i++)
  p = p*i;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.12.2008, 20:02   #8
Zid@ne
Пользователь
 
Регистрация: 18.01.2008
Сообщений: 49
По умолчанию

огромная благодарность Sazary!!!
Zid@ne вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
оператор >> в C++ sum42 Помощь студентам 1 24.12.2008 17:27
Оператор case Yermek Помощь студентам 3 12.10.2008 18:06
Оператор в с++ JOFRIF Помощь студентам 2 22.04.2008 18:12
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat McMilin Помощь студентам 7 11.11.2007 14:10
Оператор WITH Enko Общие вопросы Delphi 1 20.09.2007 20:36