PROBLEMA funzione arraysorting chiamata nel main

Pubblicità

davidson

Nuovo Utente
Messaggi
33
Reazioni
5
Punteggio
26
dato che vorrei prendere dimestichezza nell'uso delle funzioni in generale ho creato una cartella funzioni
dove all'interno ho creato un file funzioni.c e un file funzioni.h ho provato a creare la funzione array sorting passandogli il nome dell'array la dimensione e i che sarebbe il contatore

ho provato a richiamare la funzione nel main ma restituisce

6
6
6
6
6
6

oppure

5
5
5
5
5
5


FUNZIONI.c

Codice:
#include<string.h>
  4 #include<math.h>
  5
  6
  7 int  sortarray(int a[], int n, int i)
  8 {
  9                 int j,temp;
10
11
12                 for(i=0;i<n;i++)
13
14         {
15
16                 for(j=i+1;j<n;j++)
17
18                 {
19
20                         if(a[i]>a[j])
21
22                         {
23                                 temp = a[i];
24
25                                 a[i] = a[j];
26
27                                 a[j] = temp;
28
29
30
31
32                         }
33
34
35                 }
36
37
38         }
39
40
41
42 }

arraymerging.c

Codice:
#include<stdlib.h>
  3 #include "funzioni.h"
  4
  5
  6
  7                                 int main()
  8 {
  9                                 int i,j,size1,size2,temp;
10
11                                 j=0;
12
13                                 printf("inserisci numeri di elementi del primo array\n ");
14
15                                 scanf("%d",&size1);
16
17                                 int a[size1];
18
19                                 printf("inserisci numeri di elementi del secondo array\n");
20
21                                 scanf("%d",&size2);
22
23                                 int b[size2];
24
25
26
27                                 for(i=0;i<size1;i++)
28                                 {
29
30                                         printf("inserire valore dell'array a[%d] = ",i);
31
32                                         scanf("%d",&a[i]);
33
34
35
36                                 }
37
38                                 for(i=0;i<size2;i++)
39
40                                 {
41                                         printf("inserisci valore dell'array b[%d] =",i);

                                     }
 47
 48
 49                                 int c[size1+size2];
 50
 51                                 //inserisco i valore dell'array a[] in c[]//
 52
 53
 54                                 for(i=0;i<size1;i++)
 55
 56                                 {
 57                                         c[j] = a[i];
 58
 59                                         j++;
 60
 61                                 }
 62
 63                                 //inserisco i valori dell'array b[] in c[] leggo l'array b e poi inserisco i valori di b[]  in c []//
 64
 65                                 for(i=0;i<size2;i++)
 66                                 {
 67                                         c[j] = b[i];
 68
 69                                         j++;
 70
 71
 72                                 }
 73
 74                                         //array c con tutti i valori di a[] e b[]//
 75                                         //
 76                                 for(i=0;i<size1+size2;i++)
 77
 78                                 {
 79                                         printf("l'array risultante c[%d] e' %d\n",i,c[i]);

                                      }
                                 // array ordinato con la funzione sorting//
 86
 87
 88                                 for(i=0;i<size1+size2;i++)
 89                         {
 90
 91                                 printf("l'array[%d] ordinato  = %d\n",i,sortarray(c,size1+size2,i));
 92
 93                         }
 94
 95
 96
 97
 98                                 return 0;
 99 }


 80
 
Codice:
for(i=0;i<size2;i++){
printf("inserisci valore dell'array b[%d] =",i);
}
Manca la scanf per riempire l'array b :giudice:
 
Z2Uwyj6.png
 
L'errore e' nell'ultimo ciclo. Devi chiamare la tua funziona solo UNA volta, fuori dal ciclo, e poi nel ciclo visualizza il valore di c

PS non vedo perche' passi l'indice i, non ha alcun senso in quanto e' una variabile locale usata in un ciclo interno ??
PPS hai dichiarato la funzione int ma la funzione non ritorna un bel niente, dovresti dichiararla void.
 
Quoto Andretti, non solo manca il return nella funzione ( non dovrebbe dare errore il compilatore? ), ma per ritornare un array devi lavorare con i puntatori.
 
L'errore e' nell'ultimo ciclo. Devi chiamare la tua funziona solo UNA volta, fuori dal ciclo, e poi nel ciclo visualizza il valore di c

PS non vedo perche' passi l'indice i, non ha alcun senso in quanto e' una variabile locale usata in un ciclo interno ??
PPS hai dichiarato la funzione int ma la funzione non ritorna un bel niente, dovresti dichiararla void.
ho risolto con la tua soluzione , grazie mille
 
figurati non c'e' di che, sono contento di essere di aiuto. Se vuoi puoi pubblicare come hai modificato, cosi' potrai aiutare altri utenti.
 
Pubblicità
Pubblicità
Indietro
Top