#876 pe pbinfo
Cerința
Să se scrie un program care gestionează o coadă de numere întregi. Inițial coada este vidă. Programul va citi de la tastatură o listă de operații, care pot fi:
push X – adaugă valoarea întreagă X în coadă;
pop – elimină elementul din coadă;
front – afișează elementul de la începutul cozii.
Programul va realiza asupra cozii operațiile citite, în ordine. Afișările se fac pe ecran, câte o valoare pe linie.
Date de intrare
Programul citește de la tastatură un număr n, apoi cele n operații,
Date de ieșire
Programul va afișa pe ecran numerele rezultat ale operațiilor front, câte unul pe o linie.
Restricții și precizări
coada nu va conține la un moment dat mai mult de 1000 elemente
elementele cozii vor fi cuprinse între -1.000.000 și 1.000.000
dacă la un moment dat se aplică operația pop și coada nu conține niciun element, operația nu are efect
dacă la un moment dat se aplică operația front și coada nu conține niciun element, operația nu are efect (nu se afișează nimic)
Exemplu
Intrare
12
push 5
push 4
front
push 7
push -5
pop
front
pop
front
push 11
front
pop
Ieșire
5
4
7
7
Răspunsuri la întrebare
Răspuns de
6
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
//o sa folosesc libraria queue care contine deja toat operatiile
int main(){
//vectorul a va fi folosit pentru afisarea de la sfarsit,
//minus devine 1 atunci cand dau push pentru numar negativ
int n,i,j,minus,c,valoare,a[1000],nr_elemente_vazute=0;
char cmd[100];
queue<int> coada;
cin>>n;
for(i=0;i<=n;i++){
cin.getline(cmd,99);
//daca este front, pune termenul din fata la lista de elemente vazute
if(cmd[0]=='f'){
a[nr_elemente_vazute]=coada.front();
nr_elemente_vazute++;
}
//daca este pop, atunci faci pop
else if(cmd[0]=='p'&&cmd[1]=='o'){
coada.pop();
}
//daca este push, verifici daca pe pozitia 5(push si spatiu ocupa primele 5 pozitii)
//este un minus sau nu, daca este atunci minus=1, si pornim cu o pozitie dupa aceea pentru conversia numarului
else if(cmd[0]=='p'&&cmd[1]=='u'){
if(cmd[5]=='-'){
minus=1;
}
else{
minus=0;
}
valoare=0;
for(j=5+minus;j<strlen(cmd);j++){
c=cmd[j]-'0';
valoare=valoare*10+c;
}
if(minus==1){
valoare=(-1)*valoare;
}
coada.push(valoare);
}
}
//afisam valorile salvate prin front
for(i=0;i<nr_elemente_vazute;i++){
cout<<a[i]<<endl;
}
return 0;
}
#include <queue>
#include <cstring>
using namespace std;
//o sa folosesc libraria queue care contine deja toat operatiile
int main(){
//vectorul a va fi folosit pentru afisarea de la sfarsit,
//minus devine 1 atunci cand dau push pentru numar negativ
int n,i,j,minus,c,valoare,a[1000],nr_elemente_vazute=0;
char cmd[100];
queue<int> coada;
cin>>n;
for(i=0;i<=n;i++){
cin.getline(cmd,99);
//daca este front, pune termenul din fata la lista de elemente vazute
if(cmd[0]=='f'){
a[nr_elemente_vazute]=coada.front();
nr_elemente_vazute++;
}
//daca este pop, atunci faci pop
else if(cmd[0]=='p'&&cmd[1]=='o'){
coada.pop();
}
//daca este push, verifici daca pe pozitia 5(push si spatiu ocupa primele 5 pozitii)
//este un minus sau nu, daca este atunci minus=1, si pornim cu o pozitie dupa aceea pentru conversia numarului
else if(cmd[0]=='p'&&cmd[1]=='u'){
if(cmd[5]=='-'){
minus=1;
}
else{
minus=0;
}
valoare=0;
for(j=5+minus;j<strlen(cmd);j++){
c=cmd[j]-'0';
valoare=valoare*10+c;
}
if(minus==1){
valoare=(-1)*valoare;
}
coada.push(valoare);
}
}
//afisam valorile salvate prin front
for(i=0;i<nr_elemente_vazute;i++){
cout<<a[i]<<endl;
}
return 0;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Matematică,
9 ani în urmă
Biologie,
9 ani în urmă
Matematică,
9 ani în urmă