Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2014, 21:02   #1
Степанн
Новичок
Джуниор
 
Регистрация: 30.11.2014
Сообщений: 2
По умолчанию Помогите с решением задачи

Где ошибка(неправильно работает на третьем повторении)?


Код:
#include <iostream>

using namespace std;

int main()
{
    int sizem = 0, a;
    int *mas = new int[1];

    for( ; ; )
    {
     cout <<"Enter number: ";
     cin >> mas[sizem];

     if(mas[sizem]>0)
     {
         cout << mas[sizem] <<" "<<endl;
         sizem++;
         break;
     }
     continue;
    }

    for( ; ; )
    {
        cout <<"Enter number: ";
        cin >> a;
        cout << endl;

        if(a>0)
        {
            int *mast = new int[sizem];

            for(int i=0;i<sizem;i++)
            {
                mast[i] = mas[i];
            }

            delete[] mas;

            int *mas = new int[sizem+1];

            for(int i=0;i<sizem;i++)
            {
                mas[i] = mast[i];
            }
            mas[sizem] = a;

            for(int i=0;i<(sizem+1);i++)
            {
                cout << mas[i] <<" ";
            }
             delete[] mast;
            sizem++;
        }
    }
    delete[] mas;
    return 0;
}
From Stilet: Смотрю оформить код по правилам религия не дает?

Последний раз редактировалось Stilet; 30.11.2014 в 21:09.
Степанн вне форума Ответить с цитированием
Старый 30.11.2014, 21:03   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Используйте теги для форматирования кода (#)
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 30.11.2014, 23:36   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,725
По умолчанию

Код:
    cin >> mas[sizem];

     if(mas[sizem]>0)
     {
         cout << mas[sizem] <<" "<<endl;
         sizem++;
Запись, чтение за границами массива.

Код:
mast[i] = mas[i];
Чтение за границами.
p51x вне форума Ответить с цитированием
Старый 01.12.2014, 22:26   #4
Степанн
Новичок
Джуниор
 
Регистрация: 30.11.2014
Сообщений: 2
Сообщение

Наконец-то разобрался. Нет никакого выхода за пределы массива, просто надо было в начале программы написать int *mast; , а в самом цикле писать уже без "int *".
Степанн вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с решением задачи в C++ Bruges Помощь студентам 1 15.11.2014 00:13
Помогите с решением задачи! Anuta Общие вопросы Delphi 4 26.06.2008 20:26
Помогите с решением задачи!Please! Инзия Помощь студентам 3 11.03.2007 07:50