virxen75 Δημοσ. 19 Φεβρουαρίου 2010 Δημοσ. 19 Φεβρουαρίου 2010 Αν κάποιος έχει να προτείνει πιο βέλτιστη λύση ας τη γράψει να τη δω και εγώ μπορείς να το κάνεις έτσι > #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(NULL)); int temp; //ορισμός βοηθητικής παραμέτρου temp = 2*(rand()%50+1); //rand()%(50-1+1)+1 //το υπολογίζουμε από 1 ως 50 και...πολλαπλασιάζωντας με 2--->(2 έως 100) printf("%d \n",temp); getchar(); // σε περίπτωση που σου εξαφανίζεται η κονσόλα return 0; } ---------- Προσθήκη στις 10:38 ---------- Προηγούμενο μήνυμα στις 10:06 ---------- όσο για την τράπουλα ένας άλλος τρόπος είναι > #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> int main(){ int i,j; char deck[52][30]={}; char cards[][30]={"ace of ","two of ","three of ","four of ","five of ","six of ", "seven of ","eight of ","nine of ","ten of ","knave of","queen of ","king of "}; char suit[][30]={"spades.","diamonds.","hearts.","clubs."}; srand(time(NULL)); int randomCard=rand()%52+1; //create deck int position=0; for (i=0;i<13;i++) for (j=0;j<4;j++){ strcat(deck[position],cards[i]); strcat(deck[position++],suit[j]); } printf("\n%s",deck[randomCard]); getchar(); return 0; }
kyriakh Δημοσ. 19 Φεβρουαρίου 2010 Δημοσ. 19 Φεβρουαρίου 2010 οκ αντέγραψέτα, αλλά μετά κάτσε να τα μάθεις, θάχεις πρόβλημα στη συνέχεια. Είναι τεράστιο κενο σωστα?
virxen75 Δημοσ. 19 Φεβρουαρίου 2010 Δημοσ. 19 Φεβρουαρίου 2010 οχι στο Τμήμα Εφαρμοσμένων Μαθηματικών ---------- Προσθήκη στις 09:43 ---------- Προηγούμενο μήνυμα στις 07:19 ---------- μετά από 2+ ώρες......χωρίς να ξέρω καν πως λειτουργεί η rand και πρώτη φορά βλέπω την time.h κατάφερα να κάνω αυτό > #include <stdio.h> #include <time.h> int main() { srand(time(NULL)); int i,k,h; h=0; k=0; while (k>=0 && h>=0){ i = rand()%2+1; switch (i){ case 1:printf("korona\n"); k=k+1; h=0; break; case 2:printf("gramata\n"); h=h+1; k=0; break; } if (k==3) break; if (h==3) break; } } ευχάριστο τα παιδιά που βάλανε τις προηγούμενες το σωστό είναι > #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int i,k,throws=0; srand(time(NULL)); k=0;//korones while (k<3){ throws++; i = rand()%2+1; switch (i){ case 1:printf("korona\n"); k=k+1; break; case 2:printf("gramata\n"); k=0; break; } } printf("\n finally it took %d throws!!!",throws); getchar(); }
top-gear Δημοσ. 19 Φεβρουαρίου 2010 Δημοσ. 19 Φεβρουαρίου 2010 ωραίος και ο πίνακας χαρακτήρων. Το μόνο που με χαλάει ελαφρώς είναι η διπλή for. Το πρόβλημα βέβαια εδώ είναι μικρής τάξης απλά με τη διπλή for έχεις κόστος γύρω στο Ν*Μ, πες N^2, ενώ με τον άλλο τρόπο Ν+Μ σχεδόν 0.
virxen75 Δημοσ. 19 Φεβρουαρίου 2010 Δημοσ. 19 Φεβρουαρίου 2010 ωραίος και ο πίνακας χαρακτήρων. Το μόνο που με χαλάει ελαφρώς είναι η διπλή for. Το πρόβλημα βέβαια εδώ είναι μικρής τάξης απλά με τη διπλή for έχεις κόστος γύρω στο Ν*Μ, πες N^2, ενώ με τον άλλο τρόπο Ν+Μ σχεδόν 0. -Ν*Μ=13*4 << Ν^2=13*13 δεν είναι το ίδιο -αν ψάχνεις βέτιστη λύση από πλευράς κόστους τότε βάλε καρφωτό τον πίνακα deck και να βγάλεις τις for. -βέβαια αν έπρεπε να τραβήξεις 20 φύλλα το κόστος παραμένει Ν*Μ=52 ενώ στο δικό σου 20*(Ν+Μ)=20*(17)=340. φιλικά virxen75
nrkmaiden Δημοσ. 19 Φεβρουαρίου 2010 Δημοσ. 19 Φεβρουαρίου 2010 >#include <stdio.h> #include <time.h> #include <stdlib.h> main() { srand(time(NULL)); int a,b,apotxr,answer_choice,counter = 0,i; printf("welcome to the math quiz\n"); for(i = 0;;i++){ a = rand() % 20 + 1; b = rand() % 20 + 1; if((a + <=20){ printf("%d+%d =",a,; scanf("%d",&apotxr); if(apotxr == (a + ){ counter = counter + 1; /*gia na stamatisei stis 5 swstes to programa*/ answer_choice = rand() % 4 + 1; switch( answer_choice ){ case 1: printf("%d\n",apotxr); printf("SWSTA!!!!!! \n"); if(counter == 5) exit(1); break; case 2: printf("%d\n",apotxr); printf("Auti einai i apantisi\n"); if(counter == 5) exit(1); break; case 3: printf("%d\n",apotxr); printf("you got it\n"); if(counter == 5) exit(1); break; case 4: printf("%d\n",apotxr); printf("thats correct\n"); if(counter == 5) exit(1); break; } } } } system("PAUSE"); return 0; } Δεν ειναι 100% σωστο σαν προγραμμα(καπου στον counter πρεπει να εχει προβλημα).
top-gear Δημοσ. 19 Φεβρουαρίου 2010 Δημοσ. 19 Φεβρουαρίου 2010 -Ν*Μ=13*4 << Ν^2=13*13 δεν είναι το ίδιο -αν ψάχνεις βέτιστη λύση από πλευράς κόστους τότε βάλε καρφωτό τον πίνακα deck και να βγάλεις τις for. -βέβαια αν έπρεπε να τραβήξεις 20 φύλλα το κόστος παραμένει Ν*Μ=52 ενώ στο δικό σου 20*(Ν+Μ)=20*(17)=340. φιλικά virxen75 Σωστός δεν το σκέφτηκα καθόλου. Έχω φάει πακέτα με διπλές for και αγχώνομαι όταν βλέπω. GJ++ ---------- Προσθήκη στις 21:33 ---------- Προηγούμενο μήνυμα στις 21:29 ---------- >for(i = 0;;i++) Λείπει η συνθήκη τερματισμού αν θες πχ 10 επαναλήψεις πρέπει να γίνει >for(i = 0;i<10;i++)
nrkmaiden Δημοσ. 19 Φεβρουαρίου 2010 Δημοσ. 19 Φεβρουαρίου 2010 Σωστός δεν το σκέφτηκα καθόλου. Έχω φάει πακέτα με διπλές for και αγχώνομαι όταν βλέπω. GJ++ ---------- Προσθήκη στις 21:33 ---------- Προηγούμενο μήνυμα στις 21:29 ---------- Λείπει η συνθήκη τερματισμού αν θες πχ 10 επαναλήψεις πρέπει να γίνει >for(i = 0;i<10;i++) Επίτηδες δεν έβαλα συνθήκη τερματισμού.Αν έβαζα δε θα γινόταν 5 φορές το quiz.Γι αυτό έβαλα την counter.
virxen75 Δημοσ. 20 Φεβρουαρίου 2010 Δημοσ. 20 Φεβρουαρίου 2010 Επίτηδες δεν έβαλα συνθήκη τερματισμού.Αν έβαζα δε θα γινόταν 5 φορές το quiz.Γι αυτό έβαλα την counter. διαβάζετε πιο προσεκτικά τις ασκήσεις που λύνετε. η συγκεκριμμένη αναφέρει ενδεικτικά το 5 αλλά λέει δηλώστε το πλήθος των ερωτήσεων με #define ώστε να μπορεί να αλλάζει εύκολα. π.χ. #define N 5
nrkmaiden Δημοσ. 20 Φεβρουαρίου 2010 Δημοσ. 20 Φεβρουαρίου 2010 διαβάζετε πιο προσεκτικά τις ασκήσεις που λύνετε.η συγκεκριμμένη αναφέρει ενδεικτικά το 5 αλλά λέει δηλώστε το πλήθος των ερωτήσεων με #define ώστε να μπορεί να αλλάζει εύκολα. π.χ. #define N 5 Καλά δεν είναι και το τραγικό λάθος.αντί για 5 στις if(counter == 5)θα βάλει N και μαζί με τα #include θα βάλει ένα #define N 5.
virxen75 Δημοσ. 20 Φεβρουαρίου 2010 Δημοσ. 20 Φεβρουαρίου 2010 μία απλή λύση για το math quiz > #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 int main(){ char praxeis[]={'+','-'}; int praxi=0,number1=0,number2=0,result=0,answer=0; int count=0; srand(time(NULL)); printf("\n welcome to math quiz !\n"); for (int i=0;i<N;i++){ answer=0; result=0; count=0; praxi=rand()%2; while (result>20 || result<1){ number1=rand()%20+1; number2=rand()%20+1; if (praxeis[praxi]=='+') result=number1+number2; else result=number1-number2; } printf(" what is %d %c %d ?",number1,praxeis[praxi],number2); while(answer!=result && count<3){ count++; scanf("%d",&answer); if (answer!=result && count<3){ printf(" That's incorrect.Try a different answer:"); } } if (answer!=result){ printf(" No, the answer is %d\n",result); }else printf(" That's the answer!\n"); } getchar(); getchar(); return 0; }
nrkmaiden Δημοσ. 20 Φεβρουαρίου 2010 Δημοσ. 20 Φεβρουαρίου 2010 εδω εχεισ δικο ξεχασα οτι μπορει να ναι και αφαιρεση.
virxen75 Δημοσ. 20 Φεβρουαρίου 2010 Δημοσ. 20 Φεβρουαρίου 2010 και το τελευταίο με τα πολλαπλά μηνύματα επιτυχίας > #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 int main(){ char praxeis[]={'+','-'}; char messages[][30]={"correct!\n","that's the answer!\n","you got it.The answer is %d!\n","Well done!\n"}; int praxi=0,number1=0,number2=0,result=0,answer=0; int count=0; int pio=0; srand(time(NULL)); printf("\n welcome to math quiz !\n"); for (int i=0;i<N;i++){ answer=0; result=0; count=0; praxi=rand()%2; pio=rand()%4; while (result>20 || result<1){ number1=rand()%20+1; number2=rand()%20+1; if (praxeis[praxi]=='+') result=number1+number2; else result=number1-number2; } printf(" what is %d %c %d ?",number1,praxeis[praxi],number2); while(answer!=result && count<3){ count++; scanf("%d",&answer); if (answer!=result && count<3){ printf(" That's incorrect.Try a different answer:"); } } if (answer!=result){ printf(" No, the answer is %d\n",result); }else printf(messages[pio],result); } getchar(); getchar(); return 0; } Υ.Γ. τις έλυσα επειδή είδα ότι κάποιοι ασχολήθηκαν ,αλλιώς δεν θα το έκανα.
Dr.Fuzzy Δημοσ. 20 Φεβρουαρίου 2010 Δημοσ. 20 Φεβρουαρίου 2010 Τώρα σίγουρα τον βοηθήσαμε...μακροπρόθεσμα μάλλον όχι.
nrkmaiden Δημοσ. 20 Φεβρουαρίου 2010 Δημοσ. 20 Φεβρουαρίου 2010 Μπορεί να μη τον βοηθήσαμε άλλα εμείς κάτι κερδίσαμε, τουλάχιστον εγώ που είμαι αρχάριος στη c.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.