Skocz do zawartości

Program macierze (budowa proceduralna)


Rekomendowane odpowiedzi

Gość sztormik
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
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Gość sztormik
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

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności