[C++] Tablica dynamiczna - problem
Ostatnio zmodyfikowano 2013-04-18 17:51
| kys Temat założony przez niniejszego użytkownika | [C++] Tablica dynamiczna - problem » 2013-04-18 08:49:54 Mam pewien problem z tablicami - skompilowałem poniższy kod i wszystko działa do czasu, gdy wpisuję przykładowo 6 dostawców i 1 kryterium. Wtedy 3 pierwsze wyniki są dobre, a pozostałe złe - po wpisaniu w wagach i ocenie 4 trzech pierwszych dostawców ma ocenę 16, a reszta odpowiednio 20, 80 i 80 (wszyscy powinni mieć 16). Co robię źle? :( # include <iostream.h># include <dos.h>
 
 int main()
 {
 int i, j, wagi, dostawcy;
 double * tabw, * tabk, ** tabs, a, b;
 cout << "Ilu jest dostawcow?" << endl;
 cin >> dostawcy;
 cin.clear();
 cin.sync();
 cout << "Ile jest kryteriow" << endl;
 cin >> wagi;
 cin.clear();
 cin.sync();
 for( i = 0; i < wagi; i++ )
 {
 cout << "Podaj wage " << i + 1 << " kryterium" << endl;
 cin >> a;
 cin.clear();
 cin.sync();
 tabk[ i ] = a;
 }
 for( j = 0; j < dostawcy; j++ )
 {
 cout << "Podaj oceny dla " << j + 1 << " dostawcy" << endl;
 for( i = 0; i < wagi; i++ )
 {
 cin >> b;
 cin.clear();
 cin.sync();
 tabs[ j ][ i ] = b;
 }
 }
 for( j = 0; j < dostawcy; j++ )
 {
 for( i = 0; i < wagi; i++ )
 {
 cin.clear();
 cin.sync();
 tabw[ j ] = tabw[ j ] + tabk[ i ] * tabs[ j ][ i ];
 }
 cout << "Dostawca nr " << j + 1 << " otrzymal " << tabw[ j ] << " punktow." << endl;
 }
 }
 
 | 
|  | 
| sajmon | » 2013-04-18 10:43:51 | 
|  | 
| kys Temat założony przez niniejszego użytkownika | » 2013-04-18 16:52:32 Wielkie dzięki :) | 
|  | 
| kys Temat założony przez niniejszego użytkownika | » 2013-04-18 17:41:57 Poprawiłem kod i nadal ten sam problem (źle wychodzą wyniki od 2/3 dostawcy w górę). Suma wag działa dobrze, więc tabele powinny być prawidłowo zainicjowane (a przynajmniej *tabk). int dostawy(){
 int n;
 do
 {
 int i, j, wagi, dostawcy;
 double a, b;
 cout << "Ilu jest dostawcow?" << endl;
 cin >> dostawcy;
 double * tabw = new double[ dostawcy ];
 double ** tabs = new double *[ dostawcy ];
 for( i = 0; i < dostawcy; i++ )
 {
 tabs[ i ] = new double[ dostawcy ];
 }
 cin.clear();
 cin.sync();
 cout << "Ile jest kryteriow?" << endl;
 cin >> wagi;
 double * tabk = new double[ wagi ];
 cin.clear();
 cin.sync();
 for( i = 0; i < wagi; i++ )
 {
 cout << "Podaj wage " << i + 1 << " kryterium" << endl;
 cin >> a;
 cin.clear();
 cin.sync();
 tabk[ i ] = a;
 }
 double sumawagi = 0;
 for( i = 0; i < wagi; i++ )
 {
 sumawagi = sumawagi + tabk[ i ];
 }
 if( sumawagi != 1 )
 {
 system( "cls" );
 cout << "Suma wag musi wynosic 1!" << endl;
 dostawy();
 }
 for( j = 0; j < dostawcy; j++ )
 {
 cout << "Podaj oceny dla " << j + 1 << " dostawcy" << endl;
 for( i = 0; i < wagi; i++ )
 {
 cin >> b;
 cin.clear();
 cin.sync();
 tabs[ j ][ i ] = b;
 }
 }
 for( j = 0; j < dostawcy; j++ )
 {
 for( i = 0; i < wagi; i++ )
 {
 tabw[ j ] = tabw[ j ] + tabk[ i ] * tabs[ j ][ i ];
 }
 cout << "Dostawca nr " << j + 1 << " otrzymal " << tabw[ j ] << " punktow." << endl;
 }
 delete[] tabw, tabk, tabs;
 }
 
 | 
|  | 
| pekfos | » 2013-04-18 17:44:38 Wyzeruj tablice tabw. | 
|  | 
| kys Temat założony przez niniejszego użytkownika | » 2013-04-18 17:51:55 Faktycznie, wielkie dzięki | 
|  | 
| « 1 » |