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 |
Problema in codeblocks
Ultima postare: apr 12 2009 12:17, Inițiat de
icx
, apr 10 2009 14:21
·
0
#1
Publicat: 10 aprilie 2009 - 14:21
Am o problema cu urmatorul program in Codeblocks (codul este mai jos). Cand dau Run, imi apare un don't send error. In Borland C++, programul imi ruleaza bine. De fapt, toate celelalte coduri imi ruleaza bine chiar si in Codeblocks cu exceptia acestuia. In urma unor teste, am observat ca problema este cand apelez functia check() in main. Am pus o steluta in cod.
Despre program: *functia citire() citeste din fisierul DATE.IN un numar intreg (numarul de noduri ale unui graf) respectiv matricea de adiacenta; in vectorul v[] se pastreaza gradul fiecarui nod *functia check() verifica in vectorul v[] daca toate nodurile au grad impar; returneaza 1/0 in functie de valoarea de adevar *functia write() scrie in fisierul DATE.OUT valoarea returnata de functia check() Obs. Am avut grija sa creez fisierele DATE.IN si DATE.OUT si le-am scris conform cu problema. #include <fstream> #include <iostream> using namespace std; void citire(int n, int a[30][30], int v[30]); //citeste din DATE.IN numarul de noduri si matricea de adiacenta //calculeaza in vectorul v[i] gradul fiecarui noi `i` int check(int n, int v[30]); //verifica daca gradele tuturor nodurilor sunt pare void write(int n); //scrie un intreg in fisierul DATE.OUT int main() { int n, a[30][30], v[30]; citire(n,a,v); write(check(n,v)); *** PROBLEMA?! return 0; } void citire(int n, int a[30][30], int v[30]) { int i, j; ifstream fin("DATE.IN"); fin>>n; for(i=1; i<=n; i++) for(j=1; j<=n; j++) { fin>>a[i][j]; v[i]+=a[i][j]; } fin.close(); } int check(int n, int v[30]) { int i, ok=1; for(i=1; i<=n; i++) if(v[i]%2!=0) ok=0; return ok; } void write(int n) { ofstream fout("DATE.OUT"); fout<<n; fout.close(); } PS: Daca exista vreo sugestie in privinta codului... ascult cu interes. Editat de icx, 10 aprilie 2009 - 14:22. |
#3
Publicat: 12 aprilie 2009 - 12:17
Multumesc, dani! Iata codul modificat:
#include <fstream> #include <iostream> using namespace std; void citire(int *n, int a[30][30], int v[30]); //citeste din DATE.IN numarul de noduri si matricea de adiacenta //calculeaza in vectorul v[i] gradul fiecarui nod `i` bool check(int n, int v[30]); //verifica daca gradele tuturor nodurilor sunt pare void scrie(int n); //scrie un intreg in fisierul DATE.OUT int main() { int n, a[30][30], v[30]; int i, j; int *p; p=v; citire(&n,a,v); scrie(check(n,v)); return 0; } void citire(int *n, int a[30][30], int v[30]) { int i, j; ifstream fin("DATE.IN"); fin>>*n; for(i=1; i<=*n; i++) for(j=1; j<=*n; j++) { fin>>a[i][j]; if(a[i][j]==1) v[i]++; }; fin.close(); } bool check(int n, int v[30]) { int i; bool ok = true; for(i=1; i<=n; i++) if(v[i]%2!=0) ok=false; return ok; } void scrie(int n) { ofstream fout("DATE.OUT"); fout<<n; fout.close(); } Problema a ramas la aceeasi functie citire(), mai exact la vectorul v[] care nu reuseste sa "numere" cum trebuie. (v[i] imi afiseaza locatia din memorie in loc de un intreg). Am incercat sa rezolv, dar fara rezultat, nu prea ma pricep la pointeri. |
Anunturi
▶ Utilizatori activi: 1
0 membri, 1 vizitatori, 0 utilizatori anonimi