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


Автор: Savior 31.5.2009, 18:31
Помогите, пожалуйста, разобраться. Надо сделать такое задание:
дан двумерный массив. Подсчитать кол-во столбцов, имеющих хотя бы 1 нулевой элемент. Я вообще-то пишу в основном на Pascal, а тут надо на C++. В VisualStudio 6.0 создал консольное приложение и написал след. код:
// Eighth.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"
#include "math.h"

int main(int argc, char* argv[])
{
    const n=5,m=5;
    int mas[5][5],s=0,i,j;
    
    for (i=1;i<=5;i++)
    {
        for (j=1;j<=5;j++)
        {
            cout<<"vvedite element ";
            cin>>mas[i][j];
        }
    }
    for (i=1;i<=5;i++)
    {
        for (j=1;j<=5;j++)
        {
            if (mas[j][i]==0)
            {
                s++;
                break;
            }
        }
    }
    cout<<"s="<<s;
  return 0;
}
Программа компилируется, всё вроде нормально, но после того, как я ввожу все элементы массива, она вылетает, показывая всем известное сообщение, что приложение будет закрыто (это которое с двумя кнопками: отправить-не отправлять).
В чём ошибка - ума не приложу. Если это где-то у кого-то было, дайте, пожалуйста, ссылку. Заранее спасибо

Автор: gosn1ck 31.5.2009, 18:37
ты обращаешься к элементу массива, которого не существует
используй кнопку код

Автор: Rififi 31.5.2009, 18:38
в циклах условие не <=, а <

Добавлено через 1 минуту и 18 секунд
и индексация с 0.

В чём ошибка - ума не приложу
ответ найдешь в любой книжке по C/C++, раздел "Массивы"

Автор: mes 31.5.2009, 18:40
Цитата(Rififi @  31.5.2009,  17:38 Найти цитируемый пост)
в циклах условие не <=, а < 

и индексы начинаются с 0, а не с 1 как в паскале 

Автор: Savior 31.5.2009, 18:42
Сделал индексы с нулевого и всё получилось. Трудно всё-таки сразу переходить от одного языка к другому. Спасибо огромное!!!

Автор: andrew_121 31.5.2009, 18:48
Цитата(mes @  31.5.2009,  18:40 Найти цитируемый пост)
а не с 1 как в паскале

А в паскале с 1-ы ? smile 
А килобайт там случаем не 1000 равен?


Цитата(Savior @  31.5.2009,  18:42 Найти цитируемый пост)
всё получилось

Тему пометь решенной.

Автор: azesmcar 31.5.2009, 18:52
Цитата(andrew_121 @  31.5.2009,  18:48 Найти цитируемый пост)
А в паскале с 1-ы ? smile 

Такая страшная новость? smile 
огорчу, не только в паскале, во всех подобных языках - ADA, Delphi (хотя это практически тот же паскаль), PL/SQL, ColdFusion. Это из тех что я знаю, но я уверен что это чуть ли не половина всех языков.

Цитата(andrew_121 @  31.5.2009,  18:48 Найти цитируемый пост)
А килобайт там случаем не 1000 равен?

 smile 

Автор: mes 31.5.2009, 19:28
Цитата(andrew_121 @  31.5.2009,  17:48 Найти цитируемый пост)
А в паскале с 1-ы ? smile 

По умолчанию, да. Но можно определить чтоб он начинался с 0 или с любого другого индекса.
можно задать свой диапозон - array[10..99]  или даже так ['a'..'z']
 smile 

Автор: andrew_121 31.5.2009, 19:49
Цитата(mes @  31.5.2009,  19:28 Найти цитируемый пост)
можно задать свой диапозон - array[10..99]  или даже так ['a'..'z']

Во замутили smile  Неужели так проще...?

Автор: mes 31.5.2009, 21:28
Цитата(andrew_121 @  31.5.2009,  18:49 Найти цитируемый пост)
Во замутили smile  Неужели так проще...? 

проще или сложней трудно сказать, смотря с какой стороны смотреть..
почитать о том, что еще бывает можно например здесь :
http://solidbase.karelia.ru/edu/zonna/5_pascal_4.htm

Автор: andrew_121 31.5.2009, 21:45
mes, Боюсь smile  А вдруг ассоциации начнутся smile 

Автор: kemiisto 31.5.2009, 21:47
Цитата(azesmcar @  31.5.2009,  16:52 Найти цитируемый пост)
огорчу, не только в паскале, во всех подобных языках 

azesmcar, а я тебя порадую. В Оберонах с 0. smile 

P.S. andrew_121, знаете, как опасно для программиста ограничивать себя только одним языком. А если это ещё и С++...

Цитата(andrew_121 @  31.5.2009,  17:49 Найти цитируемый пост)
Во замутили 

 smile И я слышу это от С++ программиста!? Да...

Автор: azesmcar 31.5.2009, 21:59
Цитата(kemiisto @  31.5.2009,  21:47 Найти цитируемый пост)
azesmcar, а я тебя порадую. В Оберонах с 0. smile 

Сколько радости smile 

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