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 pentru vizita pe site-ul nostru dedicat Informatică. Ne dorim ca informațiile furnizate să vă fi fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Revenirea dumneavoastră ne bucură, iar pentru acces rapid, adăugați-ne la favorite!