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 |
Putin ajutor la citirea din fisiere?
Last Updated: Dec 16 2017 15:25, Started by
g0dafk
, Dec 16 2017 12:18
·
0
#1
Posted 16 December 2017 - 12:18
Deci am un fisier sursa ( source.cpp ) in care am main-ul si apelez 4 functii al caror antet, sau declaratie.. sau cum s-o numii este in header.h si le-am scris codul in header.cpp. Mai am un fisier struct.h in care am declarat o structura ca sa fie vizibila in toate celelalte fisiere. Daca vreau sa citesc valori din fisier cu o functie Citire nu merge..
source.cpp: int main() { f.open("Text.txt"); int n; f >> n; fractie v[10]; Citire(v, n); cout << endl; Afisare(v, n); cout << endl; /*Simplificare(v, n); cout << endl; Ordonare(v, n); cout << endl;*/ } struct.h: #pragma once #include <iostream> using namespace std; struct fractie { int numarator; int numitor; }; header.h: #pragma once #include <iostream> #include "struct.h" ifstream f; using namespace std; void Citire(fractie v[],int n); void Afisare(fractie v[],int n); void Simplificare(fractie v[],int n); void Ordonare(fractie v[],int n); header.cpp: #include "Header.h" #include <fstream> void Citire(fractie v[],int n) { for (int i = 0; i < n; i++) { f >> v[i].numarator >> v[i].numitor; } } void Afisare(fractie v[], int n) { for (int i = 0; i < n; i++) { cout << v[i].numarator << "/" << v[i].numitor << endl; } } void Simplificare(fractie v[], int n) { } void Ordonare(fractie v[], int n) { } si fisierul text.. 5 -4 3 -9 1 3 18 5 -2 6 -3 Nu-mi dau seama unde ar trebui sa declar variabila care citeste din fisier.. ca sa mearga peste tot .. Si daca vreau sa citesc n-ul din fisier si apoi sa-l transmit ca parametru in functii ar trebui sa-l citesc in main, nu? Edited by g0dafk, 16 December 2017 - 12:20. |
#2
Posted 16 December 2017 - 12:22
Variabilele globale nu se declara asa in headere. Scapa de variabila globala si transmite-o ca parametru spre fiecare functie.
|
#3
Posted 16 December 2017 - 12:27
@dani.user te referi la ceva de genul?:
void citire(fractie v[],int n,fstream f); Edited by g0dafk, 16 December 2017 - 12:27. |
#4
Posted 16 December 2017 - 12:44
Da, doar ca streamul trebuie pasat ca referinta sau pointer, nu e copiabil. Si poti generaliza la istream (input stream) in loc de fstream ca nu-i pasa functiei ca citeste din fisier asu din alt fel de stream.
|
#5
Posted 16 December 2017 - 13:23
Inca o intrebare. De ce nu merge aceasta sortare? Stiu ca pentru a compara doua fractii trebuie "inmultiti numaratorul si numitorul in X". Adica 2/3 < 3/2 pentru ca 2x2 < 3x3.
M-am gandit sa implementez ceva gen: void Ordonare(fractie v[], int n) { for (int i = 0; i < n; i++) { for (int j = i; j < n ; j++) { if (v[i].numarator*v[j].numitor < v[i].numitor*v[j].numarator) { swap(v[i], v[j]); } } } } Edited by g0dafk, 16 December 2017 - 13:24. |
#7
Posted 16 December 2017 - 13:32
Nu am implementat-o eu, merge... adica e implementata deja cred. Zici ca din cauza ei nu merge? Sa incerc sa fac cu un auxiliar? aux=a, a=b, b=aux?
|
#8
Posted 16 December 2017 - 13:32
Cand sortezi (prin comparare) structuri ai 3 lucruri independente de implementat:
Incearca sa le scrii cat mai independent/reutilizabil si apoi va fi foarte usor sa treci la std::sort. |
#9
Posted 16 December 2017 - 13:53
Dar de ce nu depanezi programul?
Vezi ce valori iau toate variabilele si te prinzi imediat unde e greseala. |
#10
Posted 16 December 2017 - 14:37
Gata, i-am dat de cap ( cred ). Chestia era ca nu functiona corect cu valori negative de exemplu -4/3 comparat cu -9/1. -4 x 1 = -4 si -9 x 3 = -27. Deci dupa regula asta... -27 e mai mic decat -4 deci mie asta imi strica progamul. Nu stiu daca e 100% corect ca am pus modul ca sa verifice 27 si 4 , dar se pare ca merge.
Sper ca nu e doar un truc ieftin care merge pentru anumite valori iar pentru altele sa dea ceva gresit. Nu stiu cu ce fractii sa-mi testez programul. Am testat cu -4 3 -9 1 3 18 5 -2 6 -3 Si a iesit corect . @dani.user Suprascrierea operatorilor e doar pentru a avea un cod mai curat si pentru a fi totul organizat nu? E de fapt o functie care face ceva, corect? M-am uitat la niste tutoriale pe internet si asta imi pare ca face. Insa nu sunt sigur ca am inteles 100% corect. De exemplu daca am un vector: v.x=valoare si v.y=valoare ca sa-l adun cu alt vector ar trebui sa adun v1.x si v2.x apoi v1.y si v2.y asa ca pot face face ceva gen vector operator+(const vector& stanga,const vector& dreapta){ vector rez; rez.x= v1.x+v2.x; rez.y=v1.y+v2.y; return rez; } si acum pot scrie doar v1+v2, nu? Edited by g0dafk, 16 December 2017 - 14:43. |
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users