Răspuns :
Nu mai imi aduc aminte cum se face salvarea unui calcul prin referinta la pointer asa ca dau raspunsul cu variabile globale: n si vectorul v sunt globale, si functia de stergere ia doar doi parametri: i si j. Valorile globale vor fi modificate in toate functiile si operatiile. Programul ar trebui la final sa arate ceva similar cu codul de mai jos:
#include <iostream>
#include <fstream>
using namespace std;
int n,v[100];
//functie si pentru afisare daca este nevoie
void afiseaza(){
int i;
for(i=1;i<=n;i++){
cout<<v[i]<<" ";
}
cout<<endl;
}
void sterge(int i,int j){
//daca j este mai mic decat i
//atunci nu face nimic in functie
if(j<i){
return;
}
int k,v_copie[n],nr=1;
for(k=1;k<=n;k++){
v_copie[k]=v[k];
}
for(k=1;k<i;k++){
v[nr]=v_copie[k];
nr++;
}
for(k=j+1;k<=n;k++){
v[nr]=v_copie[k];
nr++;
}
n=n-(j-i+1);
}
int main(){
int i,j;
ifstream fin("numere.in");
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i];
}
i=1;
while(i<n){
j=i;
while(v[j]==v[j+1]&&j<n){
j++;
}
sterge(i+1,j);
i++;
}
afiseaza();
return 0;
}
#include <iostream>
#include <fstream>
using namespace std;
int n,v[100];
//functie si pentru afisare daca este nevoie
void afiseaza(){
int i;
for(i=1;i<=n;i++){
cout<<v[i]<<" ";
}
cout<<endl;
}
void sterge(int i,int j){
//daca j este mai mic decat i
//atunci nu face nimic in functie
if(j<i){
return;
}
int k,v_copie[n],nr=1;
for(k=1;k<=n;k++){
v_copie[k]=v[k];
}
for(k=1;k<i;k++){
v[nr]=v_copie[k];
nr++;
}
for(k=j+1;k<=n;k++){
v[nr]=v_copie[k];
nr++;
}
n=n-(j-i+1);
}
int main(){
int i,j;
ifstream fin("numere.in");
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i];
}
i=1;
while(i<n){
j=i;
while(v[j]==v[j+1]&&j<n){
j++;
}
sterge(i+1,j);
i++;
}
afiseaza();
return 0;
}
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, nu ezitați să ne contactați. Așteptăm cu nerăbdare să vă revedem și nu uitați să ne salvați în lista de favorite!