PDA

Показать полную графическую версию : При компиляции программы выскакивает ошибка


m.s.dos
31-05-2009, 15:29
Добрый день.
Пытался разобраться своими силами и силами знакомых - не сложилось.

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

http://img269.imageshack.us/img269/1523/20090531135457.jpg

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


#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);}



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

http://img200.imageshack.us/img200/3261/screen1yhd.jpg

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

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

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

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

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

m.s.dos
31-05-2009, 16:10
Подсказали в личных сообщениях: не нужен far. Убрал. Заработало. Всем спасибо. Как отметить тему решенной?




© OSzone.net 2001-2012