Errore?
Inviato: 18/12/2021, 18:48
Ciao a tutti.
Sto riscontrando problemi con questo programma
La traccia è la seguente : scrivere una funzione che, data in ingresso un vettori di interi e due interi x e y restituisca un nuovo vettore degli elementi maggiori di x e minori di y e li ordini in senso crescente. Io ho fatto due file uno contenente il main e l'altro una funzione. Il codice compila, però quando lo vado ad eseguire non mi esce nulla (nel senso mi fa inserire la dimensione, gli elementi e poi non mi esce il nuovo vettore ordinato in senso crescente, non esce nulla).Quale può essere il problema?
Sto riscontrando problemi con questo programma
La traccia è la seguente : scrivere una funzione che, data in ingresso un vettori di interi e due interi x e y restituisca un nuovo vettore degli elementi maggiori di x e minori di y e li ordini in senso crescente. Io ho fatto due file uno contenente il main e l'altro una funzione. Il codice compila, però quando lo vado ad eseguire non mi esce nulla (nel senso mi fa inserire la dimensione, gli elementi e poi non mi esce il nuovo vettore ordinato in senso crescente, non esce nulla).Quale può essere il problema?
- Codice:
#include <stdio.h>
#include <stdlib.h>
#define maxDim (100)
void vettore (int a[], int dimensione1, int b[], int x, int y, int*dimensione2);
int main (void) {
int a[maxDim];
int b[maxDim];
int index;
int indice;
int x;
int y;
int dimensione1;
int dimensione2;
//Inserimento delle dimensioni
printf("Inserisci la dimensione dell'array (max%d): ", maxDim);
scanf("%d", &dimensione1);
printf("Inserisci il valore dell'intero x: ");
scanf("%d", &x);
printf("Inserisci il valore dell'intero y: ");
scanf("%d", &y);
//Controllo di allocazione statica
if ((dimensione1 > 0) && (dimensione1 <= maxDim)) {
//Lettura dell'array
for (index = 0; index < dimensione1; index++) {
printf("Inserisci il valore %d-esimo:\n", index);
scanf("%d", &a[index]);
}
//Chiamata della funzione
vettore (a, dimensione1, b, x, y, &dimensione2);
//Stampa del vettore
if (dimensione2 > 0) {
for (indice = 0; indice < dimensione2; indice++) {
printf("b[%d] = %d\n", indice, b[indice]);
}
}
} else {
printf("Errore: la dimensione inserita e' maggiore di %d", maxDim);
}
return 0;
}
funzione
#include <stdio.h>
#include <stdlib.h>
#define maxDim (100)
void vettore (int a[], int dimensione1, int b[], int x, int y, int* dimensione2) {
int index;
int indice;
int alto;
int swap;
//Calcolo degli elementi compresi tra x e y
(*dimensione2) = 0;
indice = 0;
if(x < a[index] < y) {
b[indice] = a[index];
indice++;
(*dimensione2++);
}
//Ordinamento dell'array (bubble sort)
alto = *dimensione2;
while (alto > 0) {
for (indice = 0; indice < (*dimensione2) -1; indice++) {
if (b[indice] > b[indice+1]) {
swap = b[indice];
b[indice] = b[indice+1];
b[indice+1] = swap;
}
}
alto--;
}
}