Buna! Daca am un vector si spune sa elimin din tablou un numar minim de elemente astfel incat sa nu existe doua elemente alaturate cu valoarea 0.
Exemplu: daca am 0 2 0 0 0 0 -7 0 0 3 5 se va afisa 0 2 0 -7 0 3 5 .
Ma puteti ajuta?
artur99:
c++?
Răspunsuri la întrebare
Răspuns de
3
#include <iostream>
using namespace std;
int main(){
int n, k, last;
cout<<"n=";
cin>>n;
int v[n], v2[n];
for(int i=0;i<n;i++){
cout<<"v["<<i<<"]=";
cin>>v[i];
}
v2[0]=v[0];
last=v[0];
k=1;
for(int i=1;i<n;i++){
//Parcurgem vectorul de la al 2-lea element
if(last!=0||v[i]!=0){
//Daca ultimul element adaugat este diferit de 0, sau daca elementul curent este diferit de 0
v2[k]=v[i];
k++;
last=v[i];
}
}
for(int i=0;i<k;i++){
cout<<v2[i]<<" ";
}
return 0;
}
**************************************
IF-ul ala functioneaza astfel: daca ultimul element adaugat in v2 a fost 0(last==0), pentru a adauga un numar trebuie ca numarul curent sa fie diferit de 0(v[i]!=0 - deci una din conditii a fost indeplinita), deci să fi trecut de tot sirul de 0. Daca ultimul element nu este 0, iar elementul curent este 0, atunci avem deja indeplinita una din conditii, deci va fi introdus un 0, ce va reprezenta primul 0 dintr-un sir de mai multi de 0, avand in vedere ca doar asta trebuie scos...
using namespace std;
int main(){
int n, k, last;
cout<<"n=";
cin>>n;
int v[n], v2[n];
for(int i=0;i<n;i++){
cout<<"v["<<i<<"]=";
cin>>v[i];
}
v2[0]=v[0];
last=v[0];
k=1;
for(int i=1;i<n;i++){
//Parcurgem vectorul de la al 2-lea element
if(last!=0||v[i]!=0){
//Daca ultimul element adaugat este diferit de 0, sau daca elementul curent este diferit de 0
v2[k]=v[i];
k++;
last=v[i];
}
}
for(int i=0;i<k;i++){
cout<<v2[i]<<" ";
}
return 0;
}
**************************************
IF-ul ala functioneaza astfel: daca ultimul element adaugat in v2 a fost 0(last==0), pentru a adauga un numar trebuie ca numarul curent sa fie diferit de 0(v[i]!=0 - deci una din conditii a fost indeplinita), deci să fi trecut de tot sirul de 0. Daca ultimul element nu este 0, iar elementul curent este 0, atunci avem deja indeplinita una din conditii, deci va fi introdus un 0, ce va reprezenta primul 0 dintr-un sir de mai multi de 0, avand in vedere ca doar asta trebuie scos...
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Engleza,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă