Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
sir munte
Last Updated: Apr 18 2022 18:32, Started by
cristian2021trt
, Mar 16 2021 23:51
·
0
#1
Posted 16 March 2021 - 23:51
Salut , am o problema care ma da putin peste cap ... putin ajutor? Trebuie sa citesc elementele de la tastatura si sa verific daca e munte sau nu.
Cerinta : Un șir munte este un șir în care există un singur indice i ce verifică proprietațiile: 2 ≤ i ≤ N - 1, unde N reprezintă numarul de elemente din șir -toate elementele de la 1 pană la i sunt în ordine strict crescătoare -toate elementele de la i până la N sunt în ordine strict descrescătoare Se dă un șir format din N numere. Să se verifice dacă șirul dat reprezintă sau nu un șir munte. Date de intrare Pe prima linie se află N, dimensiunea șirului. Pe următoarea linie sunt N numere naturale, reprezentand elementele sirului. Date de ieșire Se va afișa : DA dacă șirul dat este munte, sau NU în caz contrar. iar codul meu arata asa : #include <iostream> using namespace std; int main() { int N, x, y; cin >> N >> x; int i = 1, ascending = 0, descending = 0; while (i < N) { cin >> y; if (x < y) { ascending = 1; } else if (x > y) { descending = 1; } x = y; ++i; } if (ascending == 1 && descending == 1) { cout << "DA"; } else { cout << "NU"; } return 0; } |
#2
Posted 17 March 2021 - 08:12
codul tau considera ca un sir "vale" este de fapt sir "munte" . conteaza daca descending devine 1 desi ascending este 0
in plus, nu trastezi deloc "platourile". orice "x == y" ar trebui sa insemne ca nu e "munte". |
#3
Posted 17 March 2021 - 08:17
Problema cu codul tău este că odată ce ai găsit o pereche x < y și o pereche x > y declari că e munte, chiar dacă genul acesta de perechi pot sa apară și în șiruri care nu sunt munte.
Pentru șirul 1 2 3 4 5 4 3 4 2 1 1 < 2, deci ascending este setat 1 și 5 > 4, deci descending este setat pe 1, dar șirul nu este munte pentru că după 5 coborăm la 3 și apoi urcăm la 4 după care coborâm la 1. |
#4
Posted 17 March 2021 - 08:57
Daca ai fi rezolvat problemele anterioare mai curat, acum tot ce trebuia sa faci era sa adaugi un argumennt unui subprogram ("care se asteapta la un sir crescator resectiv descrescator). Diferenta ar fi cand se opreste subprogramul, in cazul problemei de fata, se opreste la i sau cand se intrerupe 'trendul'
munte = expectUp(steps); if (munte) munte = expectDown(steps); in acest exemplu subprogramele vor intoarce 0 daca nu se indeplineste conditia asteptata Edited by MarianG, 17 March 2021 - 08:49. |
#5
Posted 17 March 2021 - 10:55
tavitu, on 17 martie 2021 - 08:17, said:
Problema cu codul tău este că odată ce ai găsit o pereche x < y și o pereche x > y declari că e munte, chiar dacă genul acesta de perechi pot sa apară și în șiruri care nu sunt munte. Pentru șirul 1 2 3 4 5 4 3 4 2 1 1 < 2, deci ascending este setat 1 și 5 > 4, deci descending este setat pe 1, dar șirul nu este munte pentru că după 5 coborăm la 3 și apoi urcăm la 4 după care coborâm la 1. da am vazut asta pe urma.... ar trebui sa ma folosesc de niste extra variabile auxiliare? Tin sa precizez ca trebuie rezolvata problema doar cu while si if |
#6
Posted 17 March 2021 - 11:51
Nu ai nevoie de cine știe ce variabile auxiliare. Trebuie să verifici că primele i elemente sunt în ordine strict crescătoare și apoi că următoarele elemente sunt în ordine strict descrescătoare. Trebuie să procesezi șirul ca două subșiruri, să verifici că un șir este strict crescător, și să verifici că un șir este strict descrescător, gândește-te cum ai rezolva in mod separat aceste probleme. Soluția la problema ta constă în a combina într-un mod oarecum evident și simplu soluțiile la subproblemele astea.
|
#7
Posted 17 March 2021 - 13:00
Vad aceleasi greseli ca la problema anterioara, unde verifici un singur sir daca-i crescator sau nu. Rezolvo pe aceea conform indicatiilor si apoi revino la asta mai complexa.
|
#8
Posted 17 April 2022 - 11:23
Salut, am incercat si eu sa rezolv problema. Am ajuns in punctul in care am aflat maximul sirului . Stiu ca trebuie sa despart sirul in doua si sa-i gasesc directia in functie de maxim. Crescator sau descrescator, doar ca nu stiu sa fac asta. Deocamdata am ajuns aici :
#include <iostream> using namespace std; int main() { int n, a , b , max; cin >> n; cin >> a; n = n - 1; while (n > 0){ cin >> b; if (b > a){ max = b; } a = b; --n; } return 0; }Sa aflu ca este crescator pana la max, e realizabil, dar dupa max, sa vad daca e descrescator mini-sirul e o provocare pentru mine. Edited by MarianG, 17 April 2022 - 13:44. |
#9
Posted 17 April 2022 - 13:44
care este maximul sirului este oarecum irelevant, ideea este sa ajungi pana acolo in mod crescator
|
#10
Posted 17 April 2022 - 16:08
Nu pot sa-mi dau seama cum altfel. Fara un punct de reper , cum ar fii maximul sirului, nu pot sa-mi dau seama cum sa rezolv. La tot ce ma pot gandi este sa gaesc maximul iar apoi sa verificm daca e crescator pana la el si descrescator de la el in capat. Dar nu am cum sa pastrez maximul intr-o variabila fiindca maximul practic va exista intr-un numar de sine statator doar dupa incheierea buclei. Deci , nu am cum. Apoi m-am gandit sa aflu pozitia maximului, dar nici asa nu e bine fiindca toate aceste valori vor fii disponibilie la sfarsitul buclei, iar daca ies din ea pierd valorile sirului . Deci, praf sunt )
|
|
#12
Posted 17 April 2022 - 18:35
Poi nu am ce sa fac cu alte variabile daca ies din while. Nu stiu cum sa pastrez valorile sirului ca mai apoi sa compar numerele sirului pe pozitii. Aflu ce pozitie are cel mai mare numar. De ex cel mai mare numar sa presupunem ca este pe pozitia a 5-a din 7 . Compar primele 5 numere sa vad daca sunt crescatoare iar apoi ultimele doua sa vad daca sunt descrescatoare.
|
#13
Posted 17 April 2022 - 20:24
Corect! Nu stii, dar nu este ca si cum nu ti-as fi prezentat cod care face asa ceva in problemele precedente.
char minge[8] = {'\0'}; char numar[8] = {'\0'}; int resultat; char sterge; scanf("%8s %1s", &minge, &sterge); int pozitie, cifra=0; /* facem o copie dupa sir */Bine eu aveam un sir de caractere, tu acum vrei un sir de numere intregi. Edited by MarianG, 17 April 2022 - 20:25. |
#14
Posted 18 April 2022 - 18:32
Ok, rezolvarea problemei, sau ma rog, una din rezolvarile problemei este aceasta:
#include <iostream> using namespace std; int main(){ int tip_sir = 0, n, x, nr_anterior = 0, i; cin >> n; cin >> nr_anterior; i = 1; while (i < n){ cin >> x; if (x > nr_anterior && tip_sir == 0) tip_sir = 1; if (x < nr_anterior && tip_sir == 0) tip_sir = 3; if (x < nr_anterior && tip_sir == 1) tip_sir = 2; if (tip_sir == 2 && x > nr_anterior) tip_sir = 3; if (x == nr_anterior) tip_sir = 3; nr_anterior = x; i++; } if (tip_sir == 2) cout << "1"; else cout << "0"; return 0; }Insa nu unt capabil sa o inteleg . In ce fel influenteaza programul acel "tip_sir" si cum poate in functie de asta sa verifice sirul. Ce rol are? Imi poate explica cineva , va rog frumos rezolvarea ca la prosti.
Edited by MarianG, 18 April 2022 - 19:25.
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users