Błąd kompilacji "declaration of 'int a ' shadows a parameter"
Ostatnio zmodyfikowano 2016-07-17 13:55
Anonim47 Temat założony przez niniejszego użytkownika |
Błąd kompilacji "declaration of 'int a ' shadows a parameter" » 2016-07-15 20:46:05 Witam. Nie mogę znaleźć błędu kompilacji. error: declaration of 'int a ' shadows a parameter error: declaration of 'int b ' shadows a parameter Funkcja jest do losowania liczb z przediału (np.od 50 do 60) int losuj( int a, int b ) { int a, b, c; srand( time( NULL ) ); (( rand() % b ) + a ); c =(( rand() % b ) + a ); return c; }
Oczywiście dodałem też biblioteki #include <iostream> #include <cstdlib> #include <ctime>
|
|
karambaHZP |
» 2016-07-15 20:50:09 |
|
Anonim47 Temat założony przez niniejszego użytkownika |
» 2016-07-15 20:55:58 Nie mogę, ponieważ wywołuje ja w main() To cały kod #include <iostream> #include <cstdlib> #include <ctime>
using namespace std; int wczytajLiczbeA() { int a; do { cin.clear(); cin.sync(); cout << "Podaj liczbe z pierszego przedzialu do losowania (A):"; cin >> a; cout << "\n"; if( cin.good() ) return a; } while( cin.fail() ); return a; } int wczytajLiczbeB() { int b; do { cin.clear(); cin.sync(); cout << "Podaj druga liczbe z przedzialu do losowaia (B):"; cin >> b; cout << "\n"; if( cin.good() ) return b; } while( cin.fail() ); return b; } int losuj( int a, int b ) { int a, b, c; srand( time( NULL ) ); (( rand() % b ) + a ); c =(( rand() % b ) + a ); return c; } int main() { int a, b; a = wczytajLiczbeA(); b = wczytajLiczbeB(); losuj( a, b ); return 0; }
|
|
Gibas11 |
» 2016-07-15 21:05:14 Możesz, a i b są zadeklarowane jako parametry, więc nie musisz tego robić ręcznie niżej. |
|
karambaHZP |
» 2016-07-15 21:10:58 Czytaj komunikat. Deklarując zmienne a i b zakrywasz parametry funkcji. |
|
Anonim47 Temat założony przez niniejszego użytkownika |
» 2016-07-15 21:19:05 Działa dzięki. Ale teraz losują mi się liczby nie z tego zakresu co chce. np. podajc liczbe a 50 i b 60 to wynik losowania wynosi 89. i jeszcze jeden błąd w mojej funkcji to jak wywołam kilka razy funkje losuj(a, b)to te same liczby losuje. Problem rozwiązałem. Zrobiłem złą funkcje do losowania liczb z przedziału. Poprawna funkcja to: int losuj( int a, int b ) { int c, d; srand( time( NULL ) ); d = a - b; (( rand() % d ) + a ); c =(( rand() % d ) + a ); return c; } A drugi problem to rozwiązałem dodając funkcje Sleep(1000) int a, b, x; a = wczytajLiczbeA(); b = wczytajLiczbeB(); for( int i = 1; i <= 10; i++ ) { x = losuj( a, b ); cout << x << "\n"; Sleep( 1000 ); } return 0;
i dołączenie biblioteki #include <windows.h> |
|
karambaHZP |
» 2016-07-15 21:42:11 Źle używasz [a href="http:www.cplusplus.comreferencecstdlibrand"" name="rand()"] Jeśli chcesz liczb z zakresu od do poczytaj o <random>. |
|
carlosmay |
» 2016-07-15 22:28:31 |
|
« 1 » 2 |