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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2011, 11:35   #1
peace on you
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 27
Стрелка Написание уравнения

Доброго времени суток уважаемые!
Запутался в написании уравнения, вроде все правильно, но программа зануляет ответ.
Уравнение прикреплено. Я же записал в С++ как, S=(1-pow(x,i))*pow(x,i).
Правильно или нет я сделал?
Сама программа выглядит так
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main ()
{ float S=0, x; int i;
met1: printf ("vveditex\n");
scanf ("%d",&x);
if (x>0.95) goto met1;
for (i=1; i<=15; i++)
S=S+(1-pow(x,i))*pow(x,i);
printf ("S=% f\n",S);
getch();
}
з.ы. если что она написана в Borland C++ 5.0.2
Не пойму что тут не так, ведь вот это уравнение работает:
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main ()
{ float S=0, x; int i;
met1: printf ("vveditex\n");
scanf ("%d",&x);
if (x>1) goto met1;
for (i=1; i<=20; i++)
S=S+i*exp(-i*x);
printf ("S=% f\n",S);
getch();
}
Изображения
Тип файла: jpg nad.JPG (5.7 Кб, 65 просмотров)

Последний раз редактировалось peace on you; 06.10.2011 в 12:06. Причина: upd:добавил ур-ия 1)не получившееся; 2)получившееся
peace on you вне форума Ответить с цитированием
Старый 06.10.2011, 12:42   #2
Stas_SPb
Пользователь
 
Регистрация: 15.07.2009
Сообщений: 15
По умолчанию

scanf ("%d",&x); - неверно, %d - целочисленное значение, для дробного
scanf ("%f",&x);
у меня при вводе 0,5 Ваша программа выдала ответ 0,666...
Stas_SPb вне форума Ответить с цитированием
Старый 06.10.2011, 12:53   #3
peace on you
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 27
По умолчанию

при вводе 0,5 в каком месте?
и почему scanf ("%d",&x); - неверно? если во втором уравнении это верно точно

Последний раз редактировалось peace on you; 06.10.2011 в 12:56.
peace on you вне форума Ответить с цитированием
Старый 06.10.2011, 14:11   #4
Stas_SPb
Пользователь
 
Регистрация: 15.07.2009
Сообщений: 15
По умолчанию

1. где спрашивала программка, там и воодил
2. а в чем разница между %f и %d Вы в курсе?
3. попробуйте заменить строчку, вызывающую сомнение на
x=0.5;
к примеру, а далее посмотреть на результтат
Stas_SPb вне форума Ответить с цитированием
Старый 06.10.2011, 16:08   #5
peace on you
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 27
По умолчанию

в курсе %f - float/double(вещественное с фиксированной точкой)
%d - int(целое).
У меня вызывает сомнение само уравнение.
Мне нужно получить результат как и во втором уравнении (там он равен S=210.000000), в первом же получается(как не меняй) S=0.000000
peace on you вне форума Ответить с цитированием
Старый 07.10.2011, 10:36   #6
Stas_SPb
Пользователь
 
Регистрация: 15.07.2009
Сообщений: 15
По умолчанию

Ок, все с %d и %f верно.
Для ввода с клавиатуры числа типа "float/double(вещественное с фиксированной точкой)" нужно использовать соответственно
%f, а не %d
В случае неправильного подбора, возможны ошибки.
Предлагаю вот такой вариант текста программы, где видно, что именно программа получила от пользователия при вводе
(соответственно можно сразу увидеть, правильно ли отработала scanf)
Код:
#include <stdio.h>
 #include <conio.h>
 #include <math.h>
 void main ()
 { float S=0, x; int i;
 met1: printf ("vveditex\n");
 scanf ("%d",&x);
 printf ("You have just entered x=%f\n",x);
 if (x>0.95) goto met1;
 for (i=1; i<=15; i++)
 S=S+(1-pow(x,i))*pow(x,i);
 printf ("S=% f\n",S);
 getch();
 }
Я все к чему. Поменяйте %d на %f в функции scanf и никому не говорите, что когда-то там было %d!
Stas_SPb вне форума Ответить с цитированием
Старый 07.10.2011, 10:51   #7
peace on you
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 27
По умолчанию

всё справился, простите меня, если что, но вас я понять не мог.
Преподаватель мне разъяснила, что нужно ввести %f вместо %d и при вводе числа, ввести не 1;2;3..., а 0,5.
В итоге программа выглядит так
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main ()
{float S=0,x, i;
met1: printf ("VVEDITE x\n");
scanf ("%f",&x);
if (x>=0.95) goto met1;
for (i=1; i<=15; i++)
S=S+(1-pow(x,i))*pow(x,i);
printf ("S=%f\n", S);
getch();
}
и при вводе 0.5, S=0.666636

Последний раз редактировалось peace on you; 07.10.2011 в 15:17.
peace on you вне форума Ответить с цитированием
Старый 07.10.2011, 13:33   #8
peace on you
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 27
По умолчанию

всё справился, простите меня, если что, но вас я понять не мог.
Преподаватель мне разъяснила, что нужно ввести %f вместо %d и при вводе числа, ввести не 1;2;3..., а 0,5.
В итоге программа выглядит так
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main ()
{float S=0,x, i;
met1: printf ("VVEDITE x\n");
scanf ("%f",&x);
if (x>=0.95) goto met1;
for (i=1; i<=15; i++)
S=S+(1-pow(x,i))*pow(x,i);
printf ("S=%f\n", S);
getch();
}
и при вводе 0.5, S=0.666636

Последний раз редактировалось peace on you; 07.10.2011 в 15:16.
peace on you вне форума Ответить с цитированием
Старый 10.10.2011, 16:33   #9
Stas_SPb
Пользователь
 
Регистрация: 15.07.2009
Сообщений: 15
По умолчанию

Успехов в дальнейшем изучении С++
Stas_SPb вне форума Ответить с цитированием
Старый 10.10.2011, 18:38   #10
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от Stas_SPb Посмотреть сообщение
Успехов в дальнейшем изучении С++
Приведенные выше программы написаны на Си.
An1ka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись уравнения Z1P Помощь студентам 2 07.05.2011 16:15
Уравнения varyat Паскаль, Turbo Pascal, PascalABC.NET 3 02.12.2010 08:19
система уравнения Miroshnik-Slava Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 07.11.2010 00:22
Решение уравнения Datrav Паскаль, Turbo Pascal, PascalABC.NET 2 06.06.2008 08:23