cmilak43 Temat założony przez niniejszego użytkownika |
[c++] Pierwotna pozycja liczby » 2012-04-18 19:40:33 Polecenie Program który wyświetla pozycje na której liczba wystąpiła po raz pierwszy Wykombinowałem coś takiego : #include <iostream> using namespace std; int szukaj( int a[], int n, int liczba, int & x ) { for( int i = 0; i < n; i++ ) if( a[ i ] == liczba ) x = x - 1; } int main() { int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, n, liczba, x; cout << "Podaj liczbe: "; cin >> liczba; x = liczba; szukaj( a, n, liczba, x ); if( x >= 0 ) cout << "Liczba pierwotnie wystapla na pozycji " << x; else cout << "Liczba nie wystapila w ciagu !!!"; } Program ruszył ale po wpisaniu liczby program zawiesza się i wywala błąd Proszę o pomoc |
|
SeaMonster131 |
» 2012-04-18 20:20:00 Bo zmienna n zawiera jakieś śmieci i dlatego wychodzisz poza zakres tablicy. |
|
cmilak43 Temat założony przez niniejszego użytkownika |
» 2012-04-18 20:52:08 A mógłbyś mi powiedzieć czy ja chociaż dobrze robię że pozycja jest o 1 mniejsza od wpisanej liczby ? |
|
SeaMonster131 |
» 2012-04-18 21:05:34 Nie, zmień sobie chociażby tą tablice na taką: { 5, 3, 1, 2, 8, 7, 0, 11, 15, 20 } i wtedy uruchom program, wynik nie będzie poprawny. Jeżeli szukana liczba to if( a[ i ] == liczba ) czyli a[ i ] więc x = ?; - pomyśl, pamiętaj że tablice liczy się od 0 a nie 1. |
|
cmilak43 Temat założony przez niniejszego użytkownika |
» 2012-04-18 21:44:47 NO tak bo wtedy gdy wpisze np. 20 to mi wyświetli, że jest na 19 pozycji co jest nie prawdą, ale program jest modyfikacją i ma obliczac tylko dla tej jednaj tablicy int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } a więc jako że elementy numerowane są od zera więc dla np. 3 powinno wyświetlić pozycje nr. 2 i dlatego odejmuje tą 1....przynajmniej tak to rozumie |
|
SeaMonster131 |
» 2012-04-19 18:31:21 Patrząc normalnie, że tak powiem "matematycznie", to 3 jest na pozycji 3, lecz w tablicy jest to pozycja 2. Zależy co chcesz osiągnąć. |
|
« 1 » |