derasto Δημοσ. 20 Οκτωβρίου 2008 Δημοσ. 20 Οκτωβρίου 2008 Γεια σας,ειμαι καινουριος στο site και σχετικα καινουριος στο προγραμματισμο.Εχω ενα προβληματακι με ενα προγραμμα.Θελω να μετατρεπει εναν δεκαδικο σε δυαδικο.Το πηγαιος εδω: >#include <stdio.h> #include <stdlib.h> int head=0; int a,b,c,num,k,n; int Array[10]; main () { int check; int push(int ; int pop (); printf ("Give number"); scanf("%d",&num); while ((num>0) && (num<128)) c=0; a=num/2; b=num%2; c=a/2; push (; c=a; k=pop (); printf ("apotelesma %d",k); system ("pause"); } /*push*/ void push(int { int check; if(head<10) { head=head+1; Array[head]=b; check=0; } else check=1; } /*pop*/ int pop() { int b,check; if(head>0) { b=Array[head]; head=head-1; check=0; return b; } else check=1; } Παρακαλω διορθωστε με. Ευχαριστω.
3c0r1z Δημοσ. 20 Οκτωβρίου 2008 Δημοσ. 20 Οκτωβρίου 2008 Καλύτερα είναι να χρησιμοποιείς code-tags γιατί έτσι δεν βγάζει κανείς άκρη. Έτσι νομίζω τουλάχιστον...
pinball_elf Δημοσ. 20 Οκτωβρίου 2008 Δημοσ. 20 Οκτωβρίου 2008 Το καλύτερο που μπορούσα να κάνω με τον κώδικα σου και χωρίς να γνωρίζω τυχόν περιορισμούς: > #include <stdio.h> #include <stdlib.h> int check=0; int head=0; int Array[10]; void push(int ; int pop(); int main (void) { int a, num, k; printf ("Give number between 1 .. 127 :\n"); scanf("%d",&num); if ((num>0) && (num<128)) { for (k=0;k<10;k++) Array[k] = 0; do { a=num%2; push(a); num=num/2; } while (num!=0); printf("apotelesma:["); k=pop(); while(check != 1) { printf ("%d",k); k=pop(); } printf("]\n"); } else printf("wrong number!\n"); system ("pause"); return (0); } /* push */ void push(int n) { if(head<10) { Array[head]=n; head=head+1; check=0; } else check=1; } /* pop */ int pop() { int n; if(head>=0) { n=Array[head]; head=head-1; check=0; return (n); } else { check=1; return (0); } }
derasto Δημοσ. 20 Οκτωβρίου 2008 Μέλος Δημοσ. 20 Οκτωβρίου 2008 Ευχαριστω πολυ Pinball. Δηλ. το προβλημα ηταν στο οτι δεν χρισιμοπιουσα τον πινακα που εβαλες ωστε καθε φορα που 8α γινετε το %2 να μπανει το ψηφιο στιν στοιβα?
pinball_elf Δημοσ. 20 Οκτωβρίου 2008 Δημοσ. 20 Οκτωβρίου 2008 Τα προβλήματα ήταν πολλά, αρκετά από οποία ήταν συντακτικά. Δεν ξέρω ποιόν compiler χρησιμοποιείς αλλά στον DEV-C++ ο κωδικάς σου δεν έκανε compile: π.χ. η συνάρτηση pop ()είναι δηλωμένη οτι επιστρέφει έναν ακέραιο,ενώ στον κώδικα της συνάρτησης έχεις παραβλέψει την εντολή return στη δεύτερη περίπτωση του if. > /*pop*/ int pop() { int b,check; if(head>0) { b=Array[head]; head=head-1; check=0; return b; } else check=1; } Υπήρχαν local μεταβλητές δηλωμένες με το ίδιο όνομα με global μεταβλητές > int a,[b]b[/b],c,num,k,n; ... /*pop*/ int pop() { int [b]b[/b],check; if(head>0) { κ.α. Τα λογικά λάθη ήταν κατα τη γνώμη μου στον αλγόριθμο υπολογισμού την διαδικής αναπαράστασης του δεκαδικού > while ((num>0) && (num<128)) [b] c=0; a=num/2; b=num%2; c=a/2; push (; c=a;[/b] και στην εκτύπωση αυτού > [b]k=pop (); printf ("apotelesma %d",k);[/b]
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.