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

Неправильно работает код - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как экспортировать переменную (константу) из dll http://www.cyberforum.ru/cpp-beginners/thread617379.html
Понимаю что очень глупый вопрос, но нету времени.. Как экспортировать константу и потом ее получить, динамически подгрузив библу. Функции экспортирую так #ifdef __cplusplus #define EXPORT extern "C" __declspec (dllexport) #else #define EXPORT __declspec (dllexport) #endif
C++ Программа в виде шаблона функции помогите оформить программу в виде шаблона функции, пожалуйста! #include <iostream> using namespace std; int main() { const int size = 4; http://www.cyberforum.ru/cpp-beginners/thread617377.html
Нужна программа с классами C++
Здравствуйте. Нужна программа с классами, и пояснением что она делает.. абсолютно любая и рабочая Заранее спасибо!
C++ В массиве М(45) найти максимальный
В массиве М(45) найти максимальный среди отрицательных элементов и число нулевых элементов стоящих после него
C++ Ввести строку А с клавиатуры http://www.cyberforum.ru/cpp-beginners/thread617343.html
1)Ввести строку А с клавиатуры состоящую из заглавных русских букв. Определить каких букв больше: гласных или согласных и на сколько. Вывести все слова заканчивающиеся на букву "а". 2)Удалить все слова заканчивающиеся на "ия" из введенной строки. ПОЖАЛУЙСТА!!!
C++ Работа с классами Здравствуйте, я здесь первый раз, если что извините, за неккоректность, ввода или задания вопроса Я написал (например): class Figure { bool visible; protected: int color; int type, x, y; virtual void draw()=0; подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.07.2012, 12:18     Неправильно работает код
Цитата Сообщение от big_vitaliy Посмотреть сообщение
или просто закрывается само окно
Для начала, чтобы cin.get() в конце программы работал (после ошибки ввода в cin >>), добавьте перед return 0 (который должен быть, ведь в коде main() возвращает int) такую конструкцию:
C++
1
2
3
4
5
cin.clear();
    while (cin.get() != '\n');
    
    cin.get();
    return 0;
или вместо cin.get() используйте system("pause");
Закрытие окна у вас происходит при ошибке ввода в cin >>. После этого cin.get() уже не работает.

Добавлено через 40 минут
В таком коде:
C++
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
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout<<"Введите число "<<endl;
double n;
int k=3;
double x1=1,x2=2,x3=1.6667;
cin>>n;
if(n>1)
{cout<<"К равно 2"<<endl;
cout<<"Первое число равно 2 "<<endl;
cout<<"Второе число равно 1";}
if(n>=0.3333 && n<=1)
{cout<<"К равно3 "<<endl;
cout<<"Первое число равно 1.6667 "<<endl;
cout<<"Второе число равно 2";}
 else
{ while(abs(x3-x2)<=n)
{x1=x2;
x2=x3;
x3=(x1+2*x2)/3;
k++;        }
cout<<"К равно "<<k<<endl;
cout<<"Первое число равно "<<x3<<endl;
cout<<"Второе число равно"<<x2;
    
    }
    cin.clear();
    while (cin.get() != '\n');
    cin.get();
    
    return 0;
}
, если вводится число n > 1, будет заход в тело первого if. После выхода из него, будет проверка во втором if, и, так как условие не выполняется, то произойдёт заход в else (что, как я понимаю, при n > 1 не должно быть) и зависание там. Чтобы этого не было, нужно написать так:
C++
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
cout << "Введите число "<<endl;
double n;
int k = 3;
double x1 = 1, x2 = 2, x3 = 1.6667;
cin >> n;
if(n > 1)
{
    cout << "К равно 2" << endl;
    cout << "Первое число равно 2 " << endl;
    cout << "Второе число равно 1";
}
if (n >= 0.3333 && n <= 1)
{
    cout << "К равно3 " << endl;
    cout << "Первое число равно 1.6667 " << endl;
    cout << "Второе число равно 2";
}
if (n < 0.3333)
{ 
 while (abs(x3 - x2) <= n)
 {
    x1 = x2;
    x2 = x3;
    x3 = (x1 + 2 * x2) / 3;
    k++;
 }
cout << "К равно " << k << endl;
cout << "Первое число равно " << x3 << endl;
cout << "Второе число равно " << x2;
}
    cin.clear();
    while (cin.get() != '\n');
    cin.get();
    
    return 0;
}
Добавлено через 40 минут
abs(x3 - x2) = 0.3333 . Если написано так:
C++
1
2
3
4
if (n < 0.3333)
{ 
 while (abs(x3 - x2) <= n)
{...}
, то цикл while, который, по идее, должен работать, если вводится n < 0.3333, не сработает ни разу. Может нужно было так написать:
C++
1
while (abs(x3 - x2) >= n)
Добавлено через 1 час 40 минут
Само задание можно нормально написать. Из этого :
вот задание Дано вещественное число ε (> 0). Последовательность вещественных
чисел AK определяется следующим образом:
A1 = 1, A2 = 2, AK = (AK−2 + 2·AK−1)/3, K = 3, 4, .
Найти первый из номеров K, для которых выполняется условие
|AK − AK−1| < ε, и вывести этот номер, а также числа AK−1 и AK.
код при маленьких значения Н или просто закрывается само окно или выводит неверный результат
там переменная Н типа double
ЗАРАНЕЕ СПАСИБО!!!!
ничего не понять. Какое H? Где оно в коде? Эпсилон - в коде это что? Сама последовательность как пишется? АК - 1 как понимать: А уменьшается на 1 или К уменьшается на 1. Если тудно написать, то скрин, или ссылку, где правильно написано.

Добавлено через 1 час 53 минуты
Этот код должен быть правильным:
C++
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
cout << "Введите число n > 0 "<< endl;
double n;
int k = 3;
double x1 = 1, x2 = 2, x3 = 1.6667;
cin >> n;
if(n > 1)
{
    cout << "К равно 2" << endl;
    cout << "Первое число равно 1 " << endl;
    cout << "Второе число равно 2";
}
if (n >= 0.3333 && n <= 1)
{
    cout << "К равно 3 " << endl;
    cout << "Первое число равно 2" << endl;
    cout << "Второе число равно 1.6667";
}
if (n < 0.3333)
{ 
  while (abs(x3 - x2) >= n)
  {
     x1 = x2;
     x2 = x3;
     x3 = (x1 + 2 * x2) / 3;
     k++;
  }
cout << "К равно " << k << endl;
cout << "Первое число равно " << x2 << endl;
cout << "Второе число равно " << x3;
}
    cin.clear();
    while (cin.get() != '\n');
    cin.get();
    
    return 0;
}
 
Текущее время: 12:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru