Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Графический вьювер http://www.cyberforum.ru/cpp-beginners/thread26682.html
Плз, помогите, где можно найти информацию и отдельные куски кода для создания графического вьювера позволяющего просматривать *.psd файлы и стандартные графические (BMP, GIF, JPG...).
C++ mod (на C) нужно проверить число на нечётность я сделал так: if (k mod 2 == 1) <действия> но компилятор выдал ошибку типа:syntax error before "mod" PS: k - целого типа http://www.cyberforum.ru/cpp-beginners/thread26671.html
C++ первая програмка, что не так?
я учусь по УОЛТЕР САВИЧ ПРОГРАММИРОВАНИЕ С++ это програмка из книжки, вроде все проверил но в строке cout << "Press Enter after entering a number.n"; выдает ошибку, что не так???? #include <lostream> using namespace std; int main() { int number_of_pods, peas_per_pod, total_peas;
Динамические структуры данных - списки C++
Задание: Создать объект - однонаправленный список L1 без головного элемента. Добавить в стандартный набор объекта ваш метод согласно варианту. В вашем методе не могут быть использованы другие методы объекта. Ваш метод должен быть выполнен при условии, что в списке имеется достаточное количество элементов для выполнения операции, иначе вывести сообщение о невозможности выполнения метода. Все...
C++ Вычисление машинной точности http://www.cyberforum.ru/cpp-beginners/thread26628.html
Помогите пожалуйста!!! Есть такая задачка/ Требуется найти наибольшее а , такое что 1+а=1, кто-нибудь знает, как это можно сделать?
C++ массив строк дан массив строк: 1. как обратиться к определённому символу? например, text выдаст символ, находящийся на 3 строке на второй позиции 2. как строку разбить на слова? и вырезать те из них, которые стоят на четных позициях? подробнее

Показать сообщение отдельно
Ambient_in_My_Tank
Сообщений: n/a

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

19.03.2009, 13:10. Просмотров 1041. Ответов 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 секунд
Таки умудрился выйти за пределы массива. Не делайте так.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru