Προς το περιεχόμενο

Συνάρτηση πίνακα C


lady_v

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα,

έχω ετοιμάσει έναν κώδικα για την παρακάτω άσκηση αλλά δε μου βγάζει το σωστό αποτέλεσμα...

Δίνονται:

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;
}	     

Μπορεί κάποιος να μου δώσει καμιά ιδέα;

Ευχατιστώ!

Δημοσ.
a) Διάβασε απο την άλγεβρα τι σημαίνει πολλαπλασιασμός πινάκων.

B) Βάλε αρχική τιμή στο r (π.χ. int r = 0; )

 

Ξέρω πως γίνεται ο πολλαπλασιασμός πινάκων αλλά δε μας είπε να δώσουμε το αποτέλεσμα σε νέο πίνακα

Δημοσ.
Ξέρω πως γίνεται ο πολλαπλασιασμός πινάκων αλλά δε μας είπε να δώσουμε το αποτέλεσμα σε νέο πίνακα

 

Τοτε το λαθος σου ειναι εδω "r+=(a*b[j]);". Γιατι το αποτελεσμα πρεπει να ειναι 0 ενω απ'οτι βλεπω δεν υπαρχει περιπτωση να βγει 0.

 

ΥΓ: Περιεργη ασκηση... Ξαναδιαβασε την, δεν νομιζω οτι παει ετσι (το αποτελεσμα θα ειναι πολυ μεγαλο αν δεν υπαρχει 0 σε καποιο σημειο)

Δημοσ.

για σένα πιο είναι το σωστό αποτέλεσμα?

 

απλά γράψε το να καταλάβω τι θες ,γιατί πολλαπλασιάζεις 2 πίνακες που έχει αποτέλεσμα 1 νέο πίνακα και εσύ επιστρέφεις το αποτέλεσμα σαν 1 ακέραιο.

Δημοσ.
για σένα πιο είναι το σωστό αποτέλεσμα?

 

απλά γράψε το να καταλάβω τι θες ,γιατί πολλαπλασιάζεις 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;
}	     


Δημοσ.

ίσως να ενοεί ότι ο πρωτος ειναι 1 * n (γραμμή) και ο δευτερος είναι n * 1 (στήλη), οπότε το αποτέλεσμα είναι πίνακας 1χ1 (ένα στοιχείο).

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...