jimbakl Δημοσ. 22 Απριλίου 2012 Δημοσ. 22 Απριλίου 2012 καλησπέρα σας... έχω μία συνάρτηση στην οποία παράγω δύο πίνακες. έναν 2d και έναν 1d. δεν είναι αυτή ακριβώς η συνάρτησή μου αλλά την έκανα για να μην γεμίσω με 200 σειρές κώδικα το θέμα. > void function( int N, double **dis, int *demand ){ int i,j; for(i=0;i<N;i++){ for(j=0;j<N;j++){ dis[i][j]=(i+j+3)*2; } } for(i=0;i<N;i++){ demand[i]=(i+1)*10; } printf("\ndis inside function\n"); for(i=0;i<N;i++){ for(j=0;j<N;j++){ printf("%.2lf\t",dis[i][j]); } printf("\n"); } printf("\ndemand inside function\n"); for(i=0;i<N;i++){ printf("%d\t",demand[i]); } printf("\n"); } θέλω μέσα στην main να την καλώ.... > function(N, &dis, &demand); και μετά τους πίνακες να τους παίρνω σαν input για μία άλλη συνάρτηση... Στο Visual studio poy χρησιμοποιω δεν μου επιστρεφει τους πίνακες μέσα στην μαιν.,, και κάνοντας μια εκτύπωση μου τους δείχνει σαν μηδενικούς, ενώ μέσα στην συνάρτηση όλα γίνονται μια χαρά., Αντίθετα στο terminal me tin gcc -o για αυτό το μινι πρόγραμμα που έκανα > #include<stdio.h> #include<stdlib.h> void function( int N, double **dis, int *demand ); main(){ int N=5; int i,j; double **dis; int *demand; dis=(double **)calloc(N,sizeof(double*)); demand=(int *)calloc(N,sizeof(int)); for(i=0;i<N;i++){ dis[i]=(double *)calloc(N,sizeof(double)); } function(N, &dis, &demand); printf("\nmain:\n"); printf("\ndis\n"); for(i=0;i<N;i++){ for(j=0;j<N;j++){ printf("%.2lf\t",dis[i][j]); } printf("\n"); } printf("\ndemand\n"); for(i=0;i<N;i++){ printf("%d\t",demand[i]); } printf("\n"); } void function( int N, double **dis, int *demand ){ int i,j; for(i=0;i<N;i++){ for(j=0;j<N;j++){ dis[i][j]=(i+j+3)*2; } } for(i=0;i<N;i++){ demand[i]=(i+1)*10; } printf("\ndis inside function\n"); for(i=0;i<N;i++){ for(j=0;j<N;j++){ printf("%.2lf\t",dis[i][j]); } printf("\n"); } printf("\ndemand inside function\n"); for(i=0;i<N;i++){ printf("%d\t",demand[i]); } printf("\n"); } για το θέμα εδώ μου βγάζει το εξής σφάλμα " /Users/mac/Desktop/main.c: In function ‘main’: /Users/mac/Desktop/main.c:21: warning: passing argument 2 of ‘function’ from incompatible pointer type /Users/mac/Desktop/main.c:21: warning: passing argument 3 of ‘function’ from incompatible pointer type " τι κάνω λάθος;;; ξέρετε;;;
Star_Light Δημοσ. 22 Απριλίου 2012 Δημοσ. 22 Απριλίου 2012 Δεν χρειαζεται να περνάς μεσα στην συνάρτηση κατα την κλήση της τους πινακες σου έτσι -> &name_array. Γιατι? Γιατι ο πίνακας ειναι απο μονος του ενας δεικτης στο πρωτο στοιχειο του.Δοκιμασε να κανεις κληση συνάρτηση μονο με το ονομα του πινακα βγάζοντας το σύμβολο της διεύθυνσης (&).
Anubis13 Δημοσ. 22 Απριλίου 2012 Δημοσ. 22 Απριλίου 2012 Αυτο που προτεινει το παπι. Τα arrays περνιονται παντα by reference. Οριστε και το αποτελεσμα χωρις το &(function(N, dis, demand); ) dis inside function6.00 8.00 10.00 12.00 14.00 8.00 10.00 12.00 14.00 16.00 10.00 12.00 14.00 16.00 18.00 12.00 14.00 16.00 18.00 20.00 14.00 16.00 18.00 20.00 22.00 demand inside function 10 20 30 40 50 main: dis 6.00 8.00 10.00 12.00 14.00 8.00 10.00 12.00 14.00 16.00 10.00 12.00 14.00 16.00 18.00 12.00 14.00 16.00 18.00 20.00 14.00 16.00 18.00 20.00 22.00 demand 10 20 30 40 50 Eπισης int main(){ // bla bla; return 0;}
jimbakl Δημοσ. 22 Απριλίου 2012 Μέλος Δημοσ. 22 Απριλίου 2012 Σας ευχαριστώ πολύ... Και είχα φάει τόση ώρα κάνοντας δοκιμές... αυτό δεν μου πέρασε απ το μυαλό..
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα