Czy ten zapis jest poprawny?

Czy ten zapis jest poprawny?
J1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0
Kopiuj
#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.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
3

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

kaczus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Łódź
  • Postów: 1403
0
Kopiuj
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ś.

MC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
2

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

Kopiuj
#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;
} 
J1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

Dzięki za wszystkie odpowiedzi.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.