10/10/08 12:22
bigjohn
Salve a tutti.
Sono un principiante del linguaggio C ed è per questo che chiedo lumi in riferimento a quanto sottostante esposto:
Problema - Scrivere una funzione C
int indMin (int a [], int n)
che opera su due parametri:
- un array di interi parzialmente riempito a
- un intero n, corrispondente al numero di elementi presenti in a.
La funzione deve restituire l'indice della posizione dell'array in cui si trova
l'elemento di valore minimo.
Si supponga, ad esempio, che l'array a contenga i seguenti valori:
( 3, -4, 5, -6, -1, 3, 4), con n=7.
La funzione deve restituire:
• indice 3 (a[3]==:-6)
a seguire codice da me scritto che sembra funzionare. Siccome non sono sicuro della robustezza di tale codice, chiedo cortesemente a Voi se :
1) è corretto?
2) si può migliorare?
3) è possibile, anzichè dichiarare da codice la lunghezza dell'array (vedi const size), chiedere all'utente di digitare la lunghezza della sequenza e quindi come modificare tale codice?
//----- codice -----------
#include <stdio.h>
#include <stdlib.h>
const int size = 6;
/* Funzione da sviluppare */
int indMin(int a [], int n) {
int i,posMin=0;
for(i=1;i<n;i++){
if(a[i]<a[posMin]){
posMin=i;
}
}
return posMin;
}
void inserimento (int a [], int n);
void stampa (int a[], int n);
main() {
int piccolo; //valore minimo array
int a[size], n;
inserimento(a, n);
printf("\n" //a capo con riga vuota
stampa(a, n);
printf("\n"
piccolo = indMin(a,size);
printf("Il valore minimo dell'array si trova in posizione %d (e vale %d)\n", piccolo, a[piccolo]);
printf("\n"
system("pause"
}
/* Procedura che riceve in ingresso un array e la sua dimensione n e richiede il riempimento da tastiera */
void inserimento (int a [], int n) {
int i;
for(i=0;i<size;i++){
printf("Inserire il %do intero: ", i+1);
scanf("%d", &a[i]);
}
}
/* Procedura che stampa il contenuto di un array */
void stampa (int a[], int n) {
int i;
for (i=0;i<size;i++){
printf("Valore in posizione %d: %d\n", i, a[i]);
}
}
Grazie per un cortese riscontro.
Gianni.
Sono un principiante del linguaggio C ed è per questo che chiedo lumi in riferimento a quanto sottostante esposto:
Problema - Scrivere una funzione C
int indMin (int a [], int n)
che opera su due parametri:
- un array di interi parzialmente riempito a
- un intero n, corrispondente al numero di elementi presenti in a.
La funzione deve restituire l'indice della posizione dell'array in cui si trova
l'elemento di valore minimo.
Si supponga, ad esempio, che l'array a contenga i seguenti valori:
( 3, -4, 5, -6, -1, 3, 4), con n=7.
La funzione deve restituire:
• indice 3 (a[3]==:-6)
a seguire codice da me scritto che sembra funzionare. Siccome non sono sicuro della robustezza di tale codice, chiedo cortesemente a Voi se :
1) è corretto?
2) si può migliorare?
3) è possibile, anzichè dichiarare da codice la lunghezza dell'array (vedi const size), chiedere all'utente di digitare la lunghezza della sequenza e quindi come modificare tale codice?
//----- codice -----------
#include <stdio.h>
#include <stdlib.h>
const int size = 6;
/* Funzione da sviluppare */
int indMin(int a [], int n) {
int i,posMin=0;
for(i=1;i<n;i++){
if(a[i]<a[posMin]){
posMin=i;
}
}
return posMin;
}
void inserimento (int a [], int n);
void stampa (int a[], int n);
main() {
int piccolo; //valore minimo array
int a[size], n;
inserimento(a, n);
printf("\n" //a capo con riga vuota
stampa(a, n);
printf("\n"
piccolo = indMin(a,size);
printf("Il valore minimo dell'array si trova in posizione %d (e vale %d)\n", piccolo, a[piccolo]);
printf("\n"
system("pause"
}
/* Procedura che riceve in ingresso un array e la sua dimensione n e richiede il riempimento da tastiera */
void inserimento (int a [], int n) {
int i;
for(i=0;i<size;i++){
printf("Inserire il %do intero: ", i+1);
scanf("%d", &a[i]);
}
}
/* Procedura che stampa il contenuto di un array */
void stampa (int a[], int n) {
int i;
for (i=0;i<size;i++){
printf("Valore in posizione %d: %d\n", i, a[i]);
}
}
Grazie per un cortese riscontro.
Gianni.
aaa