Deadsell Δημοσ. 23 Μαΐου 2014 Δημοσ. 23 Μαΐου 2014 Καλησπέρα παιδιά έχω να παραδώσω μια εργασία για το ΤΕΙ μου και εχω κολλήσει λιγο για το πως θα γίνει κατι σχετικα με ενα προγραμμα που πρέπει να φτιάξουμε σε c++. Λοιπόν δείτε την εκφώνηση λίγο: Σε ένα αρχείο text, με όνομα έστω TP.txt, είναι γραμμένες οι τιμές (τύπου long) των στοιχείων ενός τετραγωνικού πίνακα, έστω Α. Τα στοιχεία είναι γραμμένα κατά γραμμές (σε κάθε γραμμή του αρχείου μια γραμμή του πίνακα). Στη πρώτη γραμμή του αρχείου υπάρχει ένας μόνον φυσικός αριθμός που είναι το πλήθος γραμμών και στηλών του πίνακα Α. Γράψτε πρόγραμμα που θα διαβάζει από το αρχείο TP.txt τα στοιχεία του πίνακα Α. Στη συνέχεια, θα γράφει σε αρχείο μη μορφοποιημένο, με όνομα στο δίσκο TP.dta, μόνον τα μη μηδενικά από τα στοιχεία του πίνακα Α. Για κάθε μη μηδενικό στοιχείο του πίνακα, χρησιμοποιώντας τη συνάρτηση grapseNZ , θα γράφει στο αρχείο μια τριάδα τιμών (τύπου long): τη γραμμή (g), τη στήλη (s) και την τιμή του στοιχείου (a[g]). Στη αρχή του αρχείου θα γράφεται μια τιμή (τύπου long) που δίνει το πλήθος γραμμών και στηλών του πίνακα. Την συνάρτηση την έχω έτοιμη την grapseNZ. Απλά έχω κολλήσει για το πως θα υλοποιηθεί ο κώδικας ακριβώς ... Και αυτό το αρχείο TP περιέχει νούμερα μέσα και μηδενικά αλλα και μη μηδενικα.. Αν μπορούσε να βοηθήσει κάποιος...
Timonkaipumpa Δημοσ. 23 Μαΐου 2014 Δημοσ. 23 Μαΐου 2014 Την grapseNZ την έφτιαξες εσύ; Γιατί όπως φαίνεται στην εκφώνηση σας την δίνει έτοιμη.
Cboy Δημοσ. 23 Μαΐου 2014 Δημοσ. 23 Μαΐου 2014 Στις 23/5/2014 στις 5:02 ΜΜ, Timonkaipumpa είπε Την grapseNZ την έφτιαξες εσύ; Γιατί όπως φαίνεται στην εκφώνηση σας την δίνει έτοιμη. Αυτό θα ρωτούσα και εγώ αλλα με πρόλαβες.
bird Δημοσ. 23 Μαΐου 2014 Δημοσ. 23 Μαΐου 2014 Πολύ χοντρικά κάπως έτσι μπορείς να το κάνεις... άνοιξε το αρχείο διάβασε το μέγεθος του πίνακα (Ν) δέσμευσε μνήμη για έναν πίνακα NxN για i απο 1 έως Ν για j από 1 έως Ν Διάβασε από το αρχείο το στοιχείο του πίνακα Αν το στοιχείο είναι μη μηδενικό Γράψε στο αρχείο με τη grapseNZ(i,j,στοιχείο) τελος Αν Τελος Για Τελος Για Αν ξέρεις βασικά της C++ δεν είναι κάτι ιδιαίτερα δύσκολο εκτός κι αν δεν έχω καταλάβει καλά...
Deadsell Δημοσ. 23 Μαΐου 2014 Μέλος Δημοσ. 23 Μαΐου 2014 την έφτιαξα εγώ ναι.. ήταν το πρωτο ερώτημα...που έπρεπε να κάνω... απλα κόλλησα στο τρίτο :/
MeTaXaS4 Δημοσ. 23 Μαΐου 2014 Δημοσ. 23 Μαΐου 2014 εργασία μήτσας στο insomnia δεν περίμενα... έχεις μέχρι τέλος του μήνα 8μέρες είναι αρκετές...
Deadsell Δημοσ. 24 Μαΐου 2014 Μέλος Δημοσ. 24 Μαΐου 2014 μεχρι Δευτέρα είναι απο οτι ξερω... όχι μεχρι τελος του μήνα και χρειάζομαι λίγη βοήθεια για το τρίτο κομμάτι
MeTaXaS4 Δημοσ. 24 Μαΐου 2014 Δημοσ. 24 Μαΐου 2014 ας είναι. τι ακριβώς πρόβλημα έχεις; αυτό που έγραψε ο bird το διάβασες; (μην ξεχνάς ουσία έχει να μάθεις όχι να περάσεις το μάθημα)
Deadsell Δημοσ. 24 Μαΐου 2014 Μέλος Δημοσ. 24 Μαΐου 2014 ναι σύμφωνα με αυτο προσπαθώ τωρα να κάνω το πρόγραμμα... απλά θέλω να το περάσω το μάθημα και λογικά θα γίνει, απλα αν δει η Μητσα οτι ασχολήθηκα θα με περάσει... λογικα ακομα και να μην τρεχει... #include <iostream>#include <fstream>using namespace std;int main(int argc,char *argv[]){ifstream iF;long wl;iF.open("TP.txt",ios::binary|ios::in);if(!iF.is_open())return 0;bool eof=iF.eof();while(!eof) {iF.read(reinterpret_cast<char*>(&wl),sizeof(long));eof=iF.eof();if(!eof)cout<<wl<<"/";}iF.close();int i,j;int n ;int item[n][n];for(int i=0; i<n; i++){ for(int j=0; j<n; j++) { cout<<item[j] ; cout<<sizeof(item[j]); } cout<< endl;}} απλά κόλλησα τώρα για το πως θα διαβάσει το στοιχείο του πίνακα και θα αναγνωρίζει αν ειναι μη μηδενικό και μετα να το πετάει σε νέο αρχείο αυτα τα μη μηδενικα στοιχεία ...
Deadsell Δημοσ. 24 Μαΐου 2014 Μέλος Δημοσ. 24 Μαΐου 2014 σε αυτο οχι... απλα εχω κανει αυτο και μου τρέχει το μόνο που μου λείπει να κάνω και έχω κολλήσει ειναι για το πως θα διαβάσει το στοιχείο του πίνακα και θα αναγνωρίζει αν ειναι μη μηδενικό και μετα να το πετάει σε νέο αρχείο αυτα τα μη μηδενικα στοιχεία ...
MeTaXaS4 Δημοσ. 24 Μαΐου 2014 Δημοσ. 24 Μαΐου 2014 τώρα μου έβγαλε τον κώδικα που είχες γράψει... έχεις καταλάβει τι έχεις γράψει; το έχεις περάσει σε IDE ? του έχεις κάνει compile? επίσης (επειδή έχω την εκφώνηση) το αρχείο που διαβάζεις δεν είναι binary!
Deadsell Δημοσ. 24 Μαΐου 2014 Μέλος Δημοσ. 24 Μαΐου 2014 το εκανα compile και τρεχει ... απλα φιλε δεν ειμαι και τοσο καλος στον προγραμματισμο για αυτο ζηταω και βοήθεια... :/ για το αρχειο δηλαδή που διαβάζω δεν χρειάζεται το "ios::binary" μονο το "ios::in" χρειαζεται?
MeTaXaS4 Δημοσ. 24 Μαΐου 2014 Δημοσ. 24 Μαΐου 2014 το iF.open("TP.txt",ios::binary|ios::in); μπορεί να γίνει iF.open("TP.txt");εδώ while(!eof) { iF.read(reinterpret_cast<char*>(&wl),sizeof(long)); eof=iF.eof(); if(!eof)cout<<wl<<"/"; } iF.close(); χρησιμοποιείς casting από char* σε long ώστε να διαβάσεις από το αρχείο δεν σου χρειάζεται ούτε αυτό. όπως λέει και ο bird άνοιξε το αρχείο. εφόσον ανοίξεις διάβασε την 1η τιμή του αρχείου π.χ. 10000 και βάλε την στην μεταβλητή Ν. φτιάξε τον πίνακά σου tbl[N][N] και μετά με διπλή for διάβασε τα άλλα στοιχεία του πίνακα. όταν τα διαβάζεις έλεγχε αν είναι ίσο με 0 και πράξε αναλόγως.
Deadsell Δημοσ. 24 Μαΐου 2014 Μέλος Δημοσ. 24 Μαΐου 2014 οκ το έσβησα και αυτο το κομμάτι "while(!eof) {iF.read(reinterpret_cast<char*>(&wl),sizeof(long));eof=iF.eof();if(!eof)cout<<wl<<"/";}iF.close();" για δες πως εφτιαξα τον κωδικα τωρα... #include <iostream>#include <fstream>using namespace std;int main(int argc,char *argv[]){ifstream iF;long wl;iF.open("TP.txt");if(!iF.is_open())return 0;bool eof=iF.eof();int i,j;int n=1000 ;int tbl[n][n];for(int i=0; i<n; i++){ for(int j=0; j<n; j++) { if(n!=0) { ofstream myfile; myfile.open ("neo.txt",ios::out | ios::app | ios::binary ); //θα δημιουργεί νεο αρχειο } cout<<tbl[j] ; cout<<sizeof(tbl[j]); } cout<< endl;}} Το μόνο θέμα που εχω ειναι οτι οταν το τρεχω και το κανω compile μου βγαζει μνμ Unitled.exe has stop working. Μήνυμα απο τα windows και δεν ξερω γιατι. κατι δεν μου κολλαει παντως ...
Προτεινόμενες αναρτήσεις