Anubis13 Δημοσ. 22 Ιουνίου 2009 Δημοσ. 22 Ιουνίου 2009 Καλημερα, Θα ηθελα να γραψω ενα προγραμμα το οποιο να διαλεγει τυχαια αριθμους στο 16δικο συστημα απο το 0-F ωστε να ισχυει μια συγκεκριμενη εξισωση. πχ α + β = 4 οπου α,β οι δυο τυχαιοι αριθμοι. Ευχαριστω
Evgenios1 Δημοσ. 22 Ιουνίου 2009 Δημοσ. 22 Ιουνίου 2009 Καλημερα,Θα ηθελα να γραψω ενα προγραμμα το οποιο να διαλεγει τυχαια αριθμους στο 16δικο συστημα απο το 0-F ωστε να ισχυει μια συγκεκριμενη εξισωση. πχ α + β = 4 οπου α,β οι δυο τυχαιοι αριθμοι. Ευχαριστω Χμμ.. Κανε μια προσπαθεια, δεν ειναι και τοσο δυσκολο. Εαν κρινω απο αυτα που γραφεις. α= ενας τυχεος απο 0 εως 16 β= αλλος τυχεος απο 0 εως 16 και πρεπει α τυχεος +β τυχεος = με Χ, οπου Χ το οριζεις εσυ. Εχεις να κανεις με μαθηματικα... εφοσον α+β = Χ , αν α εινα τυχεος ο β δεν ειναι. Ο β ειναι α-Χ , αρα θελεις απο C (νομιζω) α=rand()%16 και εισαι οκ
Anubis13 Δημοσ. 22 Ιουνίου 2009 Μέλος Δημοσ. 22 Ιουνίου 2009 Eχεις δικιο: >#include <stdio.h> #include <stdlib.h> #include <time.h> int main () { int a,b,x; srand ( time(NULL) ); a = rand() % 16; b = x -a; } Κατι τετοιο?Γινεται να παρω κατευθειαν αριθμους hex η πρεπει να γινει μετατροπη? Θα μπορουσα να εχω καποιο Table να διαλεγω απο εκει? πχ char Table[] = "0123456789ABCDEF";
bxenos Δημοσ. 22 Ιουνίου 2009 Δημοσ. 22 Ιουνίου 2009 hex,δεκαδικό,δυαδικό,8αδικό,36αδικό,... είναι τρόποι απεικόνισης και μόνο. Οι αριθμοί δεν αλλάζουν. Δες printf με format "%x" π.χ. printf("%x",32); τυπώνει το 32 με δεκαεξαδική μορφή
mchrisober Δημοσ. 22 Ιουνίου 2009 Δημοσ. 22 Ιουνίου 2009 σωστος ο bxenos... με την rand θα δουλεψεις και θα σου βγει.
virxen75 Δημοσ. 22 Ιουνίου 2009 Δημοσ. 22 Ιουνίου 2009 #include <stdio.h> #include <stdlib.h> #include <time.h> int main () { int a,b,x; srand ( time(NULL) ); a = rand() % 16; b = x -a; } αν χ=4,a=16 => b=x-a=4-16=-12 πρέπει να βάλεις και κάποια if προφανώς
Anubis13 Δημοσ. 22 Ιουνίου 2009 Μέλος Δημοσ. 22 Ιουνίου 2009 Καταλαβα..Τι γινεται ομως σε μια τετοια περιπτωση? α + β + γ + δ + ε = 10 αν α = 8 απο την rand..Τοτε ολα τα αλλα θα βγουν απο αφαιρεσεις? Εκτος αν καλω την rand αναδρομικα και οριζω αυτο που μου μενει απο την αφαιρεση καθε φορα ως καινουρια τιμη
virxen75 Δημοσ. 22 Ιουνίου 2009 Δημοσ. 22 Ιουνίου 2009 Καταλαβα..Τι γινεται ομως σε μια τετοια περιπτωση?α + β + γ + δ + ε = 10 αν α = 8 απο την rand..Τοτε ολα τα αλλα θα βγουν απο αφαιρεσεις? αν α,β,γ,δ,ε από 0 έως 16 τότε για το α + β + γ + δ + ε = 10 αν α=8 =>β+γ+δ+ε=2 προφανώς τα στοιχεία είναι λίγα για να προσδιοριστούν άλλος τρόπος (χρονοβόρος) είναι με δοκιμές όλοι να είναι τυχαίοι > bool kati=false; int a,b,c,d,e; while(!kati){ a=rand()%16; b=rand()%16; c=rand()%16; d=rand()%16; e=rand()%16; if(a + b+ c + d + e ==10) kati=true; } το εκανα βιαστικά δες το και πες που
Anubis13 Δημοσ. 22 Ιουνίου 2009 Μέλος Δημοσ. 22 Ιουνίου 2009 αν α,β,γ,δ,ε από 0 έως 16 τότε για το α + β + γ + δ + ε = 10 αν α=8 =>β+γ+δ+ε=2 προφανώς τα στοιχεία είναι λίγα για να προσδιοριστούν άλλος τρόπος (χρονοβόρος) είναι με δοκιμές όλοι να είναι τυχαίοι > bool kati=false; int a,b,c,d,e; while(!kati){ a=rand()%16; b=rand()%16; c=rand()%16; d=rand()%16; e=rand()%16; if(a + b+ c + d + e ==10) kati=true; } το εκανα βιαστικά δες το και πες που Υπαρχει δυνατος συνδυασμος α = 8 β = 2 τα υπολοιπα 0 η α =8 γ = 2 και τα υπολοιπα 0 οι καποιοι απο τους α,β,γ,δ να ειναι 1 και οι αλλοι μηδεν
ippo00 Δημοσ. 22 Ιουνίου 2009 Δημοσ. 22 Ιουνίου 2009 Μπορείς να κάνεις όλα τα στοιχεία 2 και μετά να αφαιρείς απο το ένα και να προσθέτεις σε άλλον τυχαίες τιμές edit: έγραψα αυτό και είναι ok. > 1 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 int main(int argc,char ** argv) 6 { 7 8 int a[5],i; 9 srand(&a[3]); 10 for(i=0;i<5;++i) a[i] = 0; 11 for(i=0;i<10;++i) a[rand()%5]++; 12 for(i=0;i<5;++i) printf("A %d is %d\n",i,a[i]); 13 }
Evgenios1 Δημοσ. 22 Ιουνίου 2009 Δημοσ. 22 Ιουνίου 2009 αν α,β,γ,δ,ε από 0 έως 16 τότε για το α + β + γ + δ + ε = 10 αν α=8 =>β+γ+δ+ε=2 προφανώς τα στοιχεία είναι λίγα για να προσδιοριστούν άλλος τρόπος (χρονοβόρος) είναι με δοκιμές όλοι να είναι τυχαίοι > bool kati=false; int a,b,c,d,e; while(!kati){ a=rand()%16; b=rand()%16; c=rand()%16; d=rand()%16; e=rand()%16; if(a + b+ c + d + e ==10) kati=true; } το εκανα βιαστικά δες το και πες που Κατι μου λεει πως δε θα τελειωσει αυτο το λοοπ ποτε. [εντιτ] κατι μου λεει πως κανω λαθος
ippo00 Δημοσ. 22 Ιουνίου 2009 Δημοσ. 22 Ιουνίου 2009 Βασικά... καλύτερα να διαβάζεται κιόλας το code > do{ a=rand()%16; b=rand()%16; c=rand()%16; d=rand()%16; e=rand()%16; } while((a + b+ c + d + e) != 10); 8 0 Το πρόβλημα με αύτο, σε σχέση με αυτό που προτείνω, είναι ότι θα πρέπει να κάνει 500-3000 iterations.. edit: με testing βγαίνει κάπου 1050 loops
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.