p4rasite Δημοσ. 29 Ιουνίου 2012 Δημοσ. 29 Ιουνίου 2012 (επεξεργασμένο) Καλησπέρα καταρχήν, έχω μια εργασία για ένα πρόγραμμα στη C κι έχω κολλήσει σε ένα σημείο. Αν μπορεί κάποιος ας βοηθήσει plz Λοιπόν, τρέχοντας το πρόγραμμα παίρνω διάφορες τιμές σε έναν μονοδιάστατο πίνακα R. Εδώ οι τιμές δλδ. το i είναι από 1-100000 δηλαδή 100000 τιμές (νούμερα). Αυτά τα νούμερα κυμαίνονται ας πούμε μεταξύ -300 και 300 όλα ακέραια. Θέλω να μου κάνει print σε ένα αρχείο για τα νούμερα αυτά και πόσες φορές εμφανίζεται το καθένα. Δηλαδή μια μορφή κάπως έτσι: -300 0 -299 2 -288 3 . . . 299 4 300 1 Μπορεί να βοηθήσει κάποιος? Επεξ/σία 29 Ιουνίου 2012 από p4rasite
p4rasite Δημοσ. 29 Ιουνίου 2012 Μέλος Δημοσ. 29 Ιουνίου 2012 δεν ειπες σε ποιο σημειο κολησες ομως Έχω 100.000 τιμές (σ'έναν πίνακα) και θέλω να μου τυπώνει σε ένα αρχείο την κάθε τιμή (νούμερο) μία φορά με άυξουσα σειρά και δίπλα να μου εμφανίζει το frequency, δλδ πόσες φορές βρέθηκε αυτό το νούμερο. π.χ αν είχα [-2,0,0,1,3,1,1,1] να τυπώνει: -2___1 -1___0 0___2 1___4 2___0 3___1 ελπίζω να το εξήγησα καλύτερα τώρα
nrkmaiden Δημοσ. 29 Ιουνίου 2012 Δημοσ. 29 Ιουνίου 2012 Ο φιλος πιο πανω μαλλον εννοει σε πιο σημειο του κωδικα εχεις κολλησει.Δηλαδη τι εχεις κανει μεχρι στιγμης.
p4rasite Δημοσ. 29 Ιουνίου 2012 Μέλος Δημοσ. 29 Ιουνίου 2012 Αυτή είναι η άσκηση: Δημιούργησε ένα πρόγραμμα το οποίο θα εκτελεί τυχαίο περίπατο για Ν=1000 βήματα σε μια διάσταση. Υπολόγισε την μετατόπιση R για αυτά τα Ν βήματα και πραγματοποίησε 100 000 επαναλήψεις. Βρες την μέση μετατόπιση <R> και την κατανομή του R. κι αυτό έχω κάνει μέχρι στιγμής >#include <stdio.h> #include <stdlib.h> #include <math.h> #define N 100 #define K 100000 int main() { int R_,run,N_run,max,a,min,seed,R[K]; N_run=K; max=0; min=0; a=0; double R_average,; R_average=0.; seed=12521; srand(seed); FILE*myfile=fopen("Askisi4(1000).txt","w"); for(int i=0;i<K;i++) { R[i]=0; } int x,y,Dx,Dy,plegma[N],steps,N_steps; double random_number; N_steps=1000; for(x=0;x<N;x++) { plegma[x]=0; } for(run=0;run<N_run;run++) { int random_number1; random_number1=rand(); x=(int)(100*(double)random_number1/((double)RAND_MAX+1.)); plegma[x]=1; //printf("x= %d\n",x); Dx=0; srand(run); for(steps=0;steps<N_steps;steps++) { random_number=((double)rand())/((double)RAND_MAX+1.); plegma[x]=0; if(random_number<0.50) { x=x+1; Dx=Dx+1; } else if(random_number>=0.50 && random_number<1.00) { x=x-1; Dx=Dx-1; } if(x<0) x=x+N; else if(x>=N) x=x-N; plegma[x]=1; } R_=(Dx); R_average=R_average+((double)R_)/((double)N_run); R[run]=R_; } for(int i=0;i<K;i++) { printf("%d\n",R[i]); fprintf(myfile,"%d\n",R[i]); } printf("\n\nR_average= %lf\n",R_average); fclose(myfile); system("PAUSE"); return 0; } Στην ουσία έχω βρεί τις τιμές για το R δλδ έναν πίνακα R[100000] Επίσης ξέρω ότι η κατανομή γίνεται εύκολα σε Oracle αλλά πρέπει να γίνει σε C. Η γραφική παράσταση δε μας ενδιαφέρει, αλλά μας ενδιαφέρει να έχουμε τις διαφορετικές τιμές που πήρε το R και πόσες φορές πήρε καθεμία απ'αυτές. Αυτό το κομμάτι κώδικα δεν ξέρω πώς να γράψω.
V.I.Smirnov Δημοσ. 29 Ιουνίου 2012 Δημοσ. 29 Ιουνίου 2012 Πολύ εύκολο. Έστω ότι οι (ακέραιες) τιμές που περιέχει ο R ανήκουν στο διάστημα [Α,Β]. 1) Φτιάξε έναν πίνακα SFreq με πλήθος στοιχείων Β-Α+1, ήτοι int SFreq[b-A+1]. Kάθε στοιχείο του θα αντιστοιχεί σε μια μοναδική τιμή του [Α,Β] και θα κρατά την συχνότητα (έναν μετρητή) με την οποία εμφανίζεται η τιμή αυτή στον R. Aρχικά όλα τα στοιχεία του SFreq είναι 0. 2) Σαρώνεις τον R. Για κάθε τιμή του R που συναντάς, αυξάνεις τον μετρητή που της αντιστοιχεί στον SFreq κατά 1. Στο τέλος της σάρωσης ο SFreq περιέχει την συχνότητα με την οποία εμφανίζεται κάθε διαφορετικό στοιχείο του R. 3) Το πλήθος των διαφορετικών τιμών που περιέχει ο R, είναι το πλήθος των στοιχείων του SFreq που δεν έχουν μηδενική συχνότητα : σαρώνεις τον SFreq και μετράς πόσα στοιχεία του δεν είναι μηδενικά. Και παρεμπιπτόντως, πού κάνετε random walks; -
p4rasite Δημοσ. 29 Ιουνίου 2012 Μέλος Δημοσ. 29 Ιουνίου 2012 Και παρεμπιπτόντως, πού κάνετε random walks; Καταρχήν ευχαριστώ πολύ για τη βοήθεια, θα το δοκιμάσω και θα ενημερώσω αν έχω κάποιο πρόβλημα. Random walks κάνουμε στο μεταπτυχιακό της Νανοτεχνολογίας και Νανοεπιστημών στο Α.Π.Θ.
V.I.Smirnov Δημοσ. 29 Ιουνίου 2012 Δημοσ. 29 Ιουνίου 2012 Υπέθεσα (σωστά λοιπόν !) ότι έχει σχέση κάποια σχέση με τον τομέα υλικών. Ξέρω ότι με random walks και δίκτυα ασχολείται ο Αργυράκης (εκείνοι οι τυπάδες στο ισόγειο). Καλή επιτυχία. -
p4rasite Δημοσ. 30 Ιουνίου 2012 Μέλος Δημοσ. 30 Ιουνίου 2012 Υπέθεσα (σωστά λοιπόν !) ότι έχει σχέση κάποια σχέση με τον τομέα υλικών. Ξέρω ότι με random walks και δίκτυα ασχολείται ο Αργυράκης (εκείνοι οι τυπάδες στο ισόγειο). Καλή επιτυχία. - Πράγματι, καλά κατάλαβες Ευχαριστώ και πάλι, εντάξει το έκανα! Ήξερα ότι είναι εύκολο, αλλά είχα κολλήσει και δε μου έβγαινε με τίποτα.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα