forum.math.uoa.gr

Forum του Τμήματος Μαθηματικών
Ημερομηνία 21 Νοέμ 2017, 15:59

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]




Δημιουργία νέου θέματος Απάντηση στο θέμα  [ 5 δημοσιεύσεις ] 
Συγγραφέας Μήνυμα
 Θέμα δημοσίευσης: Aπορια C
ΔημοσίευσηΔημοσιεύτηκε: 08 Σεπ 2016, 11:19 
Χωρίς σύνδεση

Εγγραφη: 10 Απρ 2012, 08:22
Δημοσ.: 96
Καλησπέρα. Θα ήθελα να μάθω πως μπορω να διαβάσω το παρακάτω αρχείο στη γλώσσα c.
3 2
3 2
4

Ευχαριστώ! :D


Κορυφή
 Προφίλ  
 
 Θέμα δημοσίευσης: Re: Aπορια C
ΔημοσίευσηΔημοσιεύτηκε: 09 Σεπ 2016, 10:40 
Χωρίς σύνδεση
Regular Forumer

Εγγραφη: 20 Φεβ 2007, 16:28
Δημοσ.: 304
Χρειάζεσαι τις συνάρτησεις fscanf() , fopen() και fclose() .

Ρίξε μια ματιά εδώ :
http://www.tutorialspoint.com/c_standar ... fscanf.htm

(το παράδειγμα στο τέλος της σελίδας ίσως σου φανεί χρήσιμο).

Δοκίμασε επίσης να πληκτρολογήσεις man fscanf ή man fopen ή man fclose σε τερματικό κάποιας διανομής Linux για να δεις πώς συντάσσονται οι αντίστοιχες συναρτήσεις.


Κορυφή
 Προφίλ  
 
 Θέμα δημοσίευσης: Re: Aπορια C
ΔημοσίευσηΔημοσιεύτηκε: 09 Σεπ 2016, 10:58 
Χωρίς σύνδεση
Regular Forumer

Εγγραφη: 20 Φεβ 2007, 16:28
Δημοσ.: 304
Προ αμνημονεύτων ετών είχα γράψει τον παρακάτω κώδικα. Είναι συνάρτηση η οποία δημιουργεί πίνακα m x n και του αναθέτει στοιχεία που διαβάζει από αρχείο. Προσπάθησε να καταλάβεις τί συμβαίνει με τις fopen,fclose,fscanf, έχε όμως υπόψην ότι η συγκεκριμένη συνάρτηση δουλεύει ως κομμάτι μιάς βιβλιοθήκης και ενός κύριου προγράμματος που την καλεί. Στο λέω για να μην χάσεις χρόνο προσπαθώντας να βγάλεις άκρη με πράγματα που δεν σου χρειάζονται.

/* SYNARTHSH DHMIOURGIAS PINAKA/DIANYSMATOS APO ARXEIO */
/* Oi metablhtes "m" kai "n" metaferoun ton ari8mo twn grammwn kai twn sthlwn antistoixa gia ton pinaka */
/* To alfari8mhtiko "x" metaferei to onoma tou arxeiou poy 8a anoixtei */
double **ftiakse_pinaka_apo_arxeio(int m,int n,char *x)
{
int i,j;
FILE *fp;
double a,**c;

/*Elegxos egkyrothtas diastasewn pinaka*/
if ((m<=0) || (n<=0))
{
printf("\n***MH EGKYRES DIASTASEIS***\n");
exit(0);
}

/*Desmeuse mnhmh gia tis grammes tou pinaka kanontas aparaithtous elegxous */
c=(double**)calloc(m,sizeof(double));
if (c==NULL)
{
printf("\n***APOTYXIA DESMEYSHS MNHMHS***\n");
exit(-1);
}

/*Gia ka8emia apo tis grammes tou pinaka, epekteine ton kata n sthles */
for (i=0;i<m;i++)
{
*(c+i)=(double*)calloc(n,sizeof(double));
if (*(c+i)==NULL)
{
printf("\n***APOTYXIA DESMEYSHS MNHMHS***\n");
exit(-1);
}
}

/*Prospa8hse na anoikseis to arxeio x gia anagnwsh */
fp=fopen(x,"r");
if (fp==NULL)
{
printf("\n***LATHOS KATA THN PROSPELASH TOU ARXEIOU***\n");
exit(-1);
}

/* Oso o pinakas den exei gemisei, gemize ton apo to arxeio */
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
if (feof(fp)!=1)
{
fscanf(fp,"%lf ",&a);
*(*(c+i)+j)=a;
}

/* An ta stoixeia tou arxeiou den eparkoun gia ton pinaka, steile antistoixo mhnyma */
else
{
printf("\n***TA DEDOMENA STO ARXEIO %s DEN EPARKOUN ! ***\n", x);
exit(0);
}
}
}

/* Kleise to arxeio poy anoikses */
fclose(fp);

/*Epistrepse th diey8ynsh mnhmhs tou pinaka C */
return(c);
}


Κορυφή
 Προφίλ  
 
 Θέμα δημοσίευσης: Re: Aπορια C
ΔημοσίευσηΔημοσιεύτηκε: 09 Σεπ 2016, 23:20 
Χωρίς σύνδεση

Εγγραφη: 10 Απρ 2012, 08:22
Δημοσ.: 96
Καλησπέρα. Σε ευχαριστώ πολύ για την απάντηση σου, τελικά όμως σκέφτομαι να γράψω σε java τον αλγόριθμο γιατί την ξέρω καλύτερα. Στη java ξέρεις πώς να ανοίγεις το παρακάτω αρχείο;
3 2
3 2
4


Κορυφή
 Προφίλ  
 
 Θέμα δημοσίευσης: Re: Aπορια C
ΔημοσίευσηΔημοσιεύτηκε: 10 Σεπ 2016, 08:10 
Χωρίς σύνδεση
Regular Forumer

Εγγραφη: 20 Φεβ 2007, 16:28
Δημοσ.: 304
https://www.youtube.com/watch?v=1S1fISh-pag

Καλό Σαββατοκύριακο !


Κορυφή
 Προφίλ  
 
Τελευταίες δημοσιεύσεις:  Ταξινόμηση κατά  
Δημιουργία νέου θέματος Απάντηση στο θέμα  [ 5 δημοσιεύσεις ] 

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]


Μελη σε συνδεση

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


Δεν μπορείτε να δημοσιεύετε νέα θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να απαντάτε σε θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επεξεργάζεστε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να διαγράφετε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση

Αναζήτηση για:
Μετάβαση σε:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group