![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 25.09.2012
Сообщений: 3
|
![]()
Дано задание : удовлетворяют ли элементы последовательности данному рекурентному соотношению: с1*a(i-1)+c2*ai+c3*a(i-1)=b
Вроде написала, но есть ошибка, из-за которой программа не запускается. Помогите, пожалуйста, с ошибкой =__= #include <stdio.h> #include <math.h> int main(void) { double x, y, z, b, c1, c2, c3, sum; FILE *fin=NULL; if ( (fin=fopen("input.txt", "r"))==NULL) {printf("didnt open"); return -1;} printf ("write c1, c2, c3 and b\n"); scanf ("%lf%lf%lf%lf", c1, c2, c3, b); while (fscanf(fin, "%lf%lf%lf", &x, &y, &z)==1) sum=c1*x+c2*y+c3*z; if (sum==b) printf("you are right!"); if (sum!=b) printf("You are wrong!"); return 0; } |
![]() |
![]() |
![]() |
#2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]() Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 25.09.2012
Сообщений: 3
|
![]()
мм, при компилировании он показывает "comparing floating point with == and != is unsafe". у меня уже такое не раз было, так и не поняла почему.
и еще, не могли бы вы объяснить вот эту часть : while(c1 * a1 + c2 * a2 + c3 * a1 == b && fscanf("%lf", &num) > 0) { a1 = a2; a2 = num; } |
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,375
|
![]() Цитата:
Вещественные надо сравнивать с каким то эпсилон, типа: if (a-b) <= eps. Как-то так ...
Как-то так, ...
|
|
![]() |
![]() |
![]() |
#5 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
ViktorR прав. Нужно ввести какое-либо eps.
Код:
Затем заходим в условие while. while(fabs(c1 * a1 + c2 * a2 + c3 * a1 - b) < EPS && fscanf("%lf", &num) > 0) { a1 = a2; a2 = num; } Сначала проверяется условие для считанных ранее a1 и a2 (первый и второй элементы последовательности). Если оно истинно, тогда выполняется вторая часть условия, т.е. считывается еще 1 элемент (если возможно). Если эти условия выполнены, то элементы "сдвигаются" (первый отбрасывается, второй становится на место первого, а ново считанный на место второго). Затем цикл повторяется. Он выполняется, пока есть элементы в файле и пока выполняется заданное условие на последовательность.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#6 |
Новичок
Джуниор
Регистрация: 25.09.2012
Сообщений: 3
|
![]()
спасибо большое, вроде все понятно)
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка в программе | Катакомба | Помощь студентам | 8 | 14.10.2011 18:11 |
Ошибка в программе на Си++ | Эммануэль | Помощь студентам | 20 | 09.04.2011 18:04 |
Ошибка в программе | Rusl_v | Общие вопросы C/C++ | 4 | 17.12.2010 16:24 |
Ошибка в программе | w6120w | Общие вопросы C/C++ | 3 | 04.10.2010 19:37 |
Ошибка в программе. | T@tali | Паскаль, Turbo Pascal, PascalABC.NET | 15 | 25.05.2010 13:36 |