Форум программистов, компьютерный форум CyberForum.ru

написал программу пользаясь этим форумом, но преподаватель забраковал её - C++

Восстановить пароль Регистрация
 
Nick51
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 7
27.09.2012, 18:53     написал программу пользаясь этим форумом, но преподаватель забраковал её #1
Помогите пожалуйста решить задачу. Я написал программу пользаясь этим форумом, но преподаватель забраковал её. Нужно,что бы табличка не разъезжалась, что бы не было переполнения, что бы программа не зацикливалась, и при очень маленьких числах(стремящихся к нулю) программа не считала их за ноль. Длинная арифметика не обязательна. Буду очень благодарен, если кто-то поможет.
Миниатюры
написал программу пользаясь этим форумом, но преподаватель забраковал её  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
28.09.2012, 09:33     написал программу пользаясь этим форумом, но преподаватель забраковал её #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <windows.h>
#include <iostream>
using namespace std;
int main(){
  float a, b, с, xn, xk, dx, F;
  cout << "a= "; cin >> a;
  cout << "b= "; cin >> b;
//итд
  for(float i=xn; i<xk; i+=dx)
  { 
//здесь сравниваем и выводим
/*
//это пример
 if ((a+b)<0) y = (a*a*a-b*b)/(b*b*b);
  else if ((a+b)>1) y = (a+b)/b;
  else y = (a*a-b*b*b)/(a*a*a);
*/
  }
  system("pause>nul");
}
Nick51
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 7
28.09.2012, 21:06  [ТС]     написал программу пользаясь этим форумом, но преподаватель забраковал её #3
Сейчас попробую.

Добавлено через 57 минут
Вообщем предыдущий способ не о чем. Вот мой вариант программы. Может, кто поможет доработать так, что бы не было зацикливания.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "iostream"
#include <iomanip>
 
using namespace std;
 
void main()
{
    double a, b, c, x, xE, dx, F;
    int A, B, C;
    long F_integer;
 
    cout << "a: ";
    cin >> a;
 
    cout << "b: ";
    cin >> b;
 
    cout << "c: ";
    cin >> c;
 
    cout << "x (Begin): ";
    cin >> x;
 
    cout << "x (End): ";
    cin >> xE;
 
loop:
    cout << "dx: ";
    cin >> dx;
 
    if((x < xE & dx < 0) | (x > xE & dx > 0) | (x != xE & dx == 0))
    {
        cout << "Nevernoe znachenie dx\n";
        goto loop;
    }
 
    cout << "___________________________________" << endl;
    cout << "|        X       |        F       |" << endl;
    cout << "___________________________________" << endl;
 
    while(true)
    {
        A = a; B = b; C = c;
 
        if(x < 0 & b != 0)
            F = -(a + x) * (a + x) + b;
        else
            if(x > 0 & b == 0)
                if(c != 0)
                    F = (x - a)/-c;
                else
                {
                    cout << left  << "| " << setw(15)  << x << "| " << setw(15) << "Error (../0)" << setw(1) << "|" << endl;
 
                    if(x == xE)
                        break;
                    else
                        x += dx;
 
                    continue;
                }
            else
                if(c != 0)
                    F = (1-x)/c;
                else
                {
                    cout << left  << "| " << setw(15)  << x << "| " << setw(15) << "Error (../0)" << setw(1) << "|" << endl;
 
                    if(x == xE)
                        break;
                    else
                        x += dx;
 
                    continue;
                }
 
        cout.unsetf(ios::fixed);
        cout << left  << "| " << setw(15)  << x;
 
        cout.setf(ios::fixed);
        cout.precision(5);
 
        F_integer = F;
 
        if(!(A | B | C) != 0)
            cout << "| " << setw(15) << F << setw(1) << "|" << endl;
        else
            cout << "| " << setw(15) << F_integer << setw(1) << "|" << endl;
 
        if(x == xE)
            break;
        else
            x += dx;
    }
 
    cout << "___________________________________" << endl;
    getchar();
    getchar();
}
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
29.09.2012, 08:54     написал программу пользаясь этим форумом, но преподаватель забраковал её #4
Цитата Сообщение от Nick51 Посмотреть сообщение
loop:
cout << "dx: ";
cin >> dx;
if((x < xE & dx < 0) | (x > xE & dx > 0) | (x != xE & dx == 0))
{
cout << "Nevernoe znachenie dx\n";
goto loop;
}
ой. Нехорошо так.
C++
1
2
3
4
do
{ cout << "dx: ";
    cin >> dx;
} while ((x < xE && dx < 0) || (x > xE && dx > 0) || (x != xE && dx == 0));
Добавлено через 1 минуту
и еще куча ошибок. Например здесь
Цитата Сообщение от Nick51 Посмотреть сообщение
if(x > 0 & b == 0)
Надо
C++
1
if(x > 0 && b == 0)
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.09.2012, 09:05     написал программу пользаясь этим форумом, но преподаватель забраковал её #5
Следующие условия эквивалентны:
C++
1
if(x > 0 && b == 0)
C++
1
if((x > 0) & (b == 0))
C++
1
if((x > 0) * (b == 0))
просто в некоторых случаях скобочки нужны дополнительные
Nick51
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 7
29.09.2012, 10:58  [ТС]     написал программу пользаясь этим форумом, но преподаватель забраковал её #6
Спасибо. Но зацикливание осталось. К примеру если xнач= -3, а конечное 2, то при шаге dx=3, он продолжает считать, даже после конца интервала.
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
29.09.2012, 14:34     написал программу пользаясь этим форумом, но преподаватель забраковал её #7
вместо
Цитата Сообщение от Nick51 Посмотреть сообщение
if(x == xE)
напиши
C++
1
if(x >= xE)
Nick51
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 7
29.09.2012, 14:48  [ТС]     написал программу пользаясь этим форумом, но преподаватель забраковал её #8
Заработало. Вроде бы се в порядке. В понедельник буду показывать, надеюсь одобрят.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2012, 20:42     написал программу пользаясь этим форумом, но преподаватель забраковал её
Еще ссылки по теме:

C++ Правильно ли я написал программу? Из книжки Павловская Щупак
написал программу, ошибка! C++
Написал программу, не могу понять правильно или нет C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Nick51
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 7
01.10.2012, 20:42  [ТС]     написал программу пользаясь этим форумом, но преподаватель забраковал её #9
К сожалению, при вводе больших чисел, таких как 2e70, происходит переполнение. Как его исправить?
Yandex
Объявления
01.10.2012, 20:42     написал программу пользаясь этим форумом, но преподаватель забраковал её
Ответ Создать тему
Опции темы

Текущее время: 10:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru