Gość sztormik Napisano 20 Maj 2007 Napisano 20 Maj 2007 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"); } }
Gość sztormik Napisano 20 Maj 2007 Napisano 20 Maj 2007 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); }
Przybysz Napisano 20 Maj 2007 Napisano 20 Maj 2007 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 ">".
Rekomendowane odpowiedzi
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ę