|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.07.2010, 18:28 | #1 |
46KSS
Пользователь
Регистрация: 26.07.2010
Сообщений: 58
|
Задачка
Доброго времени суток, уважаемые форумчане. Собственно решил заняться программирование ну и где то дня 3-4 подряд вроде бы как дело успешно продвигается вперед. Вот задачка с которой не помогает справиться не google не учебники, к сожалению на форуме тоже похожего не нашел.
Задание на рисунке и скрин работы программы тоже... Вот мой код: Код:
Последний раз редактировалось Stilet; 29.07.2010 в 11:28. |
28.07.2010, 19:30 | #2 |
Форумчанин
Регистрация: 28.07.2009
Сообщений: 189
|
что программа должна делать?
пишу программы для студентов и школьников на Pascal, Delphi, C++, WINAPI, assembler
обучаю программированию на паскале(дистанционно);mail: hruslow@gmail.com |
28.07.2010, 19:51 | #3 |
46KSS
Пользователь
Регистрация: 26.07.2010
Сообщений: 58
|
Рисунок с заданием и результатом работы программы прикреплен сразу после кода... Думаю, что программа должна считать значение (y) по одной из формул, при условии что (x) находится на определенном интервале, в противном случае если значение (x) переходит в другой интвервал то соответственно программа считает его по другой формуле. Все ето происходит с одинаковым шагом, после чего программа выводит на экран результаты вычисления значений на обоих интервалах по обоим формулам. Что мне непонятно в задании, так ето для чего дан 3 интервал (в данном случае [0,2]), единственное, что приходит в голову, он дает понять что в 1 интервале (x) принадлежит не x<0.5 то есть (-&, 0.5) а (x>=0 && x<0.5)...
Размышления приводят к следующему коду: Код:
Тут по идее все правильно - программа произвольно выбирает значение (x) из интервала от [0,2] и если оно принадлежит интервалу от [0, 0.5) то считает его по 1 формуле, в противном случае выводит на экран сообщение, что значение не соответствует интервалу. Блин, тогда возникает следующий вопрос: Как создать 2 такой цикл для 2 формулы? Вроде бы как он создается с помощью того же (if), но программа начинает путаться в своих подсчетах... Если сделать 2 цикла раздельно( ввести еще раз (for) и так далее ничего все равно не получается...) Вообщем если есть у кого мысли свежие поделитесь а\ Последний раз редактировалось Stilet; 29.07.2010 в 11:29. |
28.07.2010, 23:23 | #4 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
Блок-схему нарисовать не пробовали? Иногда помогает...
|
29.07.2010, 11:10 | #5 | |
Пользователь
Регистрация: 29.03.2010
Сообщений: 48
|
Во-первых, надо внимательнее читать условия задачи: X в задании находится в диапазоне от 0 до 2, тогда как функция y() определена в диапазонах от 0 до 0.5 и от 0.5 до 1, а от 1 до 2 она вообще не определена.
Во-вторых, не вижу смысла под каждую переменную резервировать по 8 байт. Поэтому вместо double рекомендую применить float, которая под себя резервирует в памяти в два раза меньше места. Цитата:
Код:
Последний раз редактировалось Stilet; 29.07.2010 в 11:30. |
|
29.07.2010, 11:23 | #6 |
46KSS
Пользователь
Регистрация: 26.07.2010
Сообщений: 58
|
Разобрался, отредактировал немножко). Были мысли по поводу того, что должно быть несколько циклов, но что в самом (else) создается условие (if)
не догадался бы) Спасибо большое, Феликс, очень помогли Вот код рабочей программы если кому интересно: Код:
Последний раз редактировалось Stilet; 29.07.2010 в 11:31. |
29.07.2010, 12:15 | #7 | |
Пользователь
Регистрация: 29.03.2010
Сообщений: 48
|
Цитата:
Код:
|
|
29.07.2010, 12:44 | #8 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
|
29.07.2010, 13:27 | #9 |
46KSS
Пользователь
Регистрация: 26.07.2010
Сообщений: 58
|
Если я вас правильно понял, Феликс, вы это имели в виду:
#include "stdafx.h" #include <math.h> #include <iostream> #include <iomanip> using namespace std; void main() { float y,x,a(1.0/2),b(1.19),c(-2.5); cout<< a; for(x=0.;x<=2.;x=x+.1) { if (x<.5) { y=a*x+b*cos(x); cout<<"x="<<fixed<<setprecision(2)< <x<<" y="<<y<<endl; } else if(x>=.5 && x<1) { y=b*pow(x,2)+c*sin(2*x); cout<<"x="<<x<<" y="<<y<<endl; } else cout<<"x="<<x<<" no decision"<<endl; } } Получается, как только убирается (cout<<a) то программа считает как и считало до этого) Ну а что там еще может быть вроде не придумал пока) |
29.07.2010, 13:46 | #10 |
Пользователь
Регистрация: 29.03.2010
Сообщений: 48
|
Как говаривал Бьярн Страуструп: "любой даже самый простой код можно усовершенствовать"
И с точки зрения этой программы это действительно паразитная проверка, но, с другой стороны, с точки зрения потренироваться в написании логических операций в ней можно найти и некоторую пользу. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ЗАДАЧКА В СИ | sfinks_murka | Общие вопросы C/C++ | 1 | 27.09.2009 18:54 |
Задачка | Claster | Помощь студентам | 2 | 24.09.2008 17:53 |
Задачка | kupulau | Общие вопросы C/C++ | 7 | 27.01.2008 18:32 |