Funzione riportata nel main

di il
10 risposte

Funzione riportata nel main

Salve a tutti! Vorrei sapere se qualcuno gentilmente potesse aiutarmi. Devo creare una funzione che lavora attraverso una matrice, la funzione penso sia corretta, il mio problema e' quando la riporto nel main

main() {
	struct list1* list1;
	struct list2* list2;
	int R = 2;
	int C = 3;
	int i = 0;
	int j = 0;
	float *A;
	int index;
	init1(&list1);
	init2(&list2);
	do {
		scanf("%s", selection);
		switch (selection[0]) {
		    case 'A':
				for (i = 0; i < R; i++) {
					for (j = 0; j < C; j++) {
						scanf("%f", A[C * i + j]);
			case 'a':
				index = float_index_max(&A, R, C);
				break;
			case 'b':
				to_two_list(A, R, C, &listZ, &listH);
		}
	}			
}


int float_index_max(float* A, int R, int C);
void to_two_list(float* A, int R, int C, struct list1** ptrptr1, struct list2** ptrptr2);
non ho riportato per intero le funzioni, sbaglio qualcosa nel riportare i parametri delle funzioni all'interno del main

10 Risposte

  • Re: Funzione riportata nel main

    Ciao, manda tutto il codice, altrimenti si capisce poco
  • Re: Funzione riportata nel main

    virgy.45 ha scritto:


    non ho riportato per intero le funzioni, sbaglio qualcosa nel riportare i parametri delle funzioni all'interno del main
    Se non hai localizzato il bug non puoi fare assunzioni: frasi come "penso" e "sbaglio qualcosa" fanno perdere tempo a te e agli altri
  • Re: Funzione riportata nel main

    
    main() {
    	struct list1* list1;
    	struct list2* list2;
    	int size;
    	size = 5;
    	char selection[10];
    	int R = 4;
    	int C = 6;
    	int i = 0;
    	int j = 0;
    	float *A;
    	int ind;
    	init1(&list1);
    	init2(&list2);
    	Boolean exit_required = FALSE;
    	do {
    		scanf("%s", selection);
    		switch (selection[0]) {
    		    case 'A':
    				for (i = 0; i < R; i++) {
    					for (j = 0; j < C; j++) {
    						scanf("%f", A[C * i + j]);
    					}
    				}
    				break;
    			case 'a':
    				ind = float_index_max(A, R, C);
    				break;
    			case 'b':
    				to_two_list(A, R, C, &list1, &list2);
    				break;
    	    }
    	}
    }	    
    
    int float_index_max(float* A, int R, int C) {
    	float mas = -999999;
    	int i, j;
    	int I = 0;
    	int J = 0;
    	for (i = 0; i < R; i++) { //ciclo sulle righe
    		for (j = 0; j < C; j++) { //ciclo sulle colonne
    			if (A[C * i + j] > mas) {
    				max = A[C * i + j];
    				I = i;
    				J = j;
    			}
    		}
    	}
    	return I;
    	return J;
    }
    
    void to_two_list(float* A, int R, int C, struct list1** ptrptr1, struct list2** ptrptr2) {
    	float mas_r = -999999;
    	float mas_c = -999999;
    	int i, j;
    	int I = 0;
    	int J = 0;
    	for (i = 0; i < R; i++) {
    		for (j = 0; j < C; j++) {
    			if (A[C * i + j] > mas_r) {
    				mas_r = A[C * i + j];
    				I = i;
    			}
    		}
    		suf_insert_index1(ptrptr1, I);
    	}
    	for (j = 0; j < C; j++) {
    		for (i = 0; i < R; i++) {
    			if (A[C * i + j] > mas_c) {
    				mas_c = A[C * i + j];
    				J = j;
    			}
    		}
    		suf_insert_index2(ptrptr2, J);
    	}
    }
    				
    				
  • Re: Funzione riportata nel main

    E cosa dovrebbe fare questo programma?

    In paio diproblemi li ho visti, ma se non so cosa ci si aspetta di ottenere non posso pronunciarmi
  • Re: Funzione riportata nel main

    Con la prima funzione vorrei ritornare gli indici del valore massimo all'interno della matrice, nel secondo caso vorrei inserire in due liste distinte i vari indici corrispondenti ai valori massimi all'interno delle righe e quelli all'interno delle colonne della matrice.
  • Re: Funzione riportata nel main

    1)quanti return ha la prima funzione?
    Cosa fa il return?


    2) cosa è A?
    Perche pur essendo una variabile lo hai scritto maiuscolo?
    E quanto vale?

    3) un 'do' non richiede un 'while' ?


    Occhio, che le mie non sono domande, ma spunti di riflessione

    Quindi prima rifletti, e dopo aver riflesso, letto, studiato e capito, allora rispondi
  • Re: Funzione riportata nel main

    Ho messo due return perche' mi servono entrambi gli indici del valore massimo. I e J
    A sarebbe la mia matrice, sbaglio nel riportarla nel main? avendo utilizzato il puntatore quando torno nel main dovrei utilizzare il suo indirizzo, ma nel momento in cui metto &A si creano un sacco di errori
    
                           case 'a':
    				ind = float_index_max(&A, R, C);
    				break;
    			case 'b':
    				printf("\nCreo una lista con gli indici dei max di ciascuna riga, e una con quella di ciascuna colonna");
    				to_two_list(&A, R, C, &list1, &list2);
    				break;
    
    hai perfettamente ragione sul while, scusami tanto, ma il programma e' davvero lungo, e ho preso la parte che coinvolge la matrice.
  • Re: Funzione riportata nel main

    Liste e puntatori a matrici sono argomenti complicati: non possono essere affrontati se non ti rendi conto da solo quando indirizzi a un puntatore nullo, oppure se non sai che nei prototipi delle funzioni non sei obbligato a usare gli stessi nomi delle variabili.

    Ripassa bene le basi. Nel frattempo puoi provare a risolvere con variabili globali
  • Re: Funzione riportata nel main

    Sicuro che A sia una matrice?

    Come la dichiari?
  • Re: Funzione riportata nel main

    Ho messo due return perche' mi servono entrambi gli indici del valore massimo. I e J
    Direi che bisognerebbe anche ripassare il funzionamento di alcune istruzioni come return ...

    Non è per non rispondere ma ci sono parecchi errori e usi sbagliati di "base" che necessitano di una rilettura del libro di testo, prima di una risposta in un forum.
Devi accedere o registrarti per scrivere nel forum
10 risposte