Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программа с решением графика, Нужно исправить ошибку 
V
    Опции темы
Huey
Дата 10.5.2011, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 20.12.2010

Репутация: нет
Всего: нет



Есть рабочая программа, считает все правильно. Всего у задачи 2 решения (x=0 и x=1,51). Однако выводится два раза ответ x=0. Как от этого избавиться? Может массив какой вшить, чтобы если ответы равны, то выдавать только один. Помогите, пжл))

Код

#include <stdio.h>
#include <math.h>
#include <graph.h>
#include <conio.h>
#define a 0.7
#define b 1.1
#define c 0.2
double ur (double x)
{return a*sin(b*sqrt(x))-c*(x*x*x);}
main (){
double x, xn,xk,px,py,ymax,ymin,koy,kot,y;
char tms[5];
int n=0;
puts("Write xn and xk:");
scanf("%lf%lf",&xn,&xk);
px = 640/(-xn+xk);
_setvideomode(_VRES16COLOR);
_clearscreen(_GCLEARSCREEN);
ymax= -ur (xn);
ymin=ymax;
for (x=xn; x<=xk;x+=0.0001)
{ y=-ur(x);

if((-ur(x-0.0001)*y)<=0.)
{printf("  x[%d]=%0.2lf \n",n+1,x);
n++}
if (ymax<y) ymax=y;
if (ymin>y) ymin=y;}
if (n==0) puts("net resheniy");
_setwindow (1,xn,-ymin,xk,-ymax);
_moveto_w (xn,0.);
_lineto_w(xk,0.);
_moveto_w (0.,-ymax);
_lineto_w(0.,-ymin);
py = 480/fabs(-ymax+ymin);
koy= (ymax-ymin)/2;
_setvieworg(320,240);
_setcolor (7);
_settextposition (14,76);
sprintf(tms,"%2.2f",xk);
printf("%s\n",tms);
_outtext(tms);
_settextposition (14, 1);
sprintf(tms,"%2.2f",xn);
_outtext(tms);
_settextcolor(7);
_settextposition(1, 42);
sprintf(tms,"%2.2f",-ymin);
_outtext(tms);
_settextposition(28, 42);
sprintf(tms,"%2.2f",-ymax);
_outtext(tms);
kot = (xk-xn)/2;
x = xn;
y = -ur(x);
_moveto (((x-(xn+kot))*px), ((y-(ymin+koy))*py));
for (x =xn;x <= xk;x+=0.01) {
    y =  -ur(x);
    _lineto((x-(xn+kot))*px, (y-(ymin+koy))*py);}
    getch();
    return 0;}





PM MAIL   Вверх
bsa
Дата 10.5.2011, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Huey, почитай Оформление кода и примени полученные знания к своему коду. Иначе, такое ощущение, что ты нас (форумчан) не уважаешь.
PM   Вверх
Huey
Дата 10.5.2011, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 20.12.2010

Репутация: нет
Всего: нет



ok, к завтра исправлю)
PM MAIL   Вверх
bsa
Дата 12.5.2011, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Huey, что, отформатировал код и ошибка нашлась? smile
PM   Вверх
borisbn
Дата 12.5.2011, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Huey
1. Ну откуда ж, действительно, такое неуважение ? Программа практически нечитабельна
Цитата(Huey @  10.5.2011,  17:49 Найти цитируемый пост)

for (x=xn; x<=xk;x+=0.0001)
{ y=-ur(x);

if((-ur(x-0.0001)*y)<=0.)
{printf("  x[%d]=%0.2lf \n",n+1,x);
n++}
if (ymax<y) ymax=y;
if (ymin>y) ymin=y;}

ужс
2. Она вообще не должна компилироваться, т.к. не хватает ; после ++
Цитата(Huey @  10.5.2011,  17:49 Найти цитируемый пост)
n++}

3. Вот так - работает.
http://liveworkspace.org/code/3444a25a6311...6b89728240a523a
4. Какие ты задаёшь xn и xk ?


Это сообщение отредактировал(а) borisbn - 12.5.2011, 13:08


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Huey
  Дата 16.5.2011, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 20.12.2010

Репутация: нет
Всего: нет



Я ввел твою программу с точностью до скобки, но он все равно на экран выводит 3 ответа. х[1]=0; x[2]=0; x[3]=1,51. Я понять не могу почему, вроде все верно

Это сообщение отредактировал(а) Huey - 16.5.2011, 16:38

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  _.jpg 60,78 Kb
PM MAIL   Вверх
Huey
Дата 16.5.2011, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 20.12.2010

Репутация: нет
Всего: нет



В той среде, в которой ты работал, действительно выдается правильно. Посоветуй тогда программу для работы в С на Windows 7, пожалуйста.
PM MAIL   Вверх
bsa
Дата 16.5.2011, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



PM   Вверх
Huey
Дата 16.5.2011, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 20.12.2010

Репутация: нет
Всего: нет



спс
PM MAIL   Вверх
Huey
Дата 16.5.2011, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 20.12.2010

Репутация: нет
Всего: нет



Я разобрался, где ошибка:

у нас в for
 
Код

for (x=xn; x<=xk;x+=0.0001)

x+=0.0001

А в if 
Код

if((-ur(x-0.0001)*y)<=0

x-0.0001
получается на первом шаге 0.0001-0.0001=0
Избавиться от этого можно подкорректировав for
Код

for (x=xn; x<=xk;x+=0.00011)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0843 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.