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

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

Δημοσ.

καλησπέρα σας... έχω μία συνάρτηση στην οποία παράγω δύο πίνακες. έναν 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 "

 

 

τι κάνω λάθος;;; ξέρετε;;;

Δημοσ.

Δεν χρειαζεται να περνάς μεσα στην συνάρτηση κατα την κλήση της τους πινακες σου

έτσι -> &name_array.

 

Γιατι?

 

Γιατι ο πίνακας ειναι απο μονος του ενας δεικτης στο πρωτο στοιχειο του.Δοκιμασε να κανεις

κληση συνάρτηση μονο με το ονομα του πινακα βγάζοντας το σύμβολο της διεύθυνσης (&).

Δημοσ.

Αυτο που προτεινει το παπι. Τα arrays περνιονται παντα by reference.

Οριστε και το αποτελεσμα χωρις το &(function(N, dis, demand); )

dis inside function

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

Δημοσ.

Σας ευχαριστώ πολύ... Και είχα φάει τόση ώρα κάνοντας δοκιμές... αυτό δεν μου πέρασε απ το μυαλό..

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...