[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 » |