help me pointer

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
ksinis
Δημοσιεύσεις: 1
Εγγραφή: 18 Μαρ 2008 00:12

help me pointer

Δημοσίευση από ksinis » 18 Μαρ 2008 00:22

#include <stdio.h>;
#include <iostream.h>;
#define N 3

struct student_struct
{
char am[6]; // ari8mos mhtroou
char ep[30]; // epwnymo
char on[30]; // onoma
char onp[30]; // onoma patros
char die[40]; // diey8ynsh
char thl[10]; // ari8mos sta8erou
char mat[30]; // epilegmeno ma8hma
}students [N];


int i;

void print_student(student_struct st)
{
cout << "\n"<< "AM: "<< students.am <<"\n";
cout << "EPWNYMO: "<<students.ep <<"\n";
cout << "ONOMA: "<< students.on <<"\n";
cout << "ONOMA PATROS: "<< students.onp <<"\n";
cout << "DIEY8YNSH: "<< students.die <<"\n";
cout << "THLEFWNO: "<< students.thl <<"\n";
cout << "MA8HMA: "<< students.mat <<"\n";
}
int main()
{
struct student_struct st;
char ch;

for (i=0;i<N;i++)
{
cout << "\n" << "DWSE AM: ";
cin >>students.am ;
cout << "DWSE EPWNYMO:";
cin >> students.ep ;
cout << "DWSE ONOMA: ";
cin >> students.on ;
cout << "DWSE ONOMA PATROS: ";
cin >> students[i].onp ;
cout << "DWSE DIEY8YNSH: ";
cin >> students[i].die ;
cout << "DWSE THLEFWNO: ";
cin >> students[i].thl ;
cout << "DWSE MA8HMA: ";
cin >> students[i].mat;


}
cout << "\nExete pliktrologisei ta parkato stoixeia \n";
for (i=0; i<N; i++)
print_student (students[i]);
// press a key to exit
cin >> ch ;
return 0;
}


Εχω φτιαξει τον πιο πανω κωδικα.Το ερωτημα ειναι πως με την βοηθεια δεικτη υα μπορω να προσδιορισω τις εγγραφες με ιδιο .mat Δεν θελω τροπο που να μην χρεισημοποιει δεικτες γιατι το φτιαχνω και μονος μου.Αν καποιος εχει καποια ιδεα γιατι με τους δεικτες δεν τα παω καλα οπως πολλοι αλλωστε :-)

Άβαταρ μέλους
lightf0rce
Δημοσιεύσεις: 4
Εγγραφή: 21 Ιαν 2008 01:30

help me pointer

Δημοσίευση από lightf0rce » 20 Μαρ 2008 01:28

diladi psaxneis kati san afto:

student_struct *a = new student_struct; h
student_struct *a;

prosdiorise ligo parapanw...

Programmer
Δημοσιεύσεις: 67
Εγγραφή: 22 Σεπ 2007 06:55

help me pointer

Δημοσίευση από Programmer » 22 Μαρ 2008 23:42

Θα χαρακτήριζα το προγραμμα πολύ κακοσχεδιασμένο-κακογραμμένο που δικαιολογέιται όμως επειδή λες ότι είσαι αρχάριος.

Δεν απαιτέιται δέικτης σε αυτό το πρόγραμμα αλλα καλύτερη οργάνωση...

Π..χ
1) το i δεν πρέπει να έιναι καθολική μεταβλητή. Δεν κερδίζεις τίποτα, και ένα τέτοιο στυλ σχεδιασμού θα σου δημιουργήσει προβλήματα.

2) Η συνάρτηση δέχεται παράμετρο που δεν χρησιμοποιέι ποτέ γιατί χρησιμοποιέι την καθολική μεταβλητή τύπου πίνακα δομής.

Επίσης δεν διατυπώνεις σωστά το ερώτημα που θα έπρεπε να χρησιμοποιήσεις δέικτη προφανώς επειδή δεν ξέρεις που πρεπει να χρησιμοποιήσεις δέικτη... Οι δέικτες δεν είναι αυτοσκοπός αλλα μια δυνατότητα που λύνει ή βοηθά στην λυση προβλημάτων...Πουθενά δεν απαιτέιται να χρησιμοποιήσεις δέιτκη στο π΄ρογραμμα σου αλλα και παντού μπορέις να χρησιμοποιήσεις...

π.χ. (όλο το πρόγραμμα με χρήση δεικτών στη δομή)

#include <stdio.h>
#include <iostream.h>

#define N 3

struct student_struct
{
char am[6]; // ari8mos mhtroou
char ep[30]; // epwnymo
char on[30]; // onoma
char onp[30]; // onoma patros
char die[40]; // diey8ynsh
char thl[10]; // ari8mos sta8erou
char mat[30]; // epilegmeno ma8hma
};


void print_student(student_struct* pSt)
{
cout << "\n"<< "AM: "<< pSt->am <<"\n";
cout << "EPWNYMO: "<<pSt->ep <<"\n";
cout << "ONOMA: "<< pSt->on <<"\n";
cout << "ONOMA PATROS: "<< pSt->onp <<"\n";
cout << "DIEY8YNSH: "<< pSt->die <<"\n";
cout << "THLEFWNO: "<< pSt->thl <<"\n";
cout << "MA8HMA: "<< pSt->mat <<"\n";
}

int main()
{
struct student_struct* pSt;
int i;
char ch;

if( NULL == (pSt = new student_struct[N]) )
{
cout << "Memory Error \n";
return 1;
}

for (i=0;i<N;i++)
{
cout << "\n" << "DWSE AM: ";
cin >>pSt.am ;
cout << "DWSE EPWNYMO:";
cin >> pSt.ep ;
cout << "DWSE ONOMA: ";
cin >> pSt.on ;
cout << "DWSE ONOMA PATROS: ";
cin >> pSt.onp ;
cout << "DWSE DIEY8YNSH: ";
cin >> pSt.die ;
cout << "DWSE THLEFWNO: ";
cin >> pSt.thl ;
cout << "DWSE MA8HMA: ";
cin >> pSt.mat;
}

cout << "\nExete pliktrologisei ta parkato stoixeia \n";
for (i=0; i<N; i++)
print_student (&pSt);
// press a key to exit
cin >> ch ;
delete [] pSt;

return 0;
}

ενδεχομένως ως αρχάριο να σε μπερδέψει αυτό το προγραμμα αλλα δεν πειράζει... έχεις δρόμο να μάθεις τους δέικτες...

για το ματ... να μην σου τα πουμε και όλα... φτιαξε κώδικα κάπως ετσι με δείκτες...

for(i=0; i<N-1; i++)
for( j=i+1; j<N; j++)
if( 0 == strcmp(pSt.mat, pSt[j].mat) )
cout << "Evreka!";

Το πως ακριβώς θα γίνει οκώδικας εξαρτάται από το τι ακριβως ζητάς...

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες