Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zadanie domowe rozdzial 22 Petla For.

Ostatnio zmodyfikowano 2017-02-20 14:53
Autor Wiadomość
alleczad
Temat założony przez niniejszego użytkownika
Zadanie domowe rozdzial 22 Petla For.
» 2017-02-20 14:43:09
Mam problem z zadaniem domowym z 22 rozdziału. Treść zadania:

Napisz program, który za pomocą pętli for
wypełni 20 elementową tablicę następującym ciągiem liczb: {1, 6, 11, ... , (1 + n*5)}. Zawartość wypełnionej tablicy wypisz na ekran.

Jak rozumiem kazdy kolejny wyraz ciagu ma powstawac przez dodanie liczby 5.
Niestety to co napisalem się nie kompiluje. Mogę prosić o jakieś wskazówki.
 Oto moj kod:

C/C++
#include <iostream>

using namespace std;



void wczytawanie_do_tablicy( int wartosc_elementu[], int ilosc_elementow )
{
    int i = 1;
    for( int i = 1; i < ilosc_elementow; i++ )
    {
        cin >> wartosc_elementu[ i ] =( wartosc_elementu[ i - 1 ] ) + 5;
        i++;
    }
   
   
}
void wypisywanie_elementow( int wartosc_elementow, int ilosc_elementow )
{
   
    int i = 1;
    for( int i = 1; i < ilosc_elementow; i++ )
    {
        cout << wartosc_elementow[ i ];
        i++;
    }
}

int main()
{
   
    int tablica[ 20 ];
   
   
    wczytawanie_do_tablicy( tablica, 20 );
    wypisywanie_elementow( tablica, 20 );
   
   
   
    return 0;
}
P-158043
hit
» 2017-02-20 14:46:42
C/C++
int i = 1;
for( int i = 1; i < ilosc_elementow; i++ )

To na pewno jest niepoprawne.
Tablice indeksuje się od 0, a nie od 1 i masz podwójną deklarację. Załącz treści błędów.

C/C++
cin >> wartosc_elementu[ i ] =( wartosc_elementu[ i - 1 ] ) + 5;
To także jest źle. cin jest strumieniem do odczytywania danych, w przypadku tego zadania nie powinieneś go nigdzie używać. Jeśli chcesz to zrobić w ten sposób to musisz mieć wypełnioną wartość dla elementu 0 w tablicy. Inaczej wartosc_elementu[ i - 1 ] w pierwszej iteracji będzie jakimś losowym ciągiem i będzie się to propagować z każdą iteracją.
Edit:

i to:
C/C++
i++;

wewnątrz pętli for również jest niepoprawne.

Zapoznaj się z tym:
http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Petla-for/294
P-158045
kistel66
» 2017-02-20 14:51:51
Polecam zadeklarować pierwszy (zerowy) element w mainie, który będzie początkiem naszego ciągu:
C/C++
cout << "Podaj wartosc 0 elementu: ";
cin >> tablica[ 0 ];


C/C++
void wczytawanie_do_tablicy( int wartosc_elementu[], int ilosc_elementow )
{
    //  int i = 1; to wywal
    for( int i = 1; i < ilosc_elementow; i++ ) //bedziemy numerowac od 1, bo zerowy element mamy zadeklarowany juz w main()
    {
        //cin >> wartosc_elementu[ i ] =( wartosc_elementu[ i - 1 ] ) + 5; <to ci na pewno nie zadziala, spróbuj tak:>
        wartosc_elementu[ i ] = wartosc_elementu[ i - 1 ] + 5;
        //  i++; to tez ci jest niepotrzebne, inkrementacja przebiega juz  w naglowku petli
    }
   
   
}
P-158046
hit
» 2017-02-20 14:53:52
Nie musi pobierać pierwszego elementu od użytkownika, ponieważ jest on znany.

Ja bym to zrobił tak:

C/C++
void wczytawanie_do_tablicy( int wartosc_elementu[], int ilosc_elementow )
{
   
    for( int i = 0; i < ilosc_elementow; i++ )
    {
        wartosc_elementu[ i ] = i * 5 + 1;
    }
}
   
i dalej

C/C++
void wypisywanie_elementow( int wartosc_elementow, int ilosc_elementow )
{
    for( int i = 0; i < ilosc_elementow; i++ )
    {
        cout << wartosc_elementow[ i ];
    }
}

rozmiar tablicy możesz definiować jako stałą.
P-158047
« 1 »
  Strona 1 z 1