Wypisanie danych z tablicy w kolumnach

0

Cześć, chcę zrobić prosty program, który wczytuje liczby od użytkownika do tablicy, a następnie wypisuje te liczby w trzech kolumnach.

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
int n;

    cout<<"Podaj ilosc liczb: ";
    cin >>n;
    int liczby[n];
    for(int i=0; i<n; i++)
        {
            cout<<"Podaj "<<i+1<<" liczbe: ";
            cin >>liczby[i];
        }
    for(int i=1; i<n; i++)
        {
            if(i%3!=0)  cout<<liczby[i-1]<<setw(5);
            else        cout<<endl;
        }
    return 0;
}

Niestety program nie działa poprawnie. Domyślam się, że mam źle napisany warunek w instrukcji warunkowej, mógłby mnie ktoś poprawić ?

1

Chcesz wypisać wszystkie liczby - wypisywanie liczb nie powinno być warunkowe. Jedynie wypisanie nowej linii powinno być uwarunkowane. Iteracja od 1 też jest błędem, normą jest iteracja w zakresie [0, n)

BTW: C++ nie ma VLA, technicznie poprawnie będzie użyć tutaj kontenera vector zamiast tablicy.

1

po mojemu to bym dał zmienną dodatkową

int j =0;
for(int i=0; i<n; i++)
    {
        if(j==2)  
		{
		cout<<liczby[i]; 
		cout<<endl;
		j=0;
		}
        else       
		{
		cout<<liczby[i]<<setw(5);
		j++;
		}
	}
1

Generalnie ja to bym widział jakoś tak

#include <iostream>
#include <iomanip>
#include <vector>

using namespace std;

int main()
{
    int n;

    cout << "Podaj ilosc liczb: ";
    cin >> n;
    vector<int> liczby(n);
    for (int i = 0; i < n; i++)
    {
        cout << "Podaj " << i + 1 << " liczbe: ";
        cin >> liczby[i];
    }
    for (int i = 0; i < n; i++)
    {
        cout << setw(5) << liczby[i];
        if (i % 3 == 2)
            cout << endl;
    }
    return 0;
}

Celowo wprowadzałem jak najmniej zmian.

0

Nie wiem, czy dobrze rozumiem, co to jest MAX_N. To nie jest nazwa zmiennej, prawda ? Jeżeli mamy taki program:

int main()
{
const unsigned int MAX_N = 20;
int R[MAX_N];
unsigned int n;
int a, b;
cout << "Podaj liczbe elementow: "; cin >> n;
cout << "Podaj poczatek przedzialu: "; cin >> a;
cout << "Podaj koniec przedzialu: "; cin >> b;
srand(time(0));
for ( int i = 0; i < n; i++ )
R[i] = a + rand() % (b – a + 1);
cout << "Elementy tablicy od końca (wariant 2):" << endl;
for ( int i = 0; i < n; i++ )
cout << "R["<< n-1-i << "]= " << R[n-1-i] << endl;
cout << "Elementy tablicy od końca (wariant 1):" << endl;
for ( int i = n-1; i >=0; i-- )
cout << "R["<< i << "]= " << R[i] << endl;
}

To mamy określone, że tablica o nazwie R może mieć maksymalnie 20 "szufladek", ale to osoba, która uruchomiła program ustala, czy tych "szufladek" będzie np. 5 czy 20, tak ?

0

Nie. R ma zawsze 20 "szufladek". Osoba, która uruchomiła program decyduje ile z nich zostanie wykorzystanych.

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