Προς το περιεχόμενο

βοηθεια σε ασκήσεις C


Dimitris_2

Προτεινόμενες αναρτήσεις

Δημοσ.

δεν εχω ξεκηνησει καν :(

 

 

>
#include <stdio.h>

struct address{
   char odos[16];
   int noumero;
};
struct foititis{
   char am[7];
   char onoma[11];
   char epitheto[16];
   struct address dieuthunsi;
   float mo;
   int fail;
};
struct mathima{
   char onoma[16];
   char am_foithth[7];
   float vathmos;
};

void eisagogi();
void ektiposi();
void diorthosi();
void diagrafi();
void taksinomisi();
void enimerosi();
void statistika();
           
           

int main(){
   int epilogi=0;
   while (epilogi!=8){
       while(epilogi<1 || epilogi>8){
           printf("\n1. eisagogi");
           printf("\n2. ektiposi");
           printf("\n3. diorthosi");
           printf("\n4. diagrafi");
           printf("\n5. taksinomisi");
           printf("\n6. enimerosi");
           printf("\n7. statistika stoixeia");
           printf("\n8. eksodos");
           printf("\ndwse epilogi(1-8):");
           scanf("%d",&epilogi);getchar();
       }
       switch(epilogi){
           case 1: eisagogi();
                   epilogi=-1;
                   break;
           case 2: ektiposi();
                   epilogi=-1;
                   break;
           case 3: diorthosi();
                   epilogi=-1;
                   break;
           case 4: diagrafi();
                   epilogi=-1;
                   break;
           case 5: taksinomisi();
                   epilogi=-1;
                   break;
           case 6: enimerosi();
                   epilogi=-1;
                   break;
           case 7: statistika();
                   epilogi=-1;
                   break;
       }
   }
   
   getchar();
   return 0;
}


void eisagogi(){};
void ektiposi(){};
void diorthosi(){};
void diagrafi(){};
void taksinomisi(){};
void enimerosi(){};
void statistika(){};

 

τώρα ξεκίνησες , καλή συνέχεια

  • Απαντ. 39
  • Δημ.
  • Τελ. απάντηση
Δημοσ.
φαγώθηκες, δε πιστεύουμε σε θεούς και δαίμονες... (να δω τι θα σου απαντήσει ο V.I.S)

:-p

 

 

εσύ υιοθέτησες την '.'

 

εγώ...

 

 

δλδ το σύμβολο είναι σαν υπογραφή "αγράμματου" ; :mrgreen:

 

 

πιστεύω ότι μπορεί να εξηγηθεί η άσκηση χωρίς να δωθεί ο κώδικας

κάτι τέτοιο θα βοηθήσει κάποιον που ενδιαφέρεται, να φτάσει "σώος στην στεριά", "κουνώντας λίγο τα χέρια του"

 

αλλιώς συμφωνώ με την "αυστηρή" κριτική και τις "νουθεσίες"

 

και παρακολουθώ με την ελπίδα να μάθω

 

οV.I.S πρέπει να ασχοληθεί με πιό προχωρημένους

συγκριτικά ο νεαρός είναι "χειρώνακτας" σαν κι εμένα :mrgreen:

 

.

Δημοσ.

παλιά

 

 

που οι άνθρωποι πίστευαν σε θεούς και δαίμονες

τα τσιράκια μάθαιναν την τέχνη, εφ'όσον ο μάστορας, τους άφηνε να δούν

 

μετά ήρθε ο Δαρβίνος και η επιστήμη

τα τσιράκια ονομάσθηκαν μαθητές και οι μάστορες δάσκαλοι

 

στην νέα τάξη πραγμάτων ο λόγος και η γραφή είχαν καθοριστική σημασία

 

πιό μετά ήρθε η εικόνα

και οι μαθητές ανακάλυψαν την xerox !

 

 

 

και τέλος ήρθε το copyleft και το Linux

κι ζήσαμε όλοι καλά κι αυτοί καλύτερα ! :mrgreen:

 

 

ξέχασα το insomnia

αλλά φοβάμαι το bigban ! :mrgreen:

 

.

Δημοσ.

@ natural_sgf, gtroza

 

H ιστορία :

Mια γυναίκα όταν έβαζε ψητό στο φούρνο έκοβε πάντα ένα μικρό τμήμα από το κρέας.

Την ρωτά η κόρη της "γιατί ; " και απαντά "διότι το έκανε η μητέρα μου".

Ρωτά λοιπόν την γιαγιά της κι εκείνη απαντά πάλι "διότι το έκανε η μητέρα μου".

Και τελικά ρωτά την μεγάλη γιαγιά και της απαντά :

"έκοβα συνήθως ένα μικρό κομμάτι από το κρέας διότι το ταψί ήταν μικρό και δεν το χωρούσε !!".

 

To νόημα :

Η παύλα που χρησιμοποιώ έχει (ή είχε) πρωταρχικά λειτουργικό σκοπό.

Συνήθως τη θέτω για να υπάρχει επαρκές κενό ανάμεσα στο κείμενο του μηνύματος και στο πέρας του χώρου του μηνύματος.

Έτσι το κείμενο δίνει την εντύπωση ότι δεν στριμώχνεται και είναι λιγότερο κουραστικό για το μάτι.

Εσείς γιατί βάζετε τα αντίστοιχα δικά σας ;

 

-

Δημοσ.
@ natural_sgf, gtroza

 

H ιστορία :

Mια γυναίκα όταν έβαζε ψητό στο φούρνο έκοβε πάντα ένα μικρό τμήμα από το κρέας.

Την ρωτά η κόρη της "γιατί ; " και απαντά "διότι το έκανε η μητέρα μου".

Ρωτά λοιπόν την μητέρα της κι εκείνη απαντά πάλι "διότι το έκανε η μητέρα μου".

Και τελικά ρωτά την μεγάλη γιαγιά και της απαντά :

"έκοβα συνήθως ένα μικρό κομμάτι από το κρέας διότι το ταψί ήταν μικρό και δεν το χωρούσε !!".

 

To νόημα :

Η παύλα που χρησιμοποιώ έχει (ή είχε) πρωταρχικά λειτουργικό σκοπό.

Συνήθως τη θέτω για να υπάρχει επαρκές κενό ανάμεσα στο κείμενο του μηνύματος και στο πέρας του χώρου του μηνύματος.

Έτσι το κείμενο δίνει την εντύπωση ότι δεν στριμώχνεται και είναι λιγότερο κουραστικό για το μάτι.

Εσείς γιατί βάζετε τα αντίστοιχα δικά σας ;

 

-

 

επειδή στο θέμα τις παύλας, είμαι η προγιαγιά της ιστορίας

θα αναφερθώ στο πρώτο μέρος

είναι η εξήγηση που πρέπει να πάρει ως "λύση" ο Δημήτρης

για να μάθει να "μαγειρεύει" τα ψάρια που θα μάθει να "ψαρεύει" ! :mrgreen:

άν η προγιαγιά εκτός που άφηνε την κόρη της να βλέπει τον "κώδικα" μαγειρικής, εξηγούσε τότε καί τις "διαδικασίες"

δεν θα είχαν απορίες αργότερα

μπορούσε αυτή την επαναλαμβανόμενη κίνηση να την βάλει σε ένα include pote_koboume_komataki.h

 

για να μην κολλάει κάποιο link που παραθέτω με την υπογραφή μου

λίγο πρωτόγονο βέβαια, αλλά είμαι και των σπηλαίων

και του interpreter από ανάγκη

Δημοσ.

λοιπόν, επειδή είπες ότι θες βοήθεια και είσαι 1ο εξάμηνο

είπα να βοηθήσω

 

file1

>
#include "sxolh.h"

int main()
{
   afkson_arithmos=1;
   f = (char*)"Foitites.dat";
   m = (char*)"Mathimata.dat";


   int epilogi = menu();
   checkchoise(epilogi);

}

 

sholh.h

>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

struct address
{
   char odos[16];
   int noumero;
};
struct foititis
{
   char am[7];
   char onoma[11];
   char epitheto[16];
   struct address dieuthunsi;
   float mo;
   int fail;
};
struct mathima
{
   char onoma[16];
   char am_foithth[7];
   float vathmos;
};

//revmata eksodou gia ta arxeia
ofstream oFoitites;
ofstream oMathimata;
//revmata eisodou gia ta arxeia
ifstream iFoitites;
ifstream iMathimata;

//ta arxeia
char * f ;
char * m ;

int afkson_arithmos;

int menu()
{
   int epilogi;
   do
   {
       cout<<"dwse epilogi "<<endl;
       cout<<"1. eisagogi"<<endl;
       cout<<"2. ektuposi"<<endl;
       cout<<"3. diorthosi"<<endl;
       cout<<"4. diagrafi"<<endl;
       cout<<"5. taksinomisi"<<endl;
       cout<<"6. enimerosi"<<endl;
       cout<<"7. statistika stoixeia"<<endl;
       cin>>epilogi;
   }while(epilogi<1 || epilogi>7);
   return epilogi;
}
ostream& operator<<(ofstream& ofs,foititis f)
{
   return ofs<<f.am<<" "<<f.epitheto<<" "<<f.onoma<<" "<<f.dieuthunsi.odos<<" "<<f.dieuthunsi.noumero<<" "<<f.mo<<" "<<f.fail;
}
void operator>>(foititis f,ifstream& ifs)
{
   ifs>>f.am>>f.epitheto>>f.onoma>>f.dieuthunsi.odos>>f.dieuthunsi.noumero>>f.mo>>f.fail;
}
void eisagogi()
{
   int epilogi;
   do{
       cout<<"se poio arxeio thes na kaneis eisagogi?"<<endl;
       cout<<"1=>Foitites.dat \t  2=>Mathimata.dat"<<endl;
       cin>> epilogi;
   }while(epilogi<1 || epilogi>2);

   if(epilogi == 1)
   {
       foititis input;
       input.am[0]='T';
       input.am[1]='O';
       if(afkson_arithmos<10)
           input.am[2]=afkson_arithmos;
       else if(afkson_arithmos<100)
       {
           char s[2];
           itoa(afkson_arithmos,s,10);
           input.am[2]=s[0];
           input.am[3]=s[1];
       }
       else if(afkson_arithmos<1000)
       {
           char s[3];
           itoa(afkson_arithmos,s,10);
           input.am[2]=s[0];
           input.am[3]=s[1];
           input.am[4]=s[2];
       }
       //telos to aem
       input.mo=0;//mesos oros 0
       input.fail=0;//apotixies 0
       cout<<"dwse onoma ";cin>>input.onoma;
       cout<<"dwse epitheto ";cin>>input.epitheto;
       cout<<"dwse dietfthinsi ";cin>>input.dieuthunsi.odos;
       cout<<"dwse arithmo ";cin>>input.dieuthunsi.noumero;

       foititis backup[afkson_arithmos];
       iFoitites.open(f);
       for(int i=0;i<afkson_arithmos;i++)
           backup[i]>>iFoitites;
       iFoitites.close();

       oFoitites.open(f);//dimiourgia revmatos
       for(int i=0;i<afkson_arithmos;i++)
           oFoitites<<backup[i];
       oFoitites<<input;//eggrafi sto arxeio
       oFoitites.close();//kleisimo revmatos
       afkson_arithmos++;
   }
   else//epilogi==2
   {

   }

}
void ektuposi()
{
}
void diorthosi()
{
}
void diagrafi()
{
}
void taksinomisi()
{
}
void enimerosi()
{
}
void statistika_stoixeia()
{
}



void checkchoise(int epilogi)
{
   switch (epilogi)
   {
       case (1) : eisagogi(); break;
       case (2) : ektuposi(); break;
       case (3) : diorthosi(); break;
       case (4) : diagrafi(); break;
       case (5) : taksinomisi(); break;
       case (6) : enimerosi(); break;
       case (7) : statistika_stoixeia(); break;
   }
}

 

ότι άλλο θες το ζητάς, αλλά προτιμώ να το λύσεις μόνος σου

πιστεύω ότι σου έδωσα αρκετά βήματα

Δημοσ.

@gtroza

α, εγώ νόμιζα ότι ο χαρακτήρας στο τέλος ήταν κάτι σαν ανεπίσημη υπογραφή...

Οπότε, όντας θρήσκο παιδί(!), διάλεξα το σύμβολο που χρησιμοποιεί ο δεσπότης... (αλλά μπορείς να το ερμηνεύσεις και σαν το Χ του αγράμματου-σκλάβου (εξαρτάται αν έχεις καταλάβει τι βαθμό σκοταδισμού έχει παιχτεί...πρόσφατο: ο μηχανισμός των Αντικυθήρων υλοποιημένο σε lego))

 

και για να μην αφήσω τον Δημήτρη παραπονεμένο: του δίνω ένα "αγκίστρι":

>
read_from_file(char *filename) {
// FILE pointer
FILE *input_file;
//allocate memory for lines to be read from file - LINE_MAX is a constant (use #define)
char *string = (char *)malloc(sizeof(char)*LINE_MAX);
// open file in read mode
input_file = fopen(filename, "r"); 
if(input_file == NULL) 
	perror("Error opening file");
else { //start importing data
	while(!feof(input_file)){ // until the end of file
		fgets(string, LINE_MAX, input_file); // read line
		printf("%s", string); //print line
	}
}
fclose(input_file);
}

 

έτσι διαβάζεις από αρχείο...

 

 

Υ.Γ. και επειδή το αρχείο είναι .dat, πολύ πιθανό να εννοεί binary file, οπότε θα πρέπει να το ψάξεις πως να το ανοίξεις ( ενδεικτική πηγή: http://www.cprogramming.com/tutorial/cfileio.html )

 

edit: typo

Δημοσ.
@gtroza

α, εγώ νόμιζα ότι ο χαρακτήρας στο τέλος ήταν κάτι σαν ανεπίσημη υπογραφή...

Οπότε, όντας θρήσκο παιδί(!), διάλεξα το σύμβολο που χρησιμοποιεί ο δεσπότης... (αλλά μπορείς να το ερμηνεύσεις και σαν το Χ του αγράμματου-σκλάβου (εξαρτάται αν έχεις καταλάβει για τι βαθμό σκοταδισμού έχει παιχτεί...πρόσφατο: ο μηχανισμός των Αντικυθήρων υλοποιημένο σε lego*))

 

και για να μην αφήσω τον Δημήτρη παραπονεμένο: του δίνω ένα "αγκίστρι":

 

τώρα είστε στο δρόμο του θεού ! :mrgreen:

 

αν εξηγήσεις και γιατί δένουμε κατάλληλα το αγκίστρι, ώστε να μή σου πεί, ρε μάστορα λύθηκε γμτ !

 

μόλις έβγαλα κάτι "ευαγγέλια" αλλά είναι στα αραμαϊκά και δεν γνωρίζω!

θα έκανα "κατήχηση" αλλά με σώσατε :mrgreen:

 

*έτσι προγραμματίζω εγώ με tcl/tk

post-74848-0-90622600-1292282668_thumb.jpg

Δημοσ.

μου αρέσει το minimal DIY laptop stand!

τα βιβλία δεν τα πρόσεξα καν ( :D )

Δημοσ.

για να μην ζεσταίνει το τραπέζι (καπλαμάς)

16mm novopan+περιοδικό+ξυλάκι πίσω για κλίση και εξαερισμό-αισθητή διαφορά

θα τα προσέξει ο V.I.S. :mrgreen:

 

 

MeTaXaS4

26-10 28-10 και 4-8

έδωσαν τη λύση !:mrgreen: :mrgreen: :mrgreen:

 

.

Δημοσ.

είχα ρωτήσει αν η εγγραφή διορθωμένης γραμμής γίνεται μέσω πίνακα

δλδ εγγραφή μόνο της γραμμής ή όλου του αρχείου ;

 

.

Δημοσ.

είχα ρωτήσει αν η εγγραφή διορθωμένης γραμμής γίνεται μέσω πίνακα

δλδ εγγραφή μόνο της γραμμής ή όλου του αρχείου ;

 

.

τι εννοείς;;

Δημοσ.

και για να μην αφήσω τον Δημήτρη παραπονεμένο: του δίνω ένα "αγκίστρι":

>
read_from_file(char *filename) {
// FILE pointer
FILE *input_file;
//allocate memory for lines to be read from file - LINE_MAX is a constant (use #define)
char *string = (char *)malloc(sizeof(char)*LINE_MAX);
// open file in read mode
input_file = fopen(filename, "r"); 
if(input_file == NULL) 
	perror("Error opening file");
else { //start importing data
	while(!feof(input_file)){ // until the end of file
		fgets(string, LINE_MAX, input_file); // read line
		printf("%s", string); //print line
	}
}
fclose(input_file);
}

 

έτσι διαβάζεις από αρχείο...

 

Αυτός ο τρόπος ανάγνωσης του αρχείου είναι λανθασμένος: δες εδώ

Δημοσ.

δεν είναι απίθανο να είναι λάθος το συγκεκριμένο...

(written from memory)

Δημοσ.

είχα ρωτήσει αν η εγγραφή διορθωμένης γραμμής γίνεται μέσω πίνακα

δλδ εγγραφή μόνο της γραμμής ή όλου του αρχείου ;

 

.

 

Εννοείς σε αρχείο .dat ε..? Διορθώνεται και μόνο μια εγγραφη χωρίς να είναι απαραίτητη η χρήση πίνακα.. (αν κατάλαβα τι εννοείς.!)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...