Skocz do zawartości

Featured Replies

Napisano

Witam,

mam mały problem z ponizszym programem, elementy macierzy mają być wprowadzane poprzez najechanie kursorem i wcisniecie Enter.. wszystko niby ladnie pięknie ale nie przekazuje tak wpisanej tablicy do dalszych obliczen. I nie wiem jak zrobic zapis/odczyt wynikowej macierzy do pliku. Prosze o pomoc

 

Oto program:

#include

#include

#include

#include

 

void wprow1 (int a[10][10],int w1,int k1);

void wprow2 (int b[10][10],int w2,int k2);

void dodaj (int a[10][10],int b[10][10],int w1,int k1,int w2,int k2);

void pomnoz (int a[10][10],int b[10][10],int w1,int k1,int w2,int k2);

void transpoz (int a[10][10],int w1,int k1);

 

 

 

main()

{

int w1,w2,k1,k2;

int z;

int a[10][10];

int b[10][10];

int q=1;

 

do

{

 

clrscr();

printf ("\t\t\t[ MENU ]");

 

printf ("\n\nWybierz:\n\n");

printf ("[F1]\tWpisanie pierwszej macierzy.\n\n"

"[F2]\tWpisanie drugiej macierzy.\n\n"

"[F3]\tDodawanie macierzy.\n\n"

"[F4]\tMnozenie tablicy przez liczbe.\n\n"

"[F5]\tTransponowanie 1 macierzy.\n\n"

"[END]\tWyjscie z programu.\n\n");

 

 

while(kbhit())

getch();

if (!getch())

switch(getch())

{

case 59:

clrscr();

printf("Wpisanie pierwszej macierzy.");

printf("\n\nilosc wierszy:\n");

scanf("%d",&w1);

printf("\nilosc kolumn:\n");

scanf("%d",&k1);

wprow1 (a,w1,k1);

getch();

break;

 

 

case 60:

clrscr();

printf("Wpisanie drugiej macierzy.");

printf("\n\n\nilosc wierszy\n");

scanf("%d",&w2);

printf("\nilosc kolumn\n");

scanf("%d",&k2);

wprow2 (b,w2,k2);

getch();

break;

 

 

case 61:

clrscr();

dodaj (a,b,w1,k1,w2,k2);

getch();

break;

 

 

case 62:

clrscr();

pomnoz (a,b,w1,k1,w2,k2);

getch();

break;

 

 

case 63:

clrscr();

transpoz(a,w1,k1);

getch();

break;

 

 

case 79:

q=0;

break;

}

 

}

while (q);

 

 

 

return 0;

}

 

 

//-----------------------------------------------------------------------

 

 

void wprow1 (int a[10][10], int w1, int k1)

{

 

 

 

int i,j,e,z,x,y;

printf("\n\n");

 

for(i=0;i

{

for(j=0;j

{

a[j]=0;

}

 

}

//Wyswietlenie

clrscr();

 

for(i=0;i

{

 

for(j=0;j

{

x=2+j*8;

y=2+i*2;

 

gotoxy(x,y);

cprintf("%d",a[j]);

 

 

}

 

}

 

 

 

 

 

 

 

//strzalki

do

{

while(kbhit())

getch();

if (!(z=getch()))

switch(z=getch())

{

case 72: // do gory

if(y

y=y-2;

gotoxy(x,y);

break;

 

case 75: // w lewo

x=x-8;

gotoxy(x,y);

break;

 

case 77: // w prawo

if(x

x=x+8;

gotoxy(x,y);

 

break;

 

case 80: // w dol

y=y+2;

gotoxy(x,y);

break;

 

case 79:

e=0;

break;

}

 

else

if(z==13)

{

cscanf("%i",a[j]);

}

 

}

while(e);

 

}

 

 

//-----------------------------------------------------------------------

 

void wprow2 (int b[10][10], int w2, int k2)

{

 

 

 

 

int i,j;

printf("\n\n");

for(i=1;i

{

for(j=1;j

{

printf("\nb[%i,%i",i,j);

printf("]=");

scanf("%i",&b[j]);

 

}

 

}

//Wyswietlenie

printf("\n\n");

for(i=1;i

{

for(j=1;j

{

 

printf("\t%d\t",b[j]);

 

}

printf("\n\n");

}

 

 

}

 

 

//-----------------------------------------------------------------------

 

void dodaj (int a[10][10],int b[10][10],int w1,int k1,int w2,int k2)

 

{

 

int i,j;

int q;

int c[10][10];

 

 

if(w1==w2 && k1==k2)

{

 

printf("\n\nSuma macierzy jest:\n\n");

 

for ( i=1; i

{

for(j=1; j

{

c[j]=a[j]+b[j];

printf("\t%d\t",c[j]);

 

}

printf("\n");

}

 

}

else printf("Dodawanie niemozliwe\n");

}

//-----------------------------------------------------------------------

void pomnoz(int a[10][10], int b[10][10], int w1,int k1, int w2, int k2)

{

int q;

int i,j;

 

 

printf("\nPrzez ile mam pomnozyc macierze?\n");

scanf("%d",&q);

 

 

 

 

printf("\nMacierz 1 pomnozona przez %d\n\n",q);

for(i=1;i

{

for(j=1;j

{

 

printf("\t%d\t",a[j]*q);

 

}

printf("\n");

 

}

 

printf("\nMacierz 2 pomnozona przez %d\n\n",q);

for(i=1;i

{

for(j=1;j

{

 

printf("\t%d\t",b[j]*q);

 

}

printf("\n");

 

}

}

 

//-----------------------------------------------------------------------

 

void transpoz (int a[10][10],int w1,int k1)

 

{

int c[10][10];

int i,j;

 

for(i=1;i

{

for(j=1;j

{

 

c[j]=a[j];

}

}

printf("\n\nTablice po transpozycji\n\n");

for(i=1;i

{

for(j=1;j

{

 

 

printf("\t%d\t",c[j]);

}printf("\n");

 

 

}

}

  • Odpowiedzi 2
  • Wyświetleń 2,3k
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

Chodzi mi dokladnie o ta czesc:

 

void wprow1 (int a[10][10], int w1, int k1)

{

 

 

 

int i,j,e,z,x,y;

printf("\n\n");

 

for(i=0;i

{

for(j=0;j

{

a[j]=0;

}

 

}

//Wyswietlenie

clrscr();

 

for(i=0;i

{

 

for(j=0;j

{

x=2+j*8;

y=2+i*2;

 

gotoxy(x,y);

cprintf("%d",a[j]);

}

}

 

 

//strzalki

do

{

while(kbhit())

getch();

if (!(z=getch()))

switch(z=getch())

{

case 72: // do gory

y=y-2;

gotoxy(x,y);

break;

 

case 75: // w lewo

x=x-8;

gotoxy(x,y);

break;

 

case 77: // w prawo

if(x

x=x+8;

gotoxy(x,y);

 

break;

 

case 80: // w dol

y=y+2;

gotoxy(x,y);

break;

 

case 79:

e=0;

break;

}

 

else

if(z==13)

{

cscanf("%i",a[j]);

}

 

}

while(e);

 

}

Napisano

Wydaje mi sie, że podprogram (np. wprow1) powinien mieć przekazywana ta tablice poprzez referencje, w innym wypadku pracuje na kopiach tych tablic. Zatem te tablice zadeklarowane w main() zostają nietknięte. Tak mi sie zdaje. ;)

Odczyt i zapis najlepiej zrealizować poprzez strumienie plikowe i operatory strumieniowe ">".

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności