Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Ambient_in_My_Tank

Run-time error при некоторых размерах массива (Visual C++ 2008))

19.03.2009, 13:10. Показов 1389. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите найти ошибку в коде. При некоторых размерах массива (2*2, 100*100) программа не исполняется. При некоторых (49*49, 79*79) происходит запись в массив неверных значений. Если протащить массив 100*100 через дебагер, то он в итоге заполняется правильно.

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <fstream>
 
using namespace std;
 
int main()
{
  int m;
 
  ifstream input("input.txt");
  input>>m;
  input.close();
    
  int i, j, c, k=-1, a[101][101];
 
  i=1;
  j=1;
  a[1][1]=1;
  c=1;
 
  while(m*m-i*j)
  {
    if(((i==1)||(i==m))&&!(j==m))
    {
      j+=1;
      k*=-1;
      c++;
      a[i][j]=c;
 
      i+=k;
      j+=-k;
      c++;
      a[i][j]=c;//Unhandled exception at 0x013316ae in fstream.exe: 0xC0000005: Access violation writing location 0xff9de298.
    }
    else
    {
      if((j==1)||(j==m))
      {
    i+=1;
    k*=-1;
    c++;
    a[i][j]=c;
 
    i+=k;
    j+=-k;
    c++;
    a[i][j]=c;
      }
      else
      {
    i+=k;
    j+=-k;
    c++;
    a[i][j]=c;//Unhandled exception at 0x013212ca in fstream.ex 0xC0000005: Access violation writing location 0xff23cbe8.
      }
    }
  }
 
  ofstream output("output.txt");
  for(i=1; i<=m; i++)
  {
    for(j=1; j<m; j++)
      output<<a[i][j]<<" ";
    output<<a[i][m]<<endl;
  }
  output.close();
  
  return 0;//Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
}
Приведу условие задачи:

Квадратный зал со стороной N разделен на клетки размером 1×1. Этот зал моет робот. Для эффективной мойки он двигается по диагоналям. Сначала он находится в левом верхнем углу зала, потом перемещается вправо на одну клетку, затем идет по диагонали вниз до конца, потом переходит в ближайшую первую клетку следующей диагонали (смотрите пример), и продолжает до тех пор, пока весь зал не будет помыт.

Входные данные
Во входном файле записано целое число N – размер стороны зала (2 ≤ N ≤ 100).

Выходные данные
В выходной файл нужно вывести по строкам квадратную матрицу размером N×N, в которой пронумерованы клетки зала в порядке обхода их роботом.

Пример
input.txt
5

output.txt

1 2 6 7 15
3 5 8 14 16
4 9 13 17 22
10 12 18 21 23
11 19 20 24 25

Добавлено через 19 минут 35 секунд
Чёрт, я нашёл ошибку.

Добавлено через 2 часа 29 минут 8 секунд
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
51
52
53
54
55
56
57
#include <fstream>
 
using namespace std;
 
int main()
{
    int m;
 
    ifstream input("input.txt");
    input>>m;
    input.close();
    
    int i, j, c, k, a[101][101];
 
    i=1;
    j=1;
    k=-1;
    c=1;
    a[1][1]=c;
 
    while(m*m-i*j)
    {
        if(  ( (i==1)||(i==m) ) && !(j==m)  )
        {
            j+=1;
            c++;
            a[i][j]=c;
            k*=-1;
        }
        else if( (j==1)||(j==m) )
        {
            i+=1;
            c++;
            a[i][j]=c;
            k*=-1;
        }
 
        if(m*m-i*j)
        {
            i+=k;
            j+=-k;
            c++;
            a[i][j]=c;
        }
    }
 
    ofstream output("output.txt");
    for(i=1; i<=m; i++)
    {
        for(j=1; j<m; j++)
            output<<a[i][j]<<" ";
        output<<a[i][m]<<endl;
    }
    output.close();
 
    return 0;
}
Добавлено через 18 минут 35 секунд
Таки умудрился выйти за пределы массива. Не делайте так.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.03.2009, 13:10
Ответы с готовыми решениями:

Ошибка Run-time error '381' при использовании массива
Здравствуйте, уважаемые гуру. Есть Форма с ComboBox'ом. При инициализации считывается с диапазона ячеек значения, проводятся некоторые...

Ошибка Run-time error '1004' при записи массива на лист
Добрый день Подскажите почему вылетает такая ошибка Run-time error '1004' Application-defined or object-defined error в строке ...

Visual Basic выдает ошибку run-time error 11 division bu zero
Помогите может чего напутала!!! Раньше работало, а теперь выдает ошибку &quot;run-time error 11 division bu zero&quot; Public Sub...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2009, 13:10
Помогаю со студенческими работами здесь

Ошибка 'Run-time error 458. Variable uses an Automation type not supported in Visual Basic'.
Сделал из проекта файл .exe используя 'Compile into Native code'. На компьютерах, где есть VB все работает как надо. Где его нет требует...

Run-time error при выполнении .UpdateBatch
Подскажите пожалуйста в чем проблема когда виполняю .UpdateBatch возникает Run-time error. Но даные нормально сохронються в таблице.

Run-time error'9' при запуске макроса
Run-time error'9' при запуске макроса. 35 строку в выделяет. Помогите.. Вот код: Dim k, StrokaParu, Z As Integer Dim...

Run-time error при сжатии базы данных
Добрый день! Подскажите, пожалуйста, как упредить ошибку 3045, возникающую при запуске команды на сжатие других закрытых баз данных...

Run-time error при заполнении таблицы из файла
Доброго времени суток. Программа ищет отчеты из файла Data.dat (алгоритм рабочий) В итоге в массиве fd1 собираются отчеты для заполнения...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru