Documente Academic
Documente Profesional
Documente Cultură
Numim inserare operația de introducere într-un vector a unei noi valori, pe o poziție
cunoscută, fără a pierde vreo valoare dintre cele deja existente.
Inserare: În vectorul v cu n elemente să inserează valoarea v, pe poziția p (1pn+1).
Exemplu:
Inițial : n=5, p=3, val=17 Final : n=6
v 10 20 30 40 50 v 10 20 17 30 40 50
rangur 0 1 2 3 4 rangur 0 1 2 3 4 5
i i
Algoritm de rezolvare:
Pasul 1: se deplasează cu câte o poziție spre dreapta toate valorile ce ocupă rangurile : n-1, n-2,
…, p
Astfel se suprascriu elementele v[n],v[n-1],…,v[p+1]
Pasul 2: numărul de valori din vector se incrementează
Pasul 3: se suprascrie elementul v[p] atribuindu-i-se valoarea val
#include<iostream>
using namespace std;
int main()
{
int n,i,v[50],p,val;
cout<<"Dati numarul de elemente ale sirului : ";
cin>>n;
cout<<"Dati pozitia din sir unde inseram : ";
cin>>p;
cout<<"Dati valoarea pe care o inseram : ";
cin>>val;
cout<<"Dati elementele sirului"<<endl;
Inserare multipla
Să se insereze după fiecare număr par din tablou numarul negativ acestuia.
#include<iostream>
using namespace std;
int main()
{
int v[100];
int i,j,n;
cout<<"Dati valoarea lui n=";
cin>>n;
for(i=0; i<n; i++)
{
cout<<"Dati valoarea elementului "<<i<<" ";
cin>>v[i];
}
#include<iostream>
using namespace std;
int main()
{
int v[100];
int i,j,n;
cout<<"Dati valoarea lui n=";
cin>>n;
for(i=0; i<n; i++)
{
cout<<"Dati valoarea elementului "<<i<<" ";
cin>>v[i];
}
Numim ştergere operația de eliminare din vector a unei valori a cărei poziție este
cunoscută.
Din vectorul x cu n elemente, se elimină valoarea ce ocupă poziția p (1pn).
Exemplu :
Inițial : n=5, p=3 Final : n=4
v 10 20 30 40 50 v 10 20 40 50
ranguri 0 1 2 3 4 ranguri 0 1 2 3
Algoritm de rezolvare:
Pasul 1: se deplasează cu câte o poziție spre stânga toate valorile ce ocupă rangurile: p+1, p+2,
…, n-1.
Astfel se suprascriu elementele v[p],v[p+1],…,v[n-2]
Pasul 2: numărul de valori din vector se decrementează
#include<iostream>
using namespace std;
int main()
{
int v[100];
int i,j,n,p;
cout<<"Dati valoarea lui n=";
cin>>n;
for(i=0; i<n; i++)
{
cout<<"Dati valoarea elementului "<<i<<" ";
cin>>v[i];
}
cout<<"Dati pozitia de unde stergem";
cin>>p;
for(int i = p ; i < n - 1; i ++)
v[i] = v[i+1];
n --;
}
for(i=0; i<n; i++)
cout<<v[i]<<" ";
return 0;
}
Stergerea elementelor cu parcurgere in ordine inversa:
for (int p = n - 1 ; p >= 0 ; p --)
if(v[p] % 2 == 0) {
for(int i = p ; i < n - 1; i ++)
v[i] = v[i+1];
n --;
}
include<iostream>
using namespace std;
int main()
{
int v[100];
int i,j,n,p;
cout<<"Dati valoarea lui n=";
cin>>n;
for(i=0; i<n; i++)
{
cout<<"Dati valoarea elementului "<<i<<" ";
cin>>v[i];
}
for (int p = n - 1 ; p >= 0 ; p --)
if(v[p] % 2 == 0)
{
for(int i = p ; i < n - 1; i ++)
v[i] = v[i+1];
n --;
}
TEMA
1. Se citesc n elemente numere naturale ce se memoreaza in vectorul a.
a) Stergeti din vectorul initial toate numerele patrate perfecte si afisati noul vector obtinut
b) Stergeti din vectorul initial toate numerele ce sunt precedate de un numar prim si afisati noul vector
obtinut
c) Stergeti din vectorul initial toate numerele ce au vecini doua numere pare si afisati noul vector
obtinut
d) Stergeti din vectorul initial toate numerele aflate in fata unui multiplu de 3 si afisati noul vector
obtinut
e) Stergeti din vectorul initial toate numerele ce apartin sirului lui Fibo si afisati noul vector obtinut
a) Inserati dupa fiecare element valoarea 100 si afisati noul vector obtinut
b) Inserati dupa fiecare element din vectorul initial , cea mai mare cifra a sa si afisati noul vector obtinut
c) Inserati intre oricare doua elemente vecine din vector CMMDC- ul lor si afisati noul vector obtinut
d) Inserati intre oricare doua elemente vecine din vector cel mai mare numar obtinut prin lipirea celor
doi vecini si afisati noul vector obtinut
e) Inserati in fata fiecarui element valoarea 777 si afisati noul vector obtinut
f) Inserati in fata fiecarui element din vectorul initial , produsul cifrelor sale si afisati noul vector obtinut
3. Se citesc doi vectori a si b cu cate n elemente fiecare. Dupa fiecare elemente a[i] inserati
elementul b[i].
Afisati vectorul obtinut.
Exemplu n=5
A: 3,5,9,8,10
B: 101,109,200,324,567
Vectorul obtinut: 3,101,5,109,9,200,8,324,10,567
#include <iostream>
#include<fstream>
0 1 2 0 1 2 0 1 2 0 1 2
3 1 2 3 4 3 3 0 1 3 4
0 5 6 7 8 0 1 3 3 4 0 1 3 4 41 5 7 8
9 0 1 1 2 1 5 7 7 8 1 5 7 8 8 2 9 1 2
3 4 2 5 6 9 2 1 1 2 2 9 1 2 2 3 3 5 6
7 8 3 9 1 3 3 5 5 6 3 3 5 6 6 4 7 9 1
4 7 4 9 9 1 4 7 9 1 1
#include <iostream>
#include<fstream>
Exemplu: Să se insereze, dupa linia 1, o linie în care toate valorile sunt egale cu 10.
0 1 2 0 1 2 0 1 2 0 1 2 3
3 3 3 0 1 2 3 4
0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 1 5 6 7 8
1 5 6 7 8 1 5 6 7 8 1 5 6 7 8 2 10 10 10 10
3 4 2 5 6 3 2 4 5 6 2 3 4 5 6 3 3 4 5 6
7 8 3 9 1 7 3 8 9 1 3 3 4 5 6 4 7 8 9 1
4 7 4 8 9 1 4 7 8 9 1
// Citim indicele liniei dupa care urmează să fie inserată noua linie
cin >> x ;
for ( i = n-1 ; i >= x+1 ; i--)
for ( j = 0; j < m ; j++ )
a[i+1][j] = a[i][j];
//mărim numărul de linii
n++;
//înlocuim linia x+1 cu noile valori, prin atribuire sau citire
for ( j = 0 ; j < m ; j++)
a[x+1][j] = … ; // sau cin >> a[x][j];
0 1 2 3 4 0 1 024 3 0 1 4 0 1 2 3
0 1 2 3 4 1 4 4
1 2 3 3 4
5 61 7 8 0 1 2 3 4 4 0 0 1 2 0 3 4
2 1 5 6 7 7 8
9 0 1 2 5 6 7 8 8 1 5 6 0 7 8
1 2 9 0 1 1 2
3 4 3 5 6 92 0 1 2 2 2 9 0 0 1 2
3 4 5 5 6
7 8 4 9 1 33 4 5 6 6 3 3 3 4 0 5 6
7 8 9 9 1
74 8 9 1 1 4 4 7 8 0 9 1
Temă:
1. Se dă o matrice cu n linii și m coloane, n și m numere pare. Să se insereze la mijlocul o linie,
respectiv o coloană care să conțină valoarea 0.
Exemplu: pentru n=2 și m=4 și matrice următoare, se va obține:
0 1 0 1 2 3 4
21 2 3 4 3 0 1 2 0 3 4
05 6 7 8 1 0 0 0 0 0
1 52 6 0 7 8
ș
i
Indicații:
1) x = n/2;
//se inserează o linie după linia x
…
//se completează linia x+1 cu valoarea 0
…
x = m/2;
//se inserează o coloană după coloana x
…
//se completează coloana x+1 cu valoarea 0
…
2) x = n/2 + 1;
//se șterge linia x
…
x = m/2 + 1;
//se șterge coloana x
…