Napisano 20 Maj 200717 l 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"); } }
Napisano 20 Maj 200717 l 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 20 Maj 200717 l 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