Witam, było już tu podobne zadanie ale nie doczekało się sensownego rozwiązania. Trochę je ruszyłem ale nie wiem co dalej, z moja aktualną wiedzą nie jestem w stanie dalej ruszyć. Może ktoś dać wskazówkę i pokazać jak to dokończyć ?
Próbowałem utworzyć drugą tablice, ale nie wiem jak ją utworzyć aby liczyła od 0 i zbierała tylko parzyste wyniki. Nie wiem też jak zsumować ilość elementów w tej kolejnej tablicy, bo funkcja sizeof() tutaj nie działa przez wskaźnik.
Treść:
Napisać program tworzący dynamicznie N – elementową tablicę liczb całkowitych, gdzie N > 0
jest liczbą całkowitą podaną przez użytkownika. Wartości tablicy są podawane przez użytkownika,
a następnie wypisywane. Program ma wypisać wszystkie takie ciągi kolejnych elementów tej
tablicy, których długość przekracza M oraz wszystkie elementy w ciągu są liczbami parzystymi. M
jest liczbą całkowitą dodatnią podaną przez użytkownika. Bierzemy pod uwagę tylko ciągi
nierozszerzalne, tzn. takie, że nie możemy ich rozszerzyć o liczbę parzystą „ani z lewej ani z prawej
strony ciągu”. Np. w ciągu 1 2 4 6 5 nierozszerzalny ciąg kolejnych liczb parzystych to 2 4 6 , ciągi
2 4 i 4 6 byłyby rozszerzalne. Jeśli w tablicy nie ma ciągów spełniających te warunki, program
zwraca informację: „Brak takich ciągów.”.
Przykład: N = 13, M = 2; tablica: 2 3 4 6 8 3 8 6 3 0 2 10 4; odpowiedź: 4 6 8, 0 2 10 4
#include<iostream>
using namespace std;
int main()
{
int N, M, Z;
cout<<"Podaj liczbe N: "<<endl;
cin>>N;
cout<<"Podaj liczbe M."<<endl;
cin>>M;
int* tab = new int[N];
int* tab1 = new int[Z];
for(int i=0; i<N; i++)
{
cout<<"Podaj "<<i+1<<" element tablicy."<<endl;
cin>>tab[i];
}
cout << endl;
for(int i=0; i<N; i++)
{
if (tab[i]%2==0)
{
tab1[i]=tab[i];
}
}
for(int i=0; i<N; i++)
{
cout << tab1[i] << " ";
}
cout << endl;
for(int i=0; i<N; i++)
{
if (tab[i]%2==1)
{
cout << tab[i] <<" ";
}
}
return 0;
}