Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Dacia 1316 cu 6 usi ...

Frecventa modificata radio

Un nou pericol pt batrani

Ar trebuii sa vindem imobiliarele...
 Dupa renuntarea la aparat dentar

pelerinaj in Balcik

Noul format Jpegli iși propu...

Dade, dade
 Probleme accesare nr test telefon

Parola la lock screen

Deparazitare externa pisici fara ...

Seriale turcesti/coreene online H...
 Merita un Termostat Smart pentru ...

Sfat achizitie MTB Devron Riddle

Problema mare cu parintii= nervi ...

switch microtik
 

Cum folosesc o structura intr-un header?

- - - - -
  • Please log in to reply
13 replies to this topic

#1
g0dafk

g0dafk

    Member

  • Grup: Members
  • Posts: 462
  • Înscris: 10.11.2016
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
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,033
  • Înscris: 24.02.2006
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
g0dafk

g0dafk

    Member

  • Grup: Members
  • Posts: 462
  • Înscris: 10.11.2016
Mersi, am facut asta si acum programul ruleaza doar ca... imi afiseaza Press any key to continue... Posted Image

#4
Cy_Cristian

Cy_Cristian

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 22.02.2009
Pentru ca tu in main declari niste functii, nu le apelezi pe cele existente.

#5
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
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
g0dafk

g0dafk

    Member

  • Grup: Members
  • Posts: 462
  • Înscris: 10.11.2016
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
tavitu

tavitu

    Minune: HE a început să emită facturile!

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009
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
g0dafk

g0dafk

    Member

  • Grup: Members
  • Posts: 462
  • Înscris: 10.11.2016
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
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,033
  • Înscris: 24.02.2006
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
g0dafk

g0dafk

    Member

  • Grup: Members
  • Posts: 462
  • Înscris: 10.11.2016
@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
jegmihai

jegmihai

    Senior Member

  • Grup: Senior Members
  • Posts: 11,536
  • Înscris: 03.09.2013

View Postg0dafk, on 15 decembrie 2017 - 16:10, said:

@tavitu, m-am uitat pe site-ul tau, dar mai rau m-a bagat in ceata.
Arunca o privire si aici: http://www.cplusplus...algorithm/sort/

Mai precis, tavitu ti-a sugerat sa folosesti functia de sortare deja implementata in biblioteca algorithm.

#12
tavitu

tavitu

    Minune: HE a început să emită facturile!

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009
for-ul exterior e în plus.

#13
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,033
  • Înscris: 24.02.2006

View Postjegmihai, 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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007
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

Chirurgia cranio-cerebrală minim invazivă 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

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate