2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Crash (access violation)
Сообщение12.05.2011, 21:16 
Здравствуйте.

Решал задачу на сайте http://acm.timus.ru

Вот условие задачи: http://acm.timus.ru/problem.aspx?space=1&num=1146

Написал код. На компе он работает, а на сайте пишет Crash (access violation) :(
Код:
#include <stdio.h>
int main()
{
   

   int n, i=0, k=0, x0=0, x1=0, y0=0, y1=0, S=0, max=0, j=0;


scanf("%d%d", &n);


int **A=new int* [n];
for (i=0; i<n; i++)
{
A[i]=new int[n];
}

for (i=0;i<n;i++)
{
  for (j=0;j<n;j++)
  scanf ("%d%d", &A[i][j]);
}

   for (x0=0; x0<n; x0++)
   {
      for (y0=0; y0<n; y0++)
      {
         for (y1=n-1; y1>=y0; y1--)
         {
            for (x1=n-1; x1>=x0; x1--)
            {

               
               for (k=x0; k<=x1; k++)
               {
                  for (i=y0; i<=y1; i++)
                  {
                     S=S+A[k][i];
                     

               
                  }

               }
                     if (S>max)
               {max=S;}
                     S=0;
               
               
            }
         }
      }
   }


printf("%d\n", max);


    return 0;
}


Как эту ошибку исправить?

P.S. Как увеличить скорость выполнения программы я знаю, но сперва хочу попробовать именно такой код.

 
 
 
 Re: Crash (access violation)
Сообщение12.05.2011, 23:42 
Зачем Вы два раза '%d' в спецификации формата указываете?
Код:
scanf("%d%d", &n);
Код:
scanf ("%d%d", &A[i][j]);
У Вас каждый вызов пытается ввести с консоли два числа, причем второе -- неизвестно куда. Отсюда, скорее всего, и access violation.

 
 
 
 Re: Crash (access violation)
Сообщение13.05.2011, 08:58 
Всмысле? Мне надо сперва считать из первой строки 1 число, а потом начат считывать двумерный массив.

Если вы имеете ввиду, что надо писать fscanf, то я смотрел в мануале, там написано, что надо писать именно scanf.

 
 
 
 Re: Crash (access violation)
Сообщение13.05.2011, 09:18 
Ketsyki в сообщении #445300 писал(а):
Всмысле? Мне надо сперва считать из первой строки 1 число, а потом начат считывать двумерный массив.
По спецификации формата "%d%d" scanf пытается ввести два целых числа, а в списке ввода у Вас только одно. Замените
Код:
scanf("%d%d", ...)
на
Код:
scanft("%d", ...)

 
 
 
 Re: Crash (access violation)
Сообщение13.05.2011, 09:31 
Упс. :)
Спасибо :)

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group