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 |
Cum folosesc o structura intr-un header?
Last Updated: Dec 15 2017 23:21, Started by
g0dafk
, Dec 15 2017 11:23
·
0
#1
Posted 15 December 2017 - 11:23
Am declarat o structura:
struct elev{ char nume[10]; char prenume[10]; int minute = 0, secunde = 0; }; Si vreau s-o folosesc intr-un header, sa fac o functie care citeste elevii de la tastatura, dar nu-mi recunoaste tipul meu de date elev. void CitireElevi(elev v[], int n) Il subliniaza cu o linie rosie... Am mai adaugat si niste variabile care la fel, nu imi sunt vazute in afara fisierului source.cpp. De exemplu vreau sa folosesc o variabila declarata in source.cpp in header.cpp unde am o functie. source.cpp: #include <iostream> using namespace std; int barem_minute = 4; struct elev { char nume[10]; char prenume[10]; int minute = 0, secunde = 0; }; int main() { elev v[20]; int n = 5; void CitireElevi(elev v[], int n); void AfisareElevi(elev v[], int n); } header.h: #pragma once #include <iostream> using namespace std; void CitireElevi(elev v[], int n); void AfisareElevi(elev v[], int n); header.cpp: #include "Header.h" void CitireElevi(elev v[], int n) { for (int i = 0; i < n; i++) { cout << "Nume elev: "; cin >> v[i].nume; cout << "Prenume elev: "; cin >> v[i].prenume; cout << "Minute: "; cin >> v[i].minute; cout << "Secunde: "; cin >> v[i].secunde; } } void AfisareElevi(elev v[], int n) { for (int i = 0; i < n; i++) { if (v[i].minute > barem_minute && v[i].secunde > barem_secunde) { } } } Edited by g0dafk, 15 December 2017 - 11:52. |
#2
Posted 15 December 2017 - 12:25
de unde vrei sa stie compilatorul ce-i aia "elev" atunci cand proceseaza fisierul header.h ?
pune structura intr-un .h si include-l atat in header.h cat si in header.cpp, astfel incat compilatorul sa stie ce vrei sa faci |
#3
Posted 15 December 2017 - 12:42
Mersi, am facut asta si acum programul ruleaza doar ca... imi afiseaza Press any key to continue...
|
#4
Posted 15 December 2017 - 12:49
Pentru ca tu in main declari niste functii, nu le apelezi pe cele existente.
|
#5
Posted 15 December 2017 - 12:53
Pai trebuie si sa creezi o functie main care va fi executata prima data:
int main(void) { printf("hi hjk"); return 0; } in functia main introduci codul de citire a elevilor. Am creat un program in Pelles C: Class1.h: typedef struct _elev *elev; void CitireElev(elev v); Class1.c #include <stdio.h> #include <windows.h> #include <commctrl.h> #include <Class1.h> struct _elev { char nume[10]; char prenume[10]; int minute, secunde; }; void CitireElev(elev v) { } int main(void) { printf("hi hjk"); return 0; } Nu reusesc inca sa creez un array de elevi, nu stiu de ce! Citeste: http://wiki.pellesc....php/adt_example |
#6
Posted 15 December 2017 - 13:03
Asa e, m-am tampit, dadusem prea mult copy paste si nu observasem ca in main am tot declarari de functii.
As mai avea o intrebare, daca vreau sa afisez elevii in ordine alfabetica dupa nume si prenume, cea mai simpla metoda ar fi sa sortez vectorul alfabetic, nu? Stiu sa-l sortez dupa nume, dar dupa nume si prenume.. cum ar trebui sa fac? Sa fac 2 sortari, una dupa nume si una dupa prenume? |
#7
Posted 15 December 2017 - 13:13
Scrii un comparator custom care compară doi elevi după nume și prenume și folosești sort. Vezi link.
http://en.cppreferen.../algorithm/sort Două sortări nu funcționează decât în cazuri foarte speciale. |
#8
Posted 15 December 2017 - 16:10
Codul asta e corect? Si prin corect ma refer la ceea ce face, ca de rulat, ruleaza.
void SortareElevi(elev v[], int n) { int ok = 0; for (int i = 0; i < n; i++) { do { ok = 0; for (int i = 0; i < n - 1; i++) { if (v[i].nume > v[i + 1].nume && v[i].nume != v[i + 1].nume) { swap(v[i].nume, v[i + 1].nume); swap(v[i].prenume, v[i + 1].prenume); swap(v[i].minute, v[i + 1].minute); swap(v[i].secunde, v[i + 1].secunde); ok = 1; } if (v[i].nume == v[i + 1].nume) { if (v[i].prenume > v[i + 1].prenume) { swap(v[i].nume, v[i + 1].nume); swap(v[i].prenume, v[i + 1].prenume); swap(v[i].minute, v[i + 1].minute); swap(v[i].secunde, v[i + 1].secunde); ok = 1; } } } } while (ok); } } @tavitu, m-am uitat pe site-ul tau, dar mai rau m-a bagat in ceata. Am incercat ceva mai sus, plecand de la o sortare simpla de cuvinte. M-am gandit sa sortez dupa nume, si unde gasesc 2 nume egale, sa sortez dupa prenume... kinda.. Edited by g0dafk, 15 December 2017 - 16:11. |
#9
Posted 15 December 2017 - 16:52
1. folosesti entitati de tip clase (printre altele) ca sa poti trata informatiile ca pe un intreg. deci n-are rost sa schimbi toate datele obiectelor de pe pozitiile i si i+1, cand poti schimba obiectele in sine
2. daca A>B, atunci cu siguranta A!=B (apropo de comparatia din primul for) |
#10
Posted 15 December 2017 - 17:06
@Smiley
1.Mersi, nu ma gandeam la asta. 2.Sunt zapacit rau, nu imi dadeam seama daca nu-mi ziceai. =)) Edited by g0dafk, 15 December 2017 - 17:07. |
|
#11
Posted 15 December 2017 - 17:12
g0dafk, on 15 decembrie 2017 - 16:10, said:
@tavitu, m-am uitat pe site-ul tau, dar mai rau m-a bagat in ceata. Mai precis, tavitu ti-a sugerat sa folosesti functia de sortare deja implementata in biblioteca algorithm. |
#13
Posted 15 December 2017 - 18:39
jegmihai, on 15 decembrie 2017 - 17:12, said:
Mai precis, tavitu ti-a sugerat sa folosesti functia de sortare deja implementata in biblioteca algorithm. la nivelul la care e 0dafk, e o sugestie destul de nepotrivita. el are acum nevoie sa invete limbajul si (mai ales) algoritmica, nu metode deja existente pe care doar sa le apeleze. |
#14
Posted 15 December 2017 - 23:21
Vrei sa sortezi dupa multiple criterii? Compari pe rand, ex:
int diferenta = a.camp1 - b.camp1; if (diferenta != 0) return diferenta; diferenta = a.camp2 - b.camp2; if (diferenta != 0) return diferenta; ... return diferenta; |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users