|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Помогите найти ошибки в решении выражения |
|
|
C/C++ - [решено] Помогите найти ошибки в решении выражения
|
![]() Пользователь Сообщения: 33 |
Составить программу по вычислению заданного выражения тремя циклами. Все неизвестные переменные вводятся с клавиатуры. Результаты вычислений выдать на экран и в файл.
http://forum.oszone.net/attachment.p...1&d=1372325496 вот что получилось у меня: #include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <iostream> #include <math.h> #include <fstream> using namespace std; ofstream out ("text.txt"); void main() { cout << "Input n (n>5)\n"; int n,i; cin >> n; float so=0,ph1=1,ph2=1; float *a = new float[n]; float *b = new float[n]; float *p1 = new float[n]; float *p2 = new float[n]; for (i=0;i<(n-5);i++) { a[i]=rand()%100-35; b[i]=rand()%100-50; } for (i=1;i<(n-3);i++) { ph1=ph1*a[i]; p1[i]=ph1; } for (i=0;i<(n-3);i++) { ph2=ph2*b[i+3]; p2[i]=ph2; so=so+(p1[i]-p2[i]-5); } printf("%2.3f",so); out.close(); getch(); } |
|
Отправлено: 13:33, 27-06-2013 |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать Цитата 399Dmitr933:
Цитата 399Dmitr933:
Вообще сделайте так: Запишите выражение, пронумеруйте порядок действий, а когда будете писать код, то в комментариях укажите этот самый номер. Все ориентироваться и понимать будет проще. Цитата 399Dmitr933:
|
|||
------- Отправлено: 15:35, 27-06-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 121
|
Профиль | Отправить PM | Цитировать Произведения можно считать в одном цикле, а вот сумму нужно вынести в отдельный. Переменные ph1 и ph2 обязательно нужно инициализировать. Нужно так же проверить инициализацию переменной счетчика и условие выхода в каждом цикле.
Цитата lxa85:
|
|
Отправлено: 17:11, 27-06-2013 | #3 |
![]() Пользователь Сообщения: 33
|
Профиль | Отправить PM | Цитировать Цитата lxa85:
float so=0,ph1=1,ph2=1; float *a = new float[n]; float *b = new float[n]; float *p1 = new float[n]; float *p2 = new float[n]; Цитата:
Цитата lxa85:
Цитата torauma:
|
||||
Отправлено: 16:14, 29-06-2013 | #4 |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать Цитата 399Dmitr933:
Нахождение строки в цикле мне все равно не понятно. Здесь ошибка. Что значит "По заданию три цикла" ? Три цикла всего? На всю программу? Или три цикла на решение (решение не учитывает в себе инициализацию переменных[подготовку входных данных]!) Цитата 399Dmitr933:
---- Послушайте, а что это вообще за бред? Причем здесь указатели? Проще то никак нельзя объявить? Зачем вам работа с памятью, если вы только циклы начали проходить? Цитата 399Dmitr933:
Дальше самое решение. Ладно, бог с ней, инициализацией. Допустим с горем пополам память выделили. Цитата 399Dmitr933:
По хорошему тут надо спросить. Где именно должны формироваться значения a[i], b[i]? До циклов счета произведений ИЛИ во время счета циклов произведений? Цитата 399Dmitr933:
Цитата 399Dmitr933:
Далее хорошо бы уточнить, как именно соотносится переменная i=1..n в сумме, с i=1..(n-3) и i=3..(n) в произведениях, и в ai,bi ? Допустим соотносятся верно и ошибок нет, и я просто паникую. Допустим. Какой смысл считать 5 раз произведения, если от i (что в сумме) не зависит получаемое значение в скобках? Может как то к умножению перейти? ---- Еще раз: Записать выражение, пронумеровать порядок действий, в комментариях к циклам указать номер действия!(Это не прихоть, это объязаловка) Проверить, что порядок выполняется правильно! Т.к. сейчас вы просто что-то написали, не понимая "что именно" вы написали. Строки с циклами (т.е. все что между float *p2 = new float[n]; и printf("%2.3f",so);) стереть, забыть и написать решение заново. Не забывая про нумерацию действий! |
|||||||
------- Последний раз редактировалось lxa85, 29-06-2013 в 18:33. Отправлено: 18:26, 29-06-2013 | #5 |
![]() Пользователь Сообщения: 33
|
Профиль | Отправить PM | Цитировать #include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <iostream> #include <math.h> #include <fstream> #include <time.h> using namespace std; ofstream out ("text.txt"); void main() { srand(time(0)); float n,i; float a=rand()%20,b=rand()%5; float pro1,pro2,sym,skobka; cout << "Input n \n"; cin >> n; //////////////////////////// pro1=1; for (i=1;i<=(n-3);i++) { pro1=pro1*(a*i); } ///////////////////////////// pro2=1; for (i=3;i<=n;i++) { pro2=pro2*(b*i); } /////////////////////////////// skobka=0; skobka=pro1-pro2-5; /////////////////////////////// sym=0; for (i=1;i<=n;i++) { sym=sym+skobka; } /////////////////////////////// out << a; cout << "\na = " << a; // out << b; cout << "\nb = " << b; // out << pro1; cout << "\npro1 = " << pro1; // out << pro2; cout << "\npro2 = " << pro2; // out << skobka; cout << "\nskobka = " << skobka; ///////////////////////////////////// out << "\nREZYL'TAT " << sym; cout << "\nREZYL'TAT " << sym; out.close(); getch(); } попробЫвал иначе у меня просто в чём проблема я учил ВБ 2010, а сейчас С++ 6ой версии. вот и сижу почти всё подряд гуглю. и пока что си в голове хреново укладывается |
Последний раз редактировалось 399Dmitr933, 29-06-2013 в 20:05. Отправлено: 19:55, 29-06-2013 | #6 |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать 399Dmitr933,
Цитата 399Dmitr933:
Цитата 399Dmitr933:
---- В остальном похоже на правду. Хоть и неказисто. |
||
------- Отправлено: 20:18, 29-06-2013 | #7 |
![]() Пользователь Сообщения: 33
|
Профиль | Отправить PM | Цитировать Цитата lxa85:
не подскажите как переделать? |
|
Отправлено: 20:50, 29-06-2013 | #8 |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать Цитата 399Dmitr933:
![]() От банального "лень", среднего "диплом у меня уже есть", и далее куда то туда, в облака и высокие цели. |
|
------- Отправлено: 21:26, 29-06-2013 | #9 |
Пользователь Сообщения: 121
|
Профиль | Отправить PM | Цитировать Цитата 399Dmitr933:
И кстати, зачем вы используете объявление кучи переменных в одной строке? Лучше не жалеть строк. Цитата:
Цитата:
Цитата:
Цитата:
Сам алгоритм вычисления тут довольно простой. Сначала считаете произведения. Как я уже упоминал, в данном случае их можно посчитать в одном цикле. Затем считаете сумму. Самое интересное, что суммируемое выражение тут не зависит от i. Так что можно просто вычислить выражение в скобках и умножить на n. Попробуйте сначала нарисовать блок-схему или записать алгоритм псевдокодом, а потом уже переносить это на C++. |
|||||
Отправлено: 09:18, 01-07-2013 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Kerio - Помогите в решении проблемы | scorpion456 | Тест-форум | 2 | 19-11-2011 09:49 | |
Разное - Помогите в решении задач..Pascal | Retark | Программирование и базы данных | 2 | 06-05-2010 14:37 | |
Прочее - [решено] нестандартное применение ADSL - модема --- помогите в решении | courageous | Сетевые технологии | 3 | 12-02-2010 20:43 | |
Delphi - Срочно!Не могу найти ошибки.Помогите!!! | VM007 | Программирование и базы данных | 5 | 04-06-2009 07:57 | |
Помогите в решении ошибки!!! | мразь | Хочу все знать | 5 | 31-08-2007 10:18 |
|