Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   При компиляции программы выскакивает ошибка (http://forum.oszone.net/showthread.php?t=141506)

m.s.dos 31-05-2009 15:29 1131630

При компиляции программы выскакивает ошибка
 
Добрый день.
Пытался разобраться своими силами и силами знакомых - не сложилось.

В общем задача такая:



Все работает, я ее реализовал так:

Код:

#include <stdio.h>
#include <stdlib.h>

int mas[9][9];
int i,stb,j,x,n,str,stbm;
int main(void) {
randomize();
for (i=0; i<9; i++)
{for (j=0; j<9; j++)
{mas[i][j]=random(99);}}
for (i=0; i<9; i++)
{for (j=0; j<9; j++)
{printf(" %d",mas[i][j]);}
printf("\n");}
for (x=0; x<9; x++){
str=0;
for (j=0; j<9; j++) {str=str+mas[x][j];}
stb=0;
for (i=0; i<9; i++) {stb=stb+mas[x][i];}
mas[x][x]+=stb;
mas[x][x]+=str;
}
printf("\n");
for (i=0; i<9; i++)
{for (j=0; j<9; j++)
{printf(" %d",mas[i][j]);}
printf("\n");}
n=getchar();
return(0);}

Но теперь появились дополнительные условия:
  • размерность матрицы должна вводиться при выполнении программы;
  • само решение задачи должно быть оформлено в виде функции, которой передается матрица и ее размерность.

И вот тут появилась проблема, программа не компилируется.

Текст самой программы:
Код:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
void vyvod(int far **arr, int s)
{int i,j;
for (i=0; i<s; i++)
 {for (j=0; j<s; j++)
  {printf(" %d",arr[i][j]);}
  printf("\n");};

};

void sum(int far **arr, int s)
{
int x,j,i,str,stb;
for (x=0; x<s; x++){
 str=0;
 for (j=0; j<s; j++) {str=str+arr[x][j];}
 stb=0;
 for (i=0; i<s; i++) {stb=stb+arr[x][i];}
 arr[x][x]+=stb;
 arr[x][x]+=str;};
};

             
int main() {
int *cr,i,j,n;
int far **mas;
randomize();

printf("vvedite razmernost matricy ");
  scanf("%d",&n);

printf("%d",n);

mas=(int far **)malloc(sizeof(int *)*n);

for (i=0; i<n; i++)
{mas[i]=(int far *)malloc(sizeof(int)*n);};

for (i=0; i<n; i++)
 {for (j=0; j<n; j++)
  {mas[i][j]=random(80)+15;}};

vyvod(mas,n);
sum(mas,n);
printf("\n");
vyvod(mas,n);

printf("\n");
           

return(0);}

Вот что выдает:



Работает, если размерность ему дать меньше трех.

При хорошем раскладе (при тех же данных выдает массив, обрабатывает, и выдает новый массив, но в последней строке огромные цифры (19650, 25453...) - по программе их не должно быть.
Извините, скриншот не удалось снять.

Еще один раз (ничего не менял) была "ошибка обращения к процессору.... и адрес IP:**** и код fc ff ff fa...

Вот такие дела.
Что делать?

Извините что много букв.

m.s.dos 31-05-2009 16:10 1131646

Подсказали в личных сообщениях: не нужен far. Убрал. Заработало. Всем спасибо. Как отметить тему решенной?


Время: 11:37.

Время: 11:37.
© OSzone.net 2001-