Iteracja i zagnieżdżanie pętli.

0

Witam, mam pewien problem z zadaniem z iteracji, muszę zrobić program gdzie najpierw podajemy liczbe zakresow ktore mają być powtórzone, np. 3 zakresy liczb, a potem mamy podać te 3 zakresy. Czyli najpierw podaje liczbe zakresow, potem zakres 1, zakres 2 itd. po wpisaniu ostatniego zakresu program powinien je wyświetlić, każdy w nowej linii. Niestety mi wychodzi tak że wpisuje liczbe zakresow, potem a i b, a zakres od razu sie wypisuje i program kaze wpisac mi nowy. Kod:
#include <iostream>
#include <stdio.h>

using namespace std;

int main(){
int i,n,a,b;
cout<<"Ile roznych zestawow chcesz wypisac: ";
cin>>n;

for(i=1; i<=n;i++) {
    cout<<"Podaj a i b: ";
    cin >> a >> b;
        for(a; a<=b; a++){
            cout<<a<<" ";
        }
    cout<<endl<<endl;
}

}
Jak poprawić to tak by działało tak jak powinno?

1

musisz zapamiętać gdzieś te zakresy i dopiero potem użyć te dane. Potrzebujesz tablicy, albo lepiej std::vector<Zakres>.

0

Czyli jak to powinno mniej więcej wyglądać? Nigdy nie uczyłem się o funkcji std::vector

1

Rozwiązanie na tablicach dynamicznych:

#include <iostream>
#include <stdio.h>

using namespace std;

int main()
{
int n,a,b;
cout<<"Ile roznych zestawow chcesz wypisac: ";
cin>>n;

int** zakresy = new int*[2];

for(int i=0;i<n;i++)
{
    zakresy[i]= new int [2];
}

for(int i=0; i<n;i++)
{
    cout<<"Podaj a i b: ";
    cin >> zakresy[i][0] >> zakresy[i][1];
    cout<<endl;
}
for(int i=0;i<n;i++)
{
    for(int j=zakresy[i][0];j<=zakresy[i][1];j++)
    {
        cout<<j<<" ";
    }
    cout<<endl;
}

for(int i=0;i<n;i++)
{
    delete[] zakresy[i];
}
delete[] zakresy;

return 0;
}
0

Super, wielkie dzięki za pomoc :)

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