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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2010, 22:33   #1
GoRdoN 17
Пользователь
 
Регистрация: 19.07.2009
Сообщений: 17
По умолчанию Что то напортачил

Программа в задумке выбирает по параметрам выражение (одно из трех). Затем подставляет значение x из диапазона. Изменяется значение, может выбираться другое выражение.
Код HTML:
#include <stdio.h>
#include <conio.h>
int main()
{
    float x, xd, xk, f;
    float a, b, c;
    int k;
    
    do
    {
        printf("Vvedite x, xk, xd:\n");
        scanf("%f %f %f",&x, &xk, &xd);
    }
    while ((((x<xk)&&(xd>0))||((x>xk)&&(xd<0)))==0);
    
    printf("Vvedite a, b, c:\n");
    scanf("%d %d %d",&a, &b, &c);
    
    printf("|  X  |  F  |\n");
    for (x;(((x<=xk)&&(xd>0))||((x>=xk)&&(xd<0)));x+=xd)
    {
        k=0;
        if ((x+5<0)&&(c>0.5)&&(a!=0)) k=1;
        else
        {
            if ((x>10)&&(c==0)) k=2;
            else
                if (c!=4) k=3;
        }
        
        switch(k)
        {
            case 1: f = 1./(a*x) - b; break;
            case 2: f = (x-a)/x; break;
            case 3: f = (10*x)/(c-4); break;
             default: printf("======");
        }
        
        if (k!=0) printf("| %4.2f| %4.2f |\n", x, f);
        else printf("| %4.2f | === |\n", x);
    }
    printf("-----------------");
    getch();
    return 0;
}
Проблема в том что всегда результат - числа с шагом 2.50 на каждый следующий x. Да поставил вывод k из switch - всегда 3...

Последний раз редактировалось GoRdoN 17; 16.12.2010 в 22:42.
GoRdoN 17 вне форума Ответить с цитированием
Старый 16.12.2010, 22:38   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

if ((x+5<0)&(c>0.5)&(a!=0))
:D
Один & это побитовое умножение! А тебе надо логическое умножение!
измени на два! Вот так &&
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 16.12.2010, 22:42   #3
GoRdoN 17
Пользователь
 
Регистрация: 19.07.2009
Сообщений: 17
По умолчанию

Увы, ничего не изменило. С & и && надо еще разобраться. Как и с указателями...
GoRdoN 17 вне форума Ответить с цитированием
Старый 16.12.2010, 22:53   #4
GoRdoN 17
Пользователь
 
Регистрация: 19.07.2009
Сообщений: 17
По умолчанию

Понимаю, трудно так что сказать, но такая деликатная вещь: 2.50 5.00 7.50... и k не считает правильно...
GoRdoN 17 вне форума Ответить с цитированием
Старый 16.12.2010, 23:02   #5
GoRdoN 17
Пользователь
 
Регистрация: 19.07.2009
Сообщений: 17
Печаль

Ладно, пообщаюсь сам с собой. Нашел программу написанную до этого. И она работает...
Код HTML:
#include<stdio.h>
#include<math.h>

int main()
{
 
   float a,b,c,f,x,xd,xk,xn;
   int k,numb;

   printf("Vvedite a, b, c:\n");
   scanf("%f %f %f",&a,&b,&c);

   do
   {
      printf("Vvedite xn, xk, xd:\n");
      scanf("%f %f %f",&xn, &xk, &xd);
   }
   while ((((xn<xk) && (xd>0)) || ((xn>xk) && (xd<0))) == 0);

   x = xn;
   if ((xn<xk) && (xd>0))   k = 1;
   else   k = 2;
   printf("___________");
   printf("   X   F   ");

   do
   {
      numb = 6;
      {
      if ((((x+5)<0)&&(c>0))&&((a!=0)&&(x!=0))) numb = 1;
      if (((x>10)&&(c!=0))&&(x!=0)) numb = 2;
      if (c!=4) numb=3;
      }
      
      switch(numb)
      {
	 case 1: f=(1./(a*x)-b); break;
	 case 2: f=(x-a)/x; break;
	 case 3: f=(10*x)/(c-4);
	 default: printf("XXXXXXXXX");
      }

      if (numb!=6) printf("%4.2f %4.2f  %d\n ",x,f,k);
      x+=xd;
   }
   while (((k==1)&&(x<=xk))||((k==2)&&(x>=xk)));
   printf("______________");
     
    system("PAUSE");
    return 0;
}
GoRdoN 17 вне форума Ответить с цитированием
Старый 16.12.2010, 23:09   #6
GoRdoN 17
Пользователь
 
Регистрация: 19.07.2009
Сообщений: 17
По умолчанию

Можно закрывать.
GoRdoN 17 вне форума Ответить с цитированием
Старый 16.12.2010, 23:57   #7
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

ах, как полезен самоанализ :D
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что получиться из этого кода? или что мы ищем через него? kroatoani Общие вопросы Delphi 5 23.10.2010 17:18
Товарищи модераторы за что удалили мою Тему? Или я что то не втыкаю!? Олег Егоров Помощь студентам 0 19.05.2010 19:39
Не напортачил ли я? docbrain Компьютерное железо 6 13.05.2010 07:14
Как узнать что в содержимое буфера обмена добавилось что либо? zotox Общие вопросы Delphi 2 15.09.2009 12:07