Czy ten zapis jest poprawny?

0
#include <iostream>

using namespace std;

int main()
{
    int N;
    int potrz[] = {0};
    int wdom[] = {0};

    cin >> N;
    int m = N;
    for(int i = 0; N != 0; N--)
    {
        cin >> potrz[i];
        i++;
    }

    return 0;
} 

A więc tak,

N = 5
przy każdym powtórzeniu pętli również wczytuję 5. Chodzi o to aby wczytać do tablicy N liczb.

Przy czwartym powtórzeniu liczba, która jest wczytana to 5 a wyświetla np. 450878 itp.

Co w tym programie jest nie tak?
Będę wdzięczny za pomoc.

3

Nie, nie jest poprawny.
Utwórz tablicę w momencie, gdy znasz już n lub skorzystaj z vectora.

0
int potrz[] = {0};

zarezerwujesz miejsce na tablice jednoelementową, więc poprawnie zadziała tylko dla N=1.

Taka uwaga - nie tylko do Ciebie - zmienne staraj się (mimo że nie jest to konieczne) deklarować na początku bloku. A dlaczego? - A dlatego, że później jak napiszesz kod, który bedzie miał dużo linii i będziesz musiał go poprawiać, to się wkurzysz, jak zaczniesz szukać skąd się wzięła ta zmienna. A przekonasz się szczególnie jak taki kod odziedziczysz po kimś.

2

Powinieneś to napisać używając std::vector np. w ten sposób:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int N = 0;
    cin >> N;
    vector<int> potrz(N);
    for(int i = 0; i < potrz.size(); ++i)
    {
        cin >> potrz[i];
    }

    return 0;
} 
0

Dzięki za wszystkie odpowiedzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0