Informatică, întrebare adresată de Solitaria, 9 ani în urmă

IN C++
Se citesc n, e, p şi apoi n numere naturale. Se cere să se execute următoarele transformări:

1. Să se elimine prima apariţie a elementului e în vector.
2. Să se adauge elementul e pe poziţia p în vectorul format.
3. Să se răstoarne vectorul astfel format.
4. Să se rotească vectorul astfel format cu o poziţie către începutul vectorului.
În final se va afişa vectorul rezultat.

Date de intrare
Fişierul de intrare compus.in conţine pe prima linie cele trei numere n, e, p, cu semnificaţia de mai sus. Pe a doua linie conţine n numere naturale.

Date de ieşire
Fişierul de ieşire compus.out va conţine cele n numere alre vectorului după executarea, în ordine, a operaţiilor cerute.

Restricţii
1 ≤ n ≤ 10000
poziţiile în vector încep de la zero (zero este poziţia primului element din vector)
Se garantează că e apare în vectorul iniţial
0 ≤ p ≤ n-1
Va rog sa ma ajutati.
Multumesc

Răspunsuri la întrebare

Răspuns de FlameAlchemist
1
dupa ce faci citirea vectorului si a elementelor specificate in enunti o sa trebuiasca sa parcurgi din nou vectorul si sa te intrebi daca s[i] (s fiind numele vectorului, iar i contorul de pe for) este egal cu e. daca da, salvezi pozitia lui e intr-o variabila (pozitia lui in momentul de fata e i) si faci stergerea de la pozitia salvata.
for(int i=0;i<n;i++)
   if(s[i]==e)
     {poz=i;
      break;
     }
for(int i=poz;i<n;i++)
   s[i]=s[i+1];
n--;
n e numarul total de elemente din vector, si scade dupa ce se executa for-ul pentru ca ai sters un element.
ca sa rezolvi punctul 2 trebuie sa faci atribuirea elementului e pe pozitia pe in sir, adica s[p]=e
cand zice rastoarne nu sunt sigura la ce se refera exact, dar presupun ca scrierea elementelor din vector in ordine inversa. adica daca ai 1 2 3 4 sa il transformi in 4 3 2 1, dar repet, nu sunt sigura la partea asta.
si la 4 presupun ca trebuie mutate elementele cu o pozitie la dreapta. salvezi primul element intr-o alta variabila, si muti elementele de dupa cu o pozitie la dreapta (s[i-1]=s[i]; si la final pe ultima pozitie pui primul element din sir)
restul cerintelor presupun ca le stii. sper ca ti-am fost de ajutor :)

Solitaria: am incercat dar nu mi-a dat, nu ai putea sa-mi spui unde am gresit?
AntiEaglesDavids: ce nu ti-a dat?
Solitaria: rezultatul
Solitaria: la cazurile III si IV , nu poti sa folosesti o alta metoda?
AntiEaglesDavids: ce numere ai introdus? ca sa testez si eu
Solitaria: pe prima linie 7 5 3 si pe a doua 6 3 7 8 5 2 5
Solitaria: rezultatul trebuie sa fie 2 8 5 7 3 6 5
AntiEaglesDavids: incearca acu: http://pastebin.com/SFw5VPJp
Solitaria: merge, dar la cerintele III si IV , nu poti sa scri altfel?
Solitaria: inca nu am facut asa la scoala
Alte întrebări interesante