Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > помогите найти ошибку


Автор: Telepyz 18.10.2008, 02:28
вот код
Код

// v9.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <cmath>

using namespace std;

    const int n=20;
    int Mas[n];    

void main()
{    

    int k=0;
    cout<<"Massiv Mas(do):    ";
    for (int i=0; i<n; i++)
    {
        Mas[i]=rand()%10-5;
        if (Mas[i]==0) k++;
        cout<<Mas[i]<<' ';
    }
    cout<<'\n'<<k<<'\n';

    for (int i=0; i<n-1; i++)
    {
        if (Mas[i]==0&&i<n-k)
        {
            for (int j=i; j<n; j++)
            {
                Mas[j]=Mas[j+1];
            }
            Mas[n]=0;
            i--;
        }
    }

    cout<<"Massiv Mas(posle): ";
    for (int i=0; i<n; i++)
        cout<<Mas[i]<<' ';
    cout<<'\n';    
}

если переношу
    const int n=20;
    int Mas[n];
в локальные то выдает ошибку
предпоследний элемент равен минимальный интежер

помогите

Добавлено через 3 минуты и 3 секунды
вот скрин

Автор: dumb 18.10.2008, 03:13
Цитата(Telepyz @  18.10.2008,  03:28 Найти цитируемый пост)
            Mas[n]=0;
выход за границу. индекс посл.эл-та = n-1

Автор: Telepyz 18.10.2008, 03:23
благодарю

Автор: vinick 18.10.2008, 04:31
Код

for (int j=i; j<n; j++)
            {
                Mas[j]=Mas[j+1];
            }

вот еще один выход за границы, при j=n-1


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)