Neurochirurgie minim invazivă
"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv. Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice. www.neurohope.ro |
C ++ Triunghi- Problema
Last Updated: Jan 24 2021 17:13, Started by
AlexandruRaboj
, May 14 2018 14:32
·
0
#1
Posted 14 May 2018 - 14:32
Salutare! Am si eu o problema de rezolvat in C++ si nu stiu cum deoarece nu am inteles prea bine while-ul.Se dă un număr N. Să se afișeze următorul triunghi de numere:
N N-1 N-2 ... 2 1 N-1 N-2 ... 2 1 .... 2 1 1 Mai exact, pe prima linie se vor afișa toate numerele de la N la 1, pe cea de-a doua linie toate numerele de la N-1 la 1 etc. Numerele de pe fiecare linie vor fi despărțite prin spații, si poate puteti sa imi explicati pasii folosind while (nu vreau cu for sau ceva mai complicat, vreau strict cu while si restul : if, else etc.) si daca puteti sa imi explicati cum fac si invers de la cel mai mic la cel mai mare, de ex 1 2 3 4 5 pe primul rand, pe al doilea rand 1 2 3 4 s.a.m.d. Multumesc anticipat! Ex de piramida : 5 4 3 2 1 4 3 2 1 3 2 1 2 1 1 |
#2
Posted 14 May 2018 - 14:38
Uite frățică despre while
A while loop statement repeatedly executes a target statement as long as a given condition is true. Syntax The syntax of a while loop in C++ is − while(condition) { statement(s); } Here, statement(s) may be a single statement or a block of statements. The condition may be any expression, and true is any non-zero value. The loop iterates while the condition is true. When the condition becomes false, program control passes to the line immediately following the loop. Flow Diagram C++ while loop Here, key point of the while loop is that the loop might not ever run. When the condition is tested and the result is false, the loop body will be skipped and the first statement after the while loop will be executed. Example #include <iostream> using namespace std; int main () { // Local variable declaration: int a = 10; // while loop execution while( a < 20 ) { cout << "value of a: " << a << endl; a++; } return 0; } |
#3
Posted 14 May 2018 - 15:01
Ok am inteles cum sta cu while dar tot nu am inteles cum fac piramida..
Eu pana acum am reusit doar asta: #include<iostream> using namespace std; int main(){ int N ; cin >> N ; int N_1= N - 1 ; while (N > 0){ cout << N << " " ; N -=1; } cout << endl; while(N_1 > 0){ std::cout << N_1 << " " ; N_1 -= 1; } return 0; } Dar imi afiseaza decat 2 randuri : Introduc 5 5 4 3 2 1 4 3 2 1 Si atat.. Intrebarea este cum fac mai departe? Dar daca am un numar mai mare ex: 50?Stau sa scriu pe fiecare in parte? Trebuie sa fie ceva sa le faca automat..Asta nu inteleg.. |
#4
Posted 14 May 2018 - 15:15
Nu știu C++
#include <iostream> using namespace std; int main(){ int n, i; cout<<"n="; cin>>n; while(n>0){ i=n; while(i>0){ cout<<i<< " "; i--; } cout<<endl; n--; }} Cred că mai trebuie aranjat Citește mai multe pe Brainly.ro - https://brainly.ro/t...308064#readmore Edited by exceswater, 14 May 2018 - 15:15. |
#5
Posted 14 May 2018 - 15:25
#include <iostream>
using namespace std; int main(){ int N, i; cin>>N; while( N > 0 ){ i=N; while(i>0){ cout << i << " " ; i--; } cout << endl; N--; } return 0; } Da, este perfect. Multumesc mult. |
#6
Posted 14 May 2018 - 15:25
Nu are treaba cu limbajul in sine cat are treaba cu analiza problemei adica cu logica. Logica din spatele algoritmului se aplica in orice limbaj se implementeaza algoritmul. Adica odata ajuns la o rezolvare logica a problemei de fata implementarea e usoara, fie ca e C, C++, perl, python, etc...
Inainte de scris cod efectiv trebuie gasit algoritmul aka logica din spatele codului. |
#7
Posted 14 May 2018 - 15:33
MembruAnonim, on 14 mai 2018 - 15:25, said:
Nu are treaba cu limbajul in sine cat are treaba cu analiza problemei adica cu logica. Logica din spatele algoritmului se aplica in orice limbaj se implementeaza algoritmul. Adica odata ajuns la o rezolvare logica a problemei de fata implementarea e usoara, fie ca e C, C++, perl, python, etc... Inainte de scris cod efectiv trebuie gasit algoritmul aka logica din spatele codului. |
#8
Posted 14 May 2018 - 15:56
afiseaza si tu cate o linie doua si vezi ce iese din aproape in aproape, uneori prinzi ideea din zbor...adica pe parcurs.
|
#9
Posted 14 May 2018 - 17:04
Cand iti miroase a cod repetitiv, mai mult ca sigur se poate simplifica.
|
#10
Posted 14 May 2018 - 17:31
Pentru n = 5 codul trebuie sa afiseze:
5 4 3 2 1 4 3 2 1 3 2 1 2 1 1 1 int n; //Declari variabila 2 int k; //Declari variabila 3 n = 5; //Initializezi variabila 4 while (n > 0){ // Valoarea de inceput pt fiecare rand Ex: 5, 4, 3, 2, 1 5 k = n; //Aici k ia pe rand valorile de mai sus: 5, 4, 3, 2, 1 6 while (k > 0){ 7 Afiseaza k si spatiu; //la acest while afisezi randul 8 k--; // k scade pana la 1, dar se reinitializeaza la linia 5 9 } 10 Afiseaza rand urmator 11 n--; // n scade pana la 1 12 } Verifica si in C cum afiseaza, eu l-am verifica in php, si merge. Edited by PlatonX, 14 May 2018 - 17:57. |
|
#11
Posted 14 May 2018 - 18:25
Eu l-am facut in Python, o functie recursiva care afiseaza linia si o a doua functie care o apeleaza pe prima cat timp N >= 1. Functioneaza perfect:
Spoiler
De asta am si zis, logica din spate, odata gasita poate fi implementata in orice limbaj. Nu e cel mai okay cod dar merge pentru joaca / invatat.
Edited by MembruAnonim, 14 May 2018 - 18:29. |
#12
Posted 14 May 2018 - 19:16
PlatonX, on 14 mai 2018 - 17:31, said:
Pentru n = 5 codul trebuie sa afiseze: 5 4 3 2 1 4 3 2 1 3 2 1 2 1 1 1 int n; //Declari variabila 2 int k; //Declari variabila 3 n = 5; //Initializezi variabila 4 while (n > 0){ // Valoarea de inceput pt fiecare rand Ex: 5, 4, 3, 2, 1 5 k = n; //Aici k ia pe rand valorile de mai sus: 5, 4, 3, 2, 1 6 while (k > 0){ 7 Afiseaza k si spatiu; //la acest while afisezi randul 8 k--; // k scade pana la 1, dar se reinitializeaza la linia 5 9 } 10 Afiseaza rand urmator 11 n--; // n scade pana la 1 12 } Verifica si in C cum afiseaza, eu l-am verifica in php, si merge. |
#13
Posted 14 May 2018 - 19:38
#include <iostream>
using namespace std; int main () { int N; // Introduci variabila //( ca sa fie mai usor de inteles ii dam valoare de 5) int M; // Intoducem variabila M ( variabila ajutatoare) cin >> N ; //Citim variabila N de la tastatura while ( N > 0 ) { // In timp ce 5 > 0 M = N ; // Si M = 5 rezulta ca 5=5 while ( M > 0){ // In timp ce 5 > 0 cout << M << " " ; // Afiseaza 5 "Spatiu" ( se trece la urmatorul rand) --M ; // Scade 1 din M( din 5 ) si revin-o la linia 12 } // Si atunci 5 devine 4 urmand sa afiseze la linia 13 = 5 4 s.a.m.d // Pana M > 0 nu mai este adevarat si se trece la // urmatoarele instructiuni std::cout << endl; // Trece pe randul urmator --N ; // scade 1 din N si revin-o la linia 10 } // pana N > 0 nu mai este adevarat return 0; // Revin-o } O sa las asta aici poate se intelege mai bine pentru cei care cauta . Multumesc tuturor pentru explicatii ! Edited by AlexandruRaboj, 14 May 2018 - 19:40. |
#14
Posted 14 May 2018 - 21:12
Stiu ca a fost problema rezolvata, dar am zis sa vin si eu cu o alta metoda.
#include <iostream> using namespace std; int main(){ int n,i,j; cin>>n; for(i=n;i>=1;i--){ for(j=i;j>=1;j--) cout<<j<<" "; cout<<endl;} return 0;} |
#15
Posted 15 May 2018 - 00:04
Frumos, dar cam prea 'deodata'.
Quote N N-1 N-2 ... 2 1 N-1 N-2 ... 2 1 .... 2 1 1 void printLine(unsigned int number) { while(number) { // number and space } // end of line; } printLine(5) printLine(4) .... void printTriangle(unsigned int lines) { while (lines) { printLine(lines--) } } Edited by MarianG, 15 May 2018 - 13:14. |
|
#16
Posted 15 May 2018 - 13:56
triunghi.png 25.05K
36 downloads
Ce si unde putem modifica sa pastram alinierea? Edited by MarianG, 15 May 2018 - 13:56. |
#17
Posted 15 May 2018 - 14:19
As memoiza acea prima linie, si cu o structura de date corespunzatoare, as merge de la O(n^2/2) la O(2n).
Prea multe bucle, prea multe recalculari. Da, overkill pentru aceasta problema, dar cred ca scopul temei e sa te faca sa te gandesti si la "what if", ca sa ai idee de abordari in cazuri reale din industrie. In practica, acea numaratoare descrescatoare poate fi un alt algoritm, mai complicat. Iar a doua problema ridicata de MarianG ar fi usor paralelizabila, cu aceasta structura. Cu trenduri ca threadripper sau apache beam, nu prea iti mai permiti sa nu pui paralelizarea pe locul copilotului, langa algoritmica. |
#18
Posted 15 May 2018 - 14:21
As crea un array bidimenional si as aloca un numar de spatii pentru fiecare element: Daca N = 124, voi crea un array de dimeniunea 124x124 si pentru fiecare element array[i][k] voi aloca un numar de 3 spatii pt ca N are 3 cifre. Apoi, as inlocui numarul de spatii corespunzator: Daca array[i][k] = 2, elementul " " se va inlocui cu "2 ", daca este 12 se va inlcui cu "12 ".
Edited by PlatonX, 15 May 2018 - 14:23. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users