Lich555 Temat założony przez niniejszego użytkownika |
Wypisanie float + wskaźniki » 2016-10-13 19:33:28 Witam. Ten kod powinien wypisać po prawej stronie liczby całkowite (co robi dobrze), a po prawej liczby float od 0.1 do 0.9 void program1() { cout << "_____________________________________________________" << endl; int * wi; float * wf; int tabint[ 10 ] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; float tabflo[ 10 ]; wf = & tabflo[ 0 ]; for( int i = 0; i < 10; i++ ) { *( wf++ ) = i / 10.0; } cout << "Tresc tablic na poczatku:\n"; for( int i = 0, wi = tabint[ 0 ], wf = tabflo[ 0 ]; i < 10; i++ ) { cout << i << ") \t" << wi++ << "\t\t\t\t" << wf++ << endl; } ... }
Nie wiem czemu ten program nie wypisuje liczb typy float poprawnie. Wypisuje mi je tak, jakby nigdy nie były dzielone czyli od 1 do 9. |
|
pekfos |
» 2016-10-13 20:10:33 for( int i = 0, wi = tabint[ 0 ], wf = tabflo[ 0 ];
|
Tworzysz tu zmienne wi i wf typu int, które zasłaniają wskaźniki o tych nazwach. |
|
Lich555 Temat założony przez niniejszego użytkownika |
» 2016-10-13 21:21:57 Po zmianie wygląda tak: void program1() { cout << "_____________________________________________________" << endl; int * wi; float * wf; int tabint[ 10 ] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; float tabflo[ 10 ]; wf = & tabflo[ 0 ]; wi = & tabint[ 0 ]; for( int i = 0; i < 10; i++ ) { *( wf ) ++ = i / 10.0; } cout << "Tresc tablic na poczatku:\n"; for( int i = 0; i < 10; i++ ) { cout << i << ") \t" << *( wi++ ) << "\t\t\t\t" << *( wf++ ) << endl; } wi = & tabint[ 5 ]; wf = tabflo + 2; for( int i = 0; i < 4; i++ ) { *( wi++ ) = - 222; *( wf++ ) = - 777.5; } cout << "Tresc tablic po wstawieniu nowych wartosci: \n"; wi = tabint; wf = tabflo; for( int i = 0; i < 10; i++ ) { cout << "tabint[" << i << "] = " << *( wi++ ) << " \t\ttabflo[" << i << "] = " << *( wf++ ) << endl; } }
No i jest taki problem, że po wstawieniu nowych wartości wyświetla mi poprawnie (po prawej 1, 2, 3 itd., a po lewej 0.1, 0.2, -777.5 itd.). Lecz przed zmianą wypisuje źle. Po lewej wypisuje dobre liczby, po prawej problemy (liczby typu 62551e-043) |
|
pekfos |
» 2016-10-14 00:19:02 Wykraczasz poza zakres tablicy przy pierwszym wypisywaniu. |
|
Lich555 Temat założony przez niniejszego użytkownika |
» 2016-10-18 18:54:07 Masz na myśli tą część? for( int i = 0; i < 10; i++ ) { cout << i << ") \t" << *( wi++ ) << "\t\t\t\t" << *( wf++ ) << endl; }
Przecież tablica jest 10-elementowa. 1 wypisanie ustawione jest na 0 nr tablicy, a wypisuje się 9 razy. W czym problem? @Edit Ok, już łapię. Chodziło o to, że trzeba wcześniej ustawić wskaźnik wf na 0-owy element tablicy :P Tak z ciekawości, nie można tego zrobić tak? for( int i = 0, wf = tabflo; i < 10; i++ ) { cout << i << ") \t" << *( wi++ ) << "\t\t\t\t" << *( wf++ ) << endl; }
|
|
« 1 » |