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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Ybr
1 / 1 / 0
Регистрация: 05.11.2009
Сообщений: 17
#1

Образует ли набор чисел возрастающую последовательность - C++

05.11.2009, 10:21. Просмотров 1139. Ответов 3
Метки нет (Все метки)

Доброго времени суток!
Язык: С++
Задача: Дано целое число N и набор из N вещественных чисел. Проверить, образует ли данный набор возрастающую последовательность. Если образует, вывести True, если нет - False.
Кстати: нельзя пользоваться массивами
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
43
44
45
46
47
48
49
50
#include "stdafx.h"
#include "stdio.h"
#include <iostream.h>;
#include "windows.h";
#include "conio.h";
 
void main()
{
    int N, i;//i - счетчик
    float x, buf;//x - вводимые числа
    bool flag, final_flag;//flag - показывает, что
           //(текущее значение <= предыдущему),
           //final_flag - показывает, что хотя 1 раз flag был равен false
    char a[255], b[255];//просто вспомогательные строки
 
    CharToOem("Введите число N = ",a);
    cout << a;
    cin >> N;
    cout << "\n";
 
    final_flag=true;
 
           //Это вынес отдельно, чтобы потом у buf было нормальное
           //значение с самого начала цикла for (конкретно, строка 31)
    CharToOem("Введите вещественное число № 1",a);
    cout << a << "\n";
    cin >> x;
 
    for (i=2;i!=N+1;i++)
    {
        buf = x;
 
        CharToOem("Введите вещественное число № ",a);
        cout << a << i << "\n";
        cin >> x;
        
        if (x >= buf) flag=true;
        else flag=false;
 
        final_flag = final_flag*flag;//если flag=0 хотя бы 1 раз в
                      //предыдущем if (строки 37, 38), то final_flag всегда будет 0.
 
    }
 
    cout << "\n";
    if (final_flag=true) cout << "True";
    else cout << "False";
 
    getch();
}
Прога выводит только True. К примеру: N=3, числа: 1, 2, 3; N=3, числа 1, 0, 2.
Самое смешное: проверял второй набор (1, 0, 2) дебаггером (F10), и по его результатам переменная final_flag равна 0 (в самом конце, где условие на вывод True/False). То есть по-любому должен выводиться False, однако не выводится.

Поскажите, пожалуйста, в чем ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2009, 10:21     Образует ли набор чисел возрастающую последовательность
Посмотрите здесь:
Проверить, образует ли данный набор чисел возрастающую последовательность C++
Проверить, образует ли заданный набор возрастающую последовательность C++
C++ Если данный набор из N вещественных чисел образует убывающую последовательность, то вывести 0
C++ Дано 20 действительных чисел. Определить образуют ли они возрастающую последовательность
C++ В массиве целых чисел найти максимально длинную возрастающую последовательность
.Определить количество чисел последовательности, у которых цифры образуют возрастающую последовательность. C++
Dev-C++ Дано n вещественных чисел. Определить, образуют ли они возрастающую последовательность C++
C++ Найти количество чисел, цифры которых образуют строго возрастающую последовательность
Дан массив действительных чисел. Удалить все фрагменты массива, которые образуют возрастающую последовательность. C++
Определить, представляет ли собой заданный набор вещественных чисел убывающую последовательность C++
C++ Выяснить, образуют ли числа возрастающую последовательность
C++ Определить: Составляют ли числа возрастающую последовательность

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
05.11.2009, 11:20     Образует ли набор чисел возрастающую последовательность #2
внимание строка 46

C++
1
2
 if (final_flag=true) cout << "True";  // == - это сравнение, а = - это присваивание
        else cout << "False";
в строке 46 замени = на == в общем
Ybr
1 / 1 / 0
Регистрация: 05.11.2009
Сообщений: 17
05.11.2009, 12:45  [ТС]     Образует ли набор чисел возрастающую последовательность #3
Спасибо, TanT! Тогда вдогонку вопрос про исключения

Задача очень простая – на любую исключительную ситуацию должно выдаваться одно и тоже сообщение.
Прочитал статью на codenet (+интернеты), но не все осталось ясным. К примеру, есть очень простой код (Visual C++ 2008):

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
#include "stdafx.h"
#include "stdio.h"
#include <iostream>
#include "windows.h";
#include "conio.h";
#include "math.h";
 
using namespace std;
 
void main()
{
    float s,n;
 
    cout << "vvedite chislo" << endl;
    cin >> n;
 
    try
    {
        s=acos(n);
    }
    catch (...)
    {
        cout << "Proizoshla oshibka!" << endl;
    }
 
    getch();
}
При запуске сообщение "Proizoshla oshibka!" не выдается.
Однако если сделать n типа int и написать s=1/n, то сообщение замечательно выводится.

Всего 2 вопроса:
1. Где ошибка в этом коде?
2. Допустим (гипотетически), я всю свою программу запихну в блок try. Соответственно, если у меня где-то будут возникать исключения, будет выдаваться сообщение, записанное в catch, так? Из этого:
- Пусть найдется исключение в строке 10. Программа выдаст сообщение. А дальше она продолжит выполняться?
- Пусть я хочу вывести на экран мою переменную s. Если ошибок нет, то все гладко. А если ошибка будет, то, получается, сначала выведется значение s (что-то типа 1.#INF0), а уже потом сообщение об ошибке. Как такой ситуации можно избежать? (т.е чтобы выводилось только сообщение об ошибке)
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
05.11.2009, 13:38     Образует ли набор чисел возрастающую последовательность #4
- Пусть найдется исключение в строке 10. Программа выдаст сообщение. А дальше она продолжит выполняться?
Нет
Как такой ситуации можно избежать? (т.е чтобы выводилось только сообщение об ошибке)
попробуйте через break;
Yandex
Объявления
05.11.2009, 13:38     Образует ли набор чисел возрастающую последовательность
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru