lady_v Δημοσ. 13 Νοεμβρίου 2009 Δημοσ. 13 Νοεμβρίου 2009 Καλημέρα, έχω ετοιμάσει έναν κώδικα για την παρακάτω άσκηση αλλά δε μου βγάζει το σωστό αποτέλεσμα... Δίνονται: int[] A = {2, 4, 6, 8, 9, 10, 1}; int[] B = {32, 1, -5, 2, 0, 6, 3}; Κατασκευάστε την εξής συνάρτηση και εφαρμόστε τη στους αρχικούς πίνακες Α και Β: int multiply (int[] a, int[] b, int size); Πολλαπλασιάζει δύο πίνακες και επιστρέφει το αποτέλεσμα. > #include <stdio.h> int multiply (int a[], int b[], int size){ int i,j; int r; for(i=0; i<size; i++){ for(j=0; j<size; j++) r+=(a[i]*b[j]); } return r; } int main(int argv, char ** argc){ int a[7]={2, 4, 6, 8, 9, 10, 1}; int b[7]={32, 1, -5, 2, 0, 6, 3}; int res=1; res=multiply (a,b,7); printf("%d",res); return 0; } Μπορεί κάποιος να μου δώσει καμιά ιδέα; Ευχατιστώ!
bxenos Δημοσ. 13 Νοεμβρίου 2009 Δημοσ. 13 Νοεμβρίου 2009 a) Διάβασε απο την άλγεβρα τι σημαίνει πολλαπλασιασμός πινάκων. Βάλε αρχική τιμή στο r (π.χ. int r = 0; )
lady_v Δημοσ. 13 Νοεμβρίου 2009 Μέλος Δημοσ. 13 Νοεμβρίου 2009 a) Διάβασε απο την άλγεβρα τι σημαίνει πολλαπλασιασμός πινάκων. Βάλε αρχική τιμή στο r (π.χ. int r = 0; ) Ξέρω πως γίνεται ο πολλαπλασιασμός πινάκων αλλά δε μας είπε να δώσουμε το αποτέλεσμα σε νέο πίνακα
Evgenios1 Δημοσ. 13 Νοεμβρίου 2009 Δημοσ. 13 Νοεμβρίου 2009 Ξέρω πως γίνεται ο πολλαπλασιασμός πινάκων αλλά δε μας είπε να δώσουμε το αποτέλεσμα σε νέο πίνακα Τοτε το λαθος σου ειναι εδω "r+=(a*b[j]);". Γιατι το αποτελεσμα πρεπει να ειναι 0 ενω απ'οτι βλεπω δεν υπαρχει περιπτωση να βγει 0. ΥΓ: Περιεργη ασκηση... Ξαναδιαβασε την, δεν νομιζω οτι παει ετσι (το αποτελεσμα θα ειναι πολυ μεγαλο αν δεν υπαρχει 0 σε καποιο σημειο)
virxen75 Δημοσ. 13 Νοεμβρίου 2009 Δημοσ. 13 Νοεμβρίου 2009 για σένα πιο είναι το σωστό αποτέλεσμα? απλά γράψε το να καταλάβω τι θες ,γιατί πολλαπλασιάζεις 2 πίνακες που έχει αποτέλεσμα 1 νέο πίνακα και εσύ επιστρέφεις το αποτέλεσμα σαν 1 ακέραιο.
lady_v Δημοσ. 13 Νοεμβρίου 2009 Μέλος Δημοσ. 13 Νοεμβρίου 2009 για σένα πιο είναι το σωστό αποτέλεσμα? απλά γράψε το να καταλάβω τι θες ,γιατί πολλαπλασιάζεις 2 πίνακες που έχει αποτέλεσμα 1 νέο πίνακα και εσύ επιστρέφεις το αποτέλεσμα σαν 1 ακέραιο. Κι εγώ έχω μπερδευτεί. Ζήτησα διευκρινήσεις και η απάντηση ήταν ότι αφού ο πίνακας είναι γραμμικός, το αποτέλεσμα είναι ένας μοναδικός αριθμός,αυτός που επιστρέφει η συνάρτηση. ---------- Το μήνυμα προστέθηκε στις 12:39 ---------- άρα μήπως πρέπει να γίνει έτσι; >#include <stdio.h> int multiply (int a[], int b[], int size){ int i; int r=0; for(i=0; i<size; i++){ r+=(a[i]*b[i]); } return r; } int main(int argv, char ** argc){ int a[7]={2, 4, 6, 8, 9, 10, 1}; int b[7]={32, 1, -5, 2, 0, 6, 3}; int res=0; res=multiply (a,b,7); printf("%d",res); return 0; }
bxenos Δημοσ. 13 Νοεμβρίου 2009 Δημοσ. 13 Νοεμβρίου 2009 ίσως να ενοεί ότι ο πρωτος ειναι 1 * n (γραμμή) και ο δευτερος είναι n * 1 (στήλη), οπότε το αποτέλεσμα είναι πίνακας 1χ1 (ένα στοιχείο).
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.