Помогите Пожалуйста Найти Ошибку В Коде

Тема в разделе "C/C++/C#", создана пользователем Lizzz, 26 янв 2013.

  1. Lizzz

    Lizzz New Member

    Регистрация:
    26 янв 2013
    Сообщения:
    0
    Симпатии:
    0
    Всем доброго времени суток! Нужна помощь в поиске ошибок в написанной мною программе. Недавно только начала изучение С++, поэтому просьба не судить строго.
    Условие задачи: Переменной t присвоить значение true, если в массиве нет нулевых элементов и при этом положительные элементы чередуются с отрицательными и значение false в противном случае.

    #include <iostream>
    #include <math.h>

    using namespace std;
    int main()
    {
    int i;
    int a[5];
    bool t;
    for (i=0; i<5; i++)
    {
    cout <<"Введите элемент массива: ";
    cin >> a ;
    }
    for (i=0; i<5; i++)
    {
    if (a*a[i+1]>=0) t = false;

    else t = true;}
    cout<< t <<endl;
    return 0;
    }

    Не пойму, в чем ошибка, переписывала программу несколько раз разными способами, все равно не работает. При вводе всех единиц выдает true, работает верно только если ввести все нули или несколько нулей.
    Помогите пожалуйста, заранее большое спасибо.
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Код (Text):
    t = true;

    for (int i = 0; i < n && t; ++i)
    if (0 == a[i])
    t = false;

    for (int i = 1; i < n && t; ++i)
    if (a[i] * a[i - 1] > 0)
    t = false;

    std::cout << t;
    не проверял, тут не очень хороший, но зато простой и наглядный вариант

    Добавлено:
    Код (Text):
    for (i=0; i<5; i++)
    {
    if (a[i]*a[i+1]>=0) t = false;

    else t = true;}
    значение t у вас полностью определяется последним элементом списка - вы его на каждой итерации вычисляете.

    вы там берете a[i+1], и при i равном 4 будет взят a[5] - но у вас массив всего из 5 элементов, вы вычисляете свое t из мусора, что хранится за массивом (скорее всего там большие отрицательные числа, поэтому в вашем случае при вводе всех единиц оно так и считало :)
     
  3. Lizzz

    Lizzz New Member

    Регистрация:
    26 янв 2013
    Сообщения:
    0
    Симпатии:
    0
    Спасибо Вам огромное!!! Вы мне очень помогли :)
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    а пожалсто, заходите еще )
     
Загрузка...
Похожие Темы - Помогите Пожалуйста Найти
  1. OlgaZag
    Ответов:
    1
    Просмотров:
    1.292
  2. OlgaZag
    Ответов:
    0
    Просмотров:
    523
  3. Oleg333
    Ответов:
    0
    Просмотров:
    1.338
  4. limbra
    Ответов:
    3
    Просмотров:
    46
  5. uxbmw3w
    Ответов:
    0
    Просмотров:
    68

Поделиться этой страницей