Andreas_Zel Δημοσ. 17 Νοεμβρίου 2017 Δημοσ. 17 Νοεμβρίου 2017 Έχω το εξής προβληματάκι ,το πρόβλημα ζητά σε ένα ερώτημα να Τυπώνει τον αριθμό που έχει τις περισσότερες εμφανίσεις. Σε περίπτωση ισοπαλίας πρέπει να τυπώνει όλους τους αριθμούς με τις περισσότερες εμφανίσεις ,για κάποιο λόγο όμως δεν μου εμφανίζει τον αριθμό που είναι σε ισοπαλία με τον MAX //Lab 3 Exercise 1 #include <stdio.h> #include <stdlib.h> //Constants decleration #define N 20 #define C 10 int main () { int numbers[N],counters[C],max[C],i,j,MAX,k,l,p; counters[0]=MAX; //Zerowing the counters panel for (l=0; l<C; l=l+1) counters[l]=0; //Input of the numbers for (i=0; i<N; i=i+1) { printf("Give me an integer\n"); scanf("%d",&numbers[i]); //Invalid number check if ((numbers[i]<1) || (numbers[i]>10)) { printf("Invalid number,please give me an integer again\n"); scanf("%d",&numbers[i]); } //How many times a number appears check if (i == numbers[i]) counters[(numbers[i])]+=1; else if (i != numbers[i]) { j=numbers[i]; counters[j]=counters[j]+1; } } //How many times a number appears (in screen visual) for (k=1; k<=C; k++) { if(counters[k]<=20) printf("how many times %d appears: %d \n",k,counters[k]); //For Max displayed number if (counters[k]>MAX) MAX=k; } printf("The number that appears the most is %d\n",MAX); //In case that a number equals to MAX for (p=0; p<C; p++) { max[p]=counters[p]; if (MAX==max[p]) printf("also %d\n",p); } system("PAUSE"); return 0; }
GReaperEx Δημοσ. 17 Νοεμβρίου 2017 Δημοσ. 17 Νοεμβρίου 2017 int numbers[N],counters[C],max[C],i,j,MAX,k,l,p; counters[0]=MAX; Το MAX δεν είχε ακόμα κάποια συγκεκριμένη τιμή, άρα και το counters[0] θα πάθει το ίδιο πράγμα. Πρέπει να τους δώσεις κάποια αρχική τιμή, αλλιώς συγκρίνεις όλα τα υπόλοιπα με κάποιον τυχαίο αριθμό που υπήρχε στη μνήμη εκείνη τη στιγμή...
Andreas_Zel Δημοσ. 18 Νοεμβρίου 2017 Μέλος Δημοσ. 18 Νοεμβρίου 2017 int numbers[N],counters[C],max[C],i,j,MAX,k,l,p; counters[0]=MAX; Το MAX δεν είχε ακόμα κάποια συγκεκριμένη τιμή, άρα και το counters[0] θα πάθει το ίδιο πράγμα. Πρέπει να τους δώσεις κάποια αρχική τιμή, αλλιώς συγκρίνεις όλα τα υπόλοιπα με κάποιον τυχαίο αριθμό που υπήρχε στη μνήμη εκείνη τη στιγμή... το άλλαξα ,αυτό που δεν καταλαβαίνω ειναι γιατί δεν δουλεύει το for (p=0; p<C; p++) { max[p]=counters[p]; if (MAX==max[p]) printf("also %d\n",p); }
GReaperEx Δημοσ. 18 Νοεμβρίου 2017 Δημοσ. 18 Νοεμβρίου 2017 Δε δουλεύει επειδή δε βρίσκεις το MAX σωστά. Πρέπει να κάνεις "if (counters[k]>counters[MAX])", εφόσον αποθηκεύεις τη θέση στον πίνακα και όχι την ίδια τη τιμή.
Andreas_Zel Δημοσ. 18 Νοεμβρίου 2017 Μέλος Δημοσ. 18 Νοεμβρίου 2017 Δε δουλεύει επειδή δε βρίσκεις το MAX σωστά. Πρέπει να κάνεις "if (counters[k]>counters[MAX])", εφόσον αποθηκεύεις τη θέση στον πίνακα και όχι την ίδια τη τιμή. Ευχαριστώ πολύ για την βοήθεια,βγήκε μόλις το άλλαξα
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα