Problema con le funzioni Void

di il
7 risposte

Problema con le funzioni Void

Salve ragazzi, sono nuovo in questo forum, e innanzitutto volevo salutarvi, sono uno studente di ingegneria informatica, e mi sto esercitando con alcuni programmini in linguaggio C, sono alle prime armi quindi avrei qualche problema e spero che mi aiutate...

Sto "scapocciando" con questo esercizio.

/*Scrivere una funzione void bubblesort(int* v, int n) che ordina
l'array v di n interi passato come parametro usando l'algoritmo di ordinamento a bolle (bubblesort8).
Scrivere un main di prova per testare la correttezza della funzione realizzata.
* PROTOTIPO
* for i = 1:n,
swapped = false
for j = n:i+1,
if a[j] < a[j-1],
swap a[j,j-1]
swapped = true
? invariant: a[1..i] in final position
break if not swapped
end
*
* */

#include <stdio.h>
#include <stdlib.h>

int main () {
	int i, a;
	printf("inserisci il numero di interi che avrà il vettore\n");
	scanf ("%d", &a);
	int * vettore  = malloc (a*sizeof (int)); 
	
	for (i = 0; i<a; i++){
		printf ("inserisci il %d numero\n", i);
		scanf ("%d", &vettore[i]);
		}
		
	//stampo il vettore in disordine
	stampo (vettore, a); //a il numero di elementi

	//lo invio a bubblesort per essere ordinato
	bubblesort (vettore, a);

	//Stampo vettore ordinato
	stampo (vettore, a);
	}	
	void stampo (int* v, int a){
		int i;
		for (i = 0; i<a; i++){			
			if (i == a-1){
				printf ("%d.\n", v[i]);
				}
			else {
			printf ("%d, ", v[i]);
		}
	}
}

void bubblesort(int* v, int n){
	int i, j, temp; 
	int swapped;
	for (i = 1; i<n; i++){
		swapped = 0;
		for (j = n; j > i; j-- ){
			if (v[j]<v[j-1]){
			temp = v[j];
			v[j] = v[j-1];
			v [j-1] = temp;
			swapped = 1;
			}
		}
		if (!swapped) return;
	}	
}
Dal Teminale mi da questo Warning
Deme9.c:43:7: warning: conflicting types for ‘stampo’ [enabled by default]
void stampo (int* v, int a){
^
Deme9.c:33:2: note: previous implicit declaration of ‘stampo’ was here
stampo (vettore, a); //a il numero di elementi
^
Deme9.c:56:6: warning: conflicting types for ‘bubblesort’ [enabled by default]
void bubblesort(int* v, int n){
^
Deme9.c:36:2: note: previous implicit declaration of ‘bubblesort’ was here
bubblesort (vettore, a);
^
Non so dove sto sbagliando .. sicuramente ha a che fare con i processi void bubblesort e stampo, essendo alle prime armi ancora no riesco a capire il problema, spero mi date una mano
Grazie in anticipo

7 Risposte

  • Re: Problema con le funzioni Void

    Non hai dichiarato le funzioni prima del main.

    Puoi semplicemente prendere tutto il main e spostarlo alla fine del programma, dopo le funzioni.
  • Re: Problema con le funzioni Void

    oregon ha scritto:


    Non hai dichiarato le funzioni prima del main.

    Puoi semplicemente prendere tutto il main e spostarlo alla fine del programma, dopo le funzioni.
    Grazie mille oregon, sto su questo esercizio da questa mattina... ... Non sapevo si dovessero dichiarare le funzioni ... ancora grazie...
    Ora ho anche risolto altri problemi ... Ora è tutto perfetto .. Ecco il codice corretto a chi dovesse servire

    
    
    #include <stdio.h>
    #include <stdlib.h>
    
    void stampo (int* v, int a){
    		int i;
    		for (i = 0; i<a; i++){			
    			if (i == a-1){
    				printf ("%d.\n", v[i]);
    				}
    			else {
    			printf ("%d, ", v[i]);
    		}
    	}
    }
    
    
    void bubblesort(int* v, int n){
    	int i, j, temp; 
    	int swapped;
    	for (i = 0; i<n; i++){
    		swapped = 0;
    		for (j = n-1; j > i; j-- ){
    			if (v[j]<v[j-1]){
    			temp = v[j];
    			v[j] = v[j-1];
    			v [j-1] = temp;
    			swapped = 1;
    			}
    		}
    		if (!swapped) break;
    	}
    	
    }
    
    int main () {
    	int i, a;
    	printf("inserisci il numero di interi che avrà il vettore\n");
    	scanf ("%d", &a);
    	int * vettore  = malloc (a*sizeof (int)); 
    	
    	for (i = 0; i<a; i++){
    		printf ("inserisci il %d numero\n", i+1);
    		scanf ("%d", &vettore[i]);
    		}
    		
    	//stampo il vettore in disordine
    	stampo (vettore, a); //a il numero di elementi
    	
    	//lo invio a bubblesort per essere ordinato
    	bubblesort (vettore, a);
    	
    	//Stampo vettore ordinato
    	stampo (vettore, a);
    	
    	}
    
  • Re: Problema con le funzioni Void

    A scopo informativo: https://en.wikipedia.org/wiki/Function_prototyp
  • Re: Problema con le funzioni Void

    Rami89 ha scritto:


    Non sapevo si dovessero dichiarare le funzioni ...
    Da dove studi il C ?
  • Re: Problema con le funzioni Void

    oregon ha scritto:


    Rami89 ha scritto:


    Non sapevo si dovessero dichiarare le funzioni ...
    Da dove studi il C ?
    Autodidatta, cioè in teoria dovrei iniziare il corso tra una settimana... Avendo già fatto java ho pensato di anticipare i tempi, e cominciare a studiare da solo, ...
  • Re: Problema con le funzioni Void

    Allora prendi un libro ed inizia dalla prima pagina...
  • Re: Problema con le funzioni Void

    oregon ha scritto:


    Allora prendi un libro ed inizia dalla prima pagina...
    Lo farò .. Ancora grazie
Devi accedere o registrarti per scrivere nel forum
7 risposte