Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> непонятная ошибка 
:(
    Опции темы
baduk
Дата 16.12.2013, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 21.11.2013

Репутация: нет
Всего: нет



программа считывает матрицу и выводит её элементы змейкой против часовой стрелки, когда вводишь размер 2х2, 3х3, все работает, но если 4х4 и более, выдает шибку(скрин ниже), немогу ничего с этим сделать, а следовательно и отладить программу, т.к я сомневаюсь, что она работает на 4х4. подскажите пожалуйсто, что с этим делать  и желательно подскажите как поправить программу чтоб она работала до размеров 7х7.
Код

#include <stdio.h>
enum {maxn=100}
main(){
int k=0;
int p=0;
int f=0;
int j, i;
int m [maxn] [maxn];
int n;
printf("Vvedte razmer matrycy\n");
scanf("%d", &n);
printf("Vvedite elementy matrycy\n");
for(i=0; i<n; i++)
  for(j=0;j<n; j++)
scanf("%d", &m[i][j]);
printf("matryca:\n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
  printf("%d ", m[i][j]); 
printf("\n");
}
printf("ryd:");
while(n>=2) {
while(n!=k+f){ k++;
printf("%d ", m[p][n-k]);
}
k=f;
while(n-1!=k){k++;
printf("%d ", m[k][p]); 
}
k=f;
while(k!=n-1){k++;
printf("%d ", m[n-1][k]);
}
k=1;
while(k!=n-1){ k++;
printf("%d ", m[n-k][n-1]); 
}
n--; k=0; f++;
p++; }
printf("\n");
}



Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  14.png 26,81 Kb
PM MAIL   Вверх
akizelokro
Дата 16.12.2013, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Код

while(n!=k+f)

Для начала расставь ещё скобки в этом выражении сравнения и остальных
Для примера
Код

while( n != (k+f) )



--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
feodorv
Дата 17.12.2013, 05:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Чуть более порядка в коде:
Код

  while( n >= 2 ) 
  {
     while( n != k+f )
     { 
       k++;
       printf( "%d ", m[p][n-k]);
     }

     k = f;
     while( n-1 != k )
     {
       k++;
       printf( "%d ", m[k][p]); 
     }

     k = f;
     while( k != n-1 )
     {
       k++;
       printf( "%d ", m[n-1][k]);
     }

     k = 1;
     while( k != n-1 )
     { 
       k++;
       printf( "%d ", m[n-k][n-1]); 
     }

     n--; 
     k = 0; 
     f++;
     p++; 
  }


Я не понимаю, зачем изменять n, когда f и p успешно меняются (кстати, зачем 2 переменные?), но дело Ваше.

Я же со своей стороны посоветовал бы заменить != на > или <, так как вполне может случиться так, что при очередном шаге цикла одновременное изменение n и f даст такой результат, что это != не будет выполнено (что, судя по всему, и наблюдается для чётных значений n), а, следовательно, произойдёт выход за пределы массива, и случится тот самый core dumped.


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0545 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.