Star_Light Δημοσ. 26 Σεπτεμβρίου 2014 Δημοσ. 26 Σεπτεμβρίου 2014 Γιατι το Β[5] υπάρχει ενώ το Α[5] οχι.. Αν παρατηρησεις Α -> 0 εως 4 και Β -> 0 εως 5 κελια.. Σε κάθε προηγουμενη συγκριση τα περιεχομενα ειναι ισα. Λάθος. Δεν ειναι αυτό. Ο έλεγχος επιστρέφει στην main οταν η συνθηκη ικανοποιείται εφοσον A[0] == B[0]. κανε το i =0 ειναι το i μεγαλυτερο απο τον πινακα Β? αυξησε το i κατα 1 Όχι. Ειναι το i μεγαλύτερο απο το i-στοιχείο του πίνακα Β? αν ναι μπες στο σώμα του loop εκτέλεσε οτι υπάρχει εκει και μετά αύξησε το i κατα 1. 1
jimisvog Δημοσ. 26 Σεπτεμβρίου 2014 Δημοσ. 26 Σεπτεμβρίου 2014 Λάθος. Δεν ειναι αυτό. Ο έλεγχος επιστρέφει στην main οταν η συνθηκη ικανοποιείται εφοσον A[0] == B[0]. Ναι εχεις δικιο. Μετα ειδα οτι υπαρχει απλα το return. Ουσιαστικα κανει μονο 1 επαναληψη. Απλα αν συνεχιζε τις επαναληψεις θα ειχε και αυτο το προβλημα. 1
Star_Light Δημοσ. 26 Σεπτεμβρίου 2014 Δημοσ. 26 Σεπτεμβρίου 2014 για να βρω το πληθος θα βαλω τιμες σε καθε πινακα ? int Mystrlen(int A[],int B[]) { int i; for(i=0;i<B;i++) { if(A==B) { return 1; } else if(B>A) { return 0; } } } int main () { int A[]={1,2,3,4,5}; int B[]={1,2,3,4,8,}; printf("%d\n",Mystrlen(A, ); εαν αλλαξω το πρωτο στοιχειο του πινακα επιστρεφει 0 ως προς τα περιεχομενα τους return 0; } Nαι αν αλλάξεις το 1ο στοιχειο του πίνακα Β και το κάνεις πχ 15 τοτε επειδη ειναι μεγαλυτερο απο το αντιστοιχο του Α θα επιστρέψει 0 αν ειναι μικροτερο θα επιστρέψει 1 αν πιο κάτω βρει κάποια ισα στοιχεια. Πχ int A[5]={10,20,30,40,50}; int B[6]={2,20,30,40,50,60}; // Με αυτη την αρχικοποιηση θα επιστρέψει 1 εφοσον 20 == 20. Ο κωδικας δεν έχει θέμα οτι του λές να κάνει θα κάνει το θεμα ειναι οπως ειπαν και τα παιδια πριν τι θες να κάνεις εσύ. Ναι εχεις δικιο. Μετα ειδα οτι υπαρχει απλα το return. Ουσιαστικα κανει μονο 1 επαναληψη. Απλα αν συνεχιζε τις επαναληψεις θα ειχε και αυτο το προβλημα. Ναι ισχύει. Βασικά ετσι οπως τα έχει αρχικοποιήσει μετά ο ένας πινακας βγαίνει ορίων(overflow) και το αποτελεσμα ειναι undefined αν θυμαμαι καλά. Έχω να πιάσω C κανα μήνα 1
programmer Δημοσ. 26 Σεπτεμβρίου 2014 Μέλος Δημοσ. 26 Σεπτεμβρίου 2014 αν αλλαξω ομως το 2 στοιχειο του πινακα Β βγαζει οτι ειναι ισα μπορω να το φτιαξω οταν αλλαζω τα στοιχεια του πινακα Β να μου βγαζει οτι δεν ειναι ισα γιατι μπορει να ειναι αλλου ο μεγιστος αριθμος
Star_Light Δημοσ. 26 Σεπτεμβρίου 2014 Δημοσ. 26 Σεπτεμβρίου 2014 αν αλλαξω ομως το 2 στοιχειο του πινακα Β βγαζει οτι ειναι ισα μπορω να το φτιαξω οταν αλλαζω τα στοιχεια του πινακα Β να μου βγαζει οτι δεν ειναι ισα γιατι μπορει να ειναι αλλου ο μεγιστος αριθμος Άμα έχεις αφησει τα πρώτα στοιχεια των 2 πινάκων οπως τα έχεις εδω τι θες να βγάλει? αυτα συγκρινει διαπιστώνει οτι ειναι ισα και σου επιστρέφει το 1. Τα υπολοιπα στοιχεια δεν τα ελεγχει κάν γιατι δεν ειναι πια μέσα στην συνάρτηση το προγραμμα ο έλεγχος μετα το return έχει επιστραφεί στην συνάρτηση που κάλεσε(η main) την συναρτηση που θες να κάνει την συγκριση.
programmer Δημοσ. 26 Σεπτεμβρίου 2014 Μέλος Δημοσ. 26 Σεπτεμβρίου 2014 int Mystrlen(int A[],int B[]) { int i; for(i=0;i<=B;i++) { if(A==B) { return 1; } else if(B>A) { return 0; } } } int main () { int A[]={1,2,3,4,5}; τωρα θα μου επιστρεψει ενα 1 γιατι ειναι ισοι οι πινακες αν παω ομως στον πινακα Β και το κανω το 2 int B[]={1,2,3,4,5,}; 12 θα μου βγαλει 1 γιατι δεν συνεχιζεται το loop μπορω να το φτιαξω ετσι ωστε οποια στοιχεια του πινακα Β και να αλλαξω ειτε ειναι το 2 η 3 η 4 στοιχειο του να μου επιστρεφει 0? printf("%d\n",Mystrlen(A,); return 0; }
Star_Light Δημοσ. 26 Σεπτεμβρίου 2014 Δημοσ. 26 Σεπτεμβρίου 2014 Δεν θα βγάλει 1. 0 θα βγάλει για τους λογους που σου εξηγησα και πριν. Κοιταξε ξανά τα προηγουμενα μηνύματα και τρέξε τον κώδικα με τις τροποποιήσεις που του κάνεις κάθε φορά να δεις τι βγάζει. Το 1 που το βρηκες? Τωρα αν θές να φτιάξεις μια συνάρτηση που συγκρινει τα στοιχεια ενος πίνακα σκέψου στην αρχη ποιες περιπτώσεις έχεις και αναλογα βάλε τα if. Πχ οι περιπτωσεις ειναι 3 A > B , A < B και A == B.
Star_Light Δημοσ. 27 Σεπτεμβρίου 2014 Δημοσ. 27 Σεπτεμβρίου 2014 #include <stdio.h> #define SIZE 5 void arr_comp(int arrA[],int arrB[]) { int i=0; for(;i<SIZE;i++){ if( arrA[i] > arrB[i]) printf("In position %d : %d is higher from %d\n" , i , arrA[i] , arrB[i]); else if ( arrA[i] < arrB[i] ) printf("In position %d : %d is lower from %d\n" , i , arrA[i] , arrB[i]); else printf("In position %d : %d with %d are equals\n" , i , arrA[i] , arrB[i]); } } int main(void) { int arrA[SIZE]={1,2,3,4,5}; int arrB[SIZE]={1,4,5,4,5}; arr_comp(arrA,arrB); return 0; } - Το mystrel ειναι άκυρο ονομα για μια συνάρτηση που συγκρινει τα στοιχεια ακεραιων πινάκων. Τα stdlib και string.h δεν τα χρειάζεσαι. Το stdio.h μονο γιατι χρησιμοποιείς την printf μεσα στο προγραμμα. Το έφτιαξα προχειρα για να δεις πιο μετα ισως σκεφτώ να αλλαξω τιποτα για να μην χρησιμοποιώ τοσα if. - Προσθεσα το directive με το SIZE οποτε αν θελήσεις να αλλάξεις το μέγεθος των πινάκων αρκει να το κάνεις σε ενα σημειο και μετα ο προεπεξεργαστής θα αντικαταστήσει σε ολα τα σημεια που εμφανιζεται το SIZE. - Άν θες να επιστρέψεις 2 λογικές τιμές για TRUE ή FALSE αντιστοιχα απο την συναρτηση ειναι καλυτερα να δηλώσεις τον επιστρεφομενο τύπο bol γιατι με το int δεν ειναι ευδιάκριτο άσχετα αν το 0 ή το 1 μπορούν να επιστραφούν σαν int. 1
MeTaXaS4 Δημοσ. 28 Σεπτεμβρίου 2014 Δημοσ. 28 Σεπτεμβρίου 2014 Δεν θα βγάλει 1. 0 θα βγάλει για τους λογους που σου εξηγησα και πριν. Κοιταξε ξανά τα προηγουμενα μηνύματα και τρέξε τον κώδικα με τις τροποποιήσεις που του κάνεις κάθε φορά να δεις τι βγάζει. Το 1 που το βρηκες? Τωρα αν θές να φτιάξεις μια συνάρτηση που συγκρινει τα στοιχεια ενος πίνακα σκέψου στην αρχη ποιες περιπτώσεις έχεις και αναλογα βάλε τα if. Πχ οι περιπτωσεις ειναι 3 A > B , A < B και A == B. για την ακρίβεια ο κώδικας που έχει συγκρίνει μόνο το 1ο στοιχείο των 2 πινάκων και είναι ίδιο οπότε σωστά επιστρέφει 1, είτε είναι ίδια τα υπόλοιπα είτε όχι... @programmer δες πως θα φτιάξεις έναν αλγόριθμο με αυτό που έχεις στο μυαλό σου και μετά γράψε το σε κώδικα...
programmer Δημοσ. 28 Σεπτεμβρίου 2014 Μέλος Δημοσ. 28 Σεπτεμβρίου 2014 παιδια ευχαριστω το programmer μου αρεσει σαν nick ετσι δεν παει να πει οτι ειμαι και ο καλυτερος ...απλα τωρα μαθαινω προγραμματισμο και μου αρεσει και το επελεξα το nick Μια ασχετη ερωτηση ξερεται πως μπορω να βρω ασκησεις σε γλωσσα προγραμματισμου java σε μορφη pdf? η καποιο ελληνικο βιβλιο και αυτο σε μορφη pdf αλλα στα ελληνικα!
Star_Light Δημοσ. 28 Σεπτεμβρίου 2014 Δημοσ. 28 Σεπτεμβρίου 2014 για την ακρίβεια ο κώδικας που έχει συγκρίνει μόνο το 1ο στοιχείο των 2 πινάκων και είναι ίδιο οπότε σωστά επιστρέφει 1, είτε είναι ίδια τα υπόλοιπα είτε όχι... @programmer δες πως θα φτιάξεις έναν αλγόριθμο με αυτό που έχεις στο μυαλό σου και μετά γράψε το σε κώδικα... Ναι αλλα ειπε οτι αμα πάει και κάνει το 1 στον πίνακα Β 2 τοτε δεν δινει 1 αλλα 0. Δες τι γραφει διπλα απο τον κωδικα.
programmer Δημοσ. 29 Σεπτεμβρίου 2014 Μέλος Δημοσ. 29 Σεπτεμβρίου 2014 #include <stdio.h> #define SIZE 5 void arr_comp(int arrA[],int arrB[]) { int i=0; for(;i<SIZE;i++){ if( arrA[i] > arrB[i]) printf("In position %d : %d is higher from %d\n" , i , arrA[i] , arrB[i]); else if ( arrA[i] < arrB[i] ) printf("In position %d : %d is lower from %d\n" , i , arrA[i] , arrB[i]); else printf("In position %d : %d with %d are equals\n" , i , arrA[i] , arrB[i]); } } int main(void) { int arrA[SIZE]={1,2,3,4,5}; int arrB[SIZE]={1,4,5,4,5}; arr_comp(arrA,arrB); return 0; } - Το mystrel ειναι άκυρο ονομα για μια συνάρτηση που συγκρινει τα στοιχεια ακεραιων πινάκων. Τα stdlib και string.h δεν τα χρειάζεσαι. Το stdio.h μονο γιατι χρησιμοποιείς την printf μεσα στο προγραμμα. Το έφτιαξα προχειρα για να δεις πιο μετα ισως σκεφτώ να αλλαξω τιποτα για να μην χρησιμοποιώ τοσα if. - Προσθεσα το directive με το SIZE οποτε αν θελήσεις να αλλάξεις το μέγεθος των πινάκων αρκει να το κάνεις σε ενα σημειο και μετα ο προεπεξεργαστής θα αντικαταστήσει σε ολα τα σημεια που εμφανιζεται το SIZE. - Άν θες να επιστρέψεις 2 λογικές τιμές για TRUE ή FALSE αντιστοιχα απο την συναρτηση ειναι καλυτερα να δηλώσεις τον επιστρεφομενο τύπο bol γιατι με το int δεν ειναι ευδιάκριτο άσχετα αν το 0 ή το 1 μπορούν να επιστραφούν σαν int. στην συναρτηση mystrlel βαζεις οτι ονομα θες μην μου λες ακυρο!!!! ααα στο φορ σου εχεις λαθος ααα στο φορ σου εχεις λαθος for(;i<SIZE;i++) for(i=0;i<SIZE;i++ // μην βαζεις κεφαλαια μπορεις βαλεις καλυτερα Define N 5;
Technology fan Δημοσ. 29 Σεπτεμβρίου 2014 Δημοσ. 29 Σεπτεμβρίου 2014 στην συναρτηση mystrlel βαζεις οτι ονομα θες μην μου λες ακυρο!!!! ααα στο φορ σου εχεις λαθος ααα στο φορ σου εχεις λαθος for(;i<SIZE;i++) for(i=0;i<SIZE;i++ // μην βαζεις κεφαλαια μπορεις βαλεις καλυτερα Define N 5; Ήμαρτον πια programmer 1) μάθε να δέχεσαι την κριτική.... 2) Βάζουμε ονόματα συναρτήσεων που έχουν σχέση με αυτά που κάνει η εκάστοτε συνάρτηση (κατα σύμβαση) και ναι προφανώς το mystrel είναι άκυρο. Σκέψου μόνο πόσο αργήσαμε να καταλάβουμε τι θέλεις να κάνεις επειδή απλά στην συνάρτηση σου είχες ότι να ναι ονομα. Θα ήταν πολύ καλύτερα ακόμα και να είχες ένα μακρυνάρι όνομα compare_elements_of_two_arrays(). 3) Μάθε τι κάνουν οι εντολές πριν κάνεις κριτική σε κάποιον. Προφανώς και δεν έχει λάθος, το οποίο θα το έβλεπες πολύ εύκολα αν τα έβαζες σε ένα compiler και το τρεχες ή ακόμα αν ήξερες την σύνταξη της εντολής for : for(INITIALIZATION;CONDITION;ACTION) 4) Σε σταθερές μεταβλητές βάζουμε κεφαλαία για να τις ξεχωρίζουμε από τις υπόλοιπες, (κατα σύμβαση) 5) Δεν προγραμματίζουμε ΠΟΤΕ τυχαία, αν πιστεύεις οτι κάτι είναι καλύτερο από κάτι άλλο, πρέπει να το αιτιολογείς. Σεβάσου τον συμφορουμίτη που έκανε τον κόπο να σου απαντήσει για να σε βοηθήσει και εσύ τον κάνεις κριτική επειδή ΤΙ? 3
programmer Δημοσ. 29 Σεπτεμβρίου 2014 Μέλος Δημοσ. 29 Σεπτεμβρίου 2014 Ήμαρτον πια programmer 1) μάθε να δέχεσαι την κριτική.... 2) Βάζουμε ονόματα συναρτήσεων που έχουν σχέση με αυτά που κάνει η εκάστοτε συνάρτηση (κατα σύμβαση) και ναι προφανώς το mystrel είναι άκυρο. Σκέψου μόνο πόσο αργήσαμε να καταλάβουμε τι θέλεις να κάνεις επειδή απλά στην συνάρτηση σου είχες ότι να ναι ονομα. Θα ήταν πολύ καλύτερα ακόμα και να είχες ένα μακρυνάρι όνομα compare_elements_of_two_arrays(). 3) Μάθε τι κάνουν οι εντολές πριν κάνεις κριτική σε κάποιον. Προφανώς και δεν έχει λάθος, το οποίο θα το έβλεπες πολύ εύκολα αν τα έβαζες σε ένα compiler και το τρεχες ή ακόμα αν ήξερες την σύνταξη της εντολής for : for(INITIALIZATION;CONDITION;ACTION) 4) Σε σταθερές μεταβλητές βάζουμε κεφαλαία για να τις ξεχωρίζουμε από τις υπόλοιπες, (κατα σύμβαση) 5) Δεν προγραμματίζουμε ΠΟΤΕ τυχαία, αν πιστεύεις οτι κάτι είναι καλύτερο από κάτι άλλο, πρέπει να το αιτιολογείς. Σεβάσου τον συμφορουμίτη που έκανε τον κόπο να σου απαντήσει για να σε βοηθήσει και εσύ τον κάνεις κριτική επειδή ΤΙ? φιλε ηρεμισε λιγο και μην αρπαζεσαι ....ο καθενας προγραμματιζει οπως ξερει ειδικα οταν εισαι νεος και εχεις πολλα κενα στον προγραμματισμο την κριτικη μια χαρα την δεχομαι εσυ αρπαζεσαι χωρις λογο και αρχισες να λες 100 πραγματα χωρις καμια ουσια οποιος θελει απανταει στο θεμα μου αλλα πανω στο θεμα μου οχι να λεει ασυναρτισιες τα λαθη θελω να τα βρισκω μονος μου το να μου τα πει καποιος δεν μπροκειται να μαθω προγραμματισμο νομιζεται οτι βοηθατε αλλα δυστυχως κανεται το αντιθετο φιλε ηρεμισε λιγο και μην αρπαζεσαι ....ο καθενας προγραμματιζει οπως ξερει ειδικα οταν εισαι νεος και εχεις πολλα κενα στον προγραμματισμο την κριτικη μια χαρα την δεχομαι εσυ αρπαζεσαι χωρις λογο και αρχισες να λες 100 πραγματα χωρις καμια ουσια οποιος θελει απανταει στο θεμα μου αλλα πανω στο θεμα μου οχι να λεει ασυναρτισιες τα λαθη θελω να τα βρισκω μονος μου το να μου τα πει καποιος δεν μπροκειται να μαθω προγραμματισμο νομιζεται οτι βοηθατε αλλα δυστυχως κανεται το αντιθετο και εκτος αυτου να μαθεται και εσεις να δεχεσται κριτικη δεν ειναι κανενας τελειος γιατι αμα ηταν καποιος τελειος στον προγραμματισμο πολυ απλα δεν θα ηταν εδω σε αυτο το forum ξυπνα ...
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα