[c++]dodawanie dwóch liczb w ciągu
Ostatnio zmodyfikowano 2014-06-08 12:23
sal Temat założony przez niniejszego użytkownika |
[c++]dodawanie dwóch liczb w ciągu » 2014-06-05 22:49:11 Witam wszystkich forumowiczów, napisałem program, który losuje ciąg liczb, wczytuje pewną liczbę i sprawdza, czy w tym ciągu są dwie liczby, których suma równa jest danej liczbie. Coś jednak nie działa. Może ktoś zerknąć i sprawdzić? #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
int main() { srand( time( NULL ) ); cout << "Program sprawdza czy suma dwoch liczb z danego przedzialu jest rowna " << endl; cout << "podanej liczbie " << endl; cout << "Podaj poczatek przedzialu " << endl; int start; cin >> start; cout << "Podaj ile liczb ma wylosowac komputer " << endl; int ilosc; cin >> ilosc; cout << "Podaj liczbe odniesienia " << endl; int odn; cin >> odn; int przedzial; int ile = 0; int wylosowaneLiczby[ ile ]; cout << "" << endl; do { przedzial =( rand() % ilosc ) + start; wylosowaneLiczby[ ile ] = przedzial; cout << wylosowaneLiczby[ ile ] << ", "; ile++; } while( ile < ilosc ); cout << "" << endl; cout << "" << endl; int k = 0; int suma[ k ]; int i = 1; do { suma[ k ] = wylosowaneLiczby[ k ] + wylosowaneLiczby[ i ]; k++; i++; cout << suma << ", "; k++; } while( i <=( ilosc - 1 ) && k <=( ilosc - 2 ) ); if( suma[ k ] == odn ) cout << "Sa takie dwie liczby " << endl; else cout << "Nie ma takich dwoch liczb " << endl; return 0; }
|
|
pekfos |
» 2014-06-05 22:51:08 int ile = 0; int wylosowaneLiczby[ ile ];
|
To błędny zapis. |
|
sal Temat założony przez niniejszego użytkownika |
» 2014-06-05 23:08:35 Na czym polega błąd? |
|
Monika90 |
» 2014-06-05 23:12:46 W standardowym C++ rozmiar tablicy nie może być określony za pomocą zmiennej, musi być to stała o wartości znanej już w czasie kompilacji. Ale nawet jeżeli pominiemy ten szczegół, to i tak nie jest dobrze, bo obie tablice mają rozmiar zero. |
|
sal Temat założony przez niniejszego użytkownika |
» 2014-06-06 00:02:05 Zmieniłem nieco kod jednak w drugiej pętli coś nie gra. #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
int main() { srand( time( NULL ) ); cout << "Program losuje 10 liczb i sprawdza czy suma dwoch z nich jest rowna " << endl; cout << "podanej liczbie " << endl; cout << "Podaj poczatek przedzialu " << endl; int start; cin >> start; cout << "Podaj liczbe odniesienia " << endl; int odn; cin >> odn; int przedzial; int ile = 0; int wylosowaneLiczby[ 10 ]; cout << "" << endl; do { przedzial =( rand() % 10 ) + start; wylosowaneLiczby[ ile ] = przedzial; cout << wylosowaneLiczby[ ile ] << ", "; ile++; } while( ile < 10 ); cout << "" << endl; cout << "" << endl; int k = 0; int suma[ 45 ]; int i = 1; int j = 0; do { suma[ k ] = wylosowaneLiczby[ j ] + wylosowaneLiczby[ i ]; k++; i++; j++; cout << suma[ k ] << ", "; k++; } while( i < 9 && k < 45 && j < 8 ); if( suma[ k ] == odn ) cout << "Sa takie dwie liczby " << endl; else cout << "Nie ma takich dwoch liczb " << endl; return 0; } |
|
pekfos |
» 2014-06-06 12:46:37 drugiej pętli coś nie gra. |
Cała jest zła. Podobnie jak pomysł na tę pętlę. |
|
sal Temat założony przez niniejszego użytkownika |
» 2014-06-07 14:05:21 Nieco zmodyfikowałem program. Działa lepiej, jednak coś jest jeszcze nie tak. #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
int main() { srand( time( NULL ) ); cout << "Program losuje ciag liczb i sprawdza czy suma dwoch z nich jest rowna " << endl; cout << "podanej liczbie " << endl; cout << "Podaj poczatek przedzialu " << endl; int start; cin >> start; cout << "Podaj ile liczb ma wylosowac komputer " << endl; int ilosc; cin >> ilosc; cout << "Podaj liczbe odniesienia " << endl; int odn; cin >> odn; int przedzial; int ile = 0; int wylosowaneLiczby[ ilosc ]; cout << "" << endl; do { przedzial =( rand() % ilosc ) + start; wylosowaneLiczby[ ile ] = przedzial; cout << wylosowaneLiczby[ ile ] << ", "; ile++; } while( ile < ilosc ); cout << "" << endl; int k = 1; int iloscSum = 0; do { iloscSum = iloscSum + k; k++; } while( k < ilosc ); cout << iloscSum << " mozliwych sum " << endl; int suma[ iloscSum ]; int i = 1; int j; for( j = 0; j <( ilosc - 1 ); j++ ) do { suma[ iloscSum ] = wylosowaneLiczby[ j ] + wylosowaneLiczby[ i ]; i++; cout << suma[ iloscSum ] << " "; if( suma[ iloscSum ] == odn ) cout << "Ta suma jest rowna liczbie odniesienia!!! " << endl; else cout << "Ta suma nie jest rowna liczbie odniesienia " << endl; } while( i < ilosc ); return 0; }
|
|
pekfos |
» 2014-06-07 20:06:03 Nie ma zerowania i. |
|
« 1 » 2 |