marcinpro Temat założony przez niniejszego użytkownika |
Ciągi znaków - Kurs » 2018-03-18 18:15:56 Witam ponownie, Próbuję w funkcji za pomocą wskaźnika wprowadzać do tablicy znaków ulice i w drugiej jej numer. Nie wiem dlaczego w funkcji zmienia dane od tego co wpisuje. A druga sprawa chce zabezpieczyć prog aby nie było można wprowadzić skali innej niż 2-6, a przepuszcza wszystko. #include <iostream> #include <conio.h>
using namespace std;
void wprodanych( char * ulica, char * nrdomu, int * ocenapro, int * staz ) { cout << "Podaj nazwe ulicy na ktorej mieszkasz ?" << endl; cin.get( * ulica ); cin.sync(); cout << "Podaj numer domu ?" << endl; cin.get( * nrdomu ); cin.sync(); cout << "Na ile oceniasz swoje umiejetnosci programowania w skali [2-6]?" << endl; cin >> * ocenapro; while( !cin.good() &&( 2 <= * ocenapro ) &&( * ocenapro >= 6 ) ) { cin.clear(); cin.sync(); cout << "Podales bledne dane, podaj ponownie!" << endl; cin >> * ocenapro; } cout << "Twoj staz programowania ?" << endl; cin >> * staz; while( !cin.good() ) { cin.clear(); cin.sync(); cout << "Podales bledne dane, podaj ponownie!" << endl; cin >> * staz; } }
void wysdanych( char * ulica, char * nrdomu, int ocenapro, int staz )
{ cout << "Adres: " << ulica << ' ' << nrdomu << endl; cout << "Ocena: " << ocenapro - 1 << endl; cout << "Staz: " << staz << endl; }
int main()
{ char ulica[ 40 ]; char nrdomu[ 20 ]; int ocenapro = 0; int staz = 0; wprodanych( ulica, nrdomu, & ocenapro, & staz ); wysdanych( ulica, nrdomu, ocenapro, staz ); getch(); return 0; }
|
|
pekfos |
» 2018-03-18 18:28:03 To wczytuje jeden znak, nie napis. while( !cin.good() &&( 2 <= * ocenapro ) &&( * ocenapro >= 6 ) )
|
Logika tego warunku jest błędna. |
|
marcinpro Temat założony przez niniejszego użytkownika |
» 2018-03-18 19:01:40 Warunek poprawiłem, tak tak wiem... while( !( * ocenapro >= 2 && * ocenapro <= 6 ) || !cin.good() )
Co do pierwszego problemu, ok powinienem np napisać: Tylko tego nie skompiluje. Do końca nie wiem dlaczego. |
|
pekfos |
» 2018-03-18 19:04:07 |
|
marcinpro Temat założony przez niniejszego użytkownika |
» 2018-03-18 19:17:11 Ehh, Zadam w takim układzie głupie pytanie. Dlaczego przed tablicą znaków w funkcji nie muszę podawać * , przed intem tak? Gdy miałem taką składnie: Wczytywało pierwszy znak, ale jakby nie było * to błąd w kompilatorze, teraz sytuacja jest odwrotna... |
|
pekfos |
» 2018-03-18 19:23:02 Wczytywało pierwszy znak, ale jakby nie było * to błąd w kompilatorze, teraz sytuacja jest odwrotna... |
Zupełnie jakby ta gwiazdka coś zmieniała. I zupełnie jakby te dwie wersje get() przyjmowały różne rzeczy jako pierwszy argument. http://en.cppreference.com/w/cpp/io/basic_istream/get |
|
marcinpro Temat założony przez niniejszego użytkownika |
» 2018-03-19 20:47:20 Ok, biję się z dalszym zadaniem. void wprodanych( char ** marka, char ** model )
char marka[ 3 ][ 20 ]; char model[ 3 ][ 20 ];
wprodanych( marka, model );
Jak prawidłowo przekazać wskaźnik tablicy dwuwymiarowej do funkcji? |
|
pekfos |
» 2018-03-19 20:52:09 Czemu po prostu nie czytać tego, co jest podane w błędach kompilacji? Masz tam rozwiązanie zarówno na ten problem, jak i poprzedni. |
|
« 1 » 2 |