PDA

View Full Version : [C] help esercizio banale


nongio
14-11-2006, 10:58
ciao a tuttiz, devo fare un esercizio per l'universita, ma non mi viene..... e' banale ma nn vuole venirmi...

Scrivere un programma che:

1) Legge quanti elementi ha un' array (al massimo 30),
2) legge gli elementi dell'array.

3) Fa un ciclo in cui
a) legge un numero (che chiamero' n nel seguito)
b) mette gli elementi minori di n in un'array e quelli
maggiori di n in un'altra array,
c) stampa
"Ci sono i seguenti elementi minori di n nell'array"
seguito dall'elenco degli elementi minori di n
"Ci sono i seguenti elementi maggiori di n nell'array"
seguito dall'elenco degli elementi maggiori di n

Potete decidere voi come far interrompere il ciclo.

senza usale le funzioni come lo fareste... grazie :help:

andbin
14-11-2006, 11:17
Scrivere un programma che:

1) Legge quanti elementi ha un' array (al massimo 30),
2) legge gli elementi dell'array.Innanzitutto che tipo di array??? Come devono essere assegnati i valori nell'array?? Dall'utente tramite tastiera? Direttamente nel sorgente??

Spiega meglio se vuoi un aiuto. ;)

MEMon
14-11-2006, 11:49
Si ma se fai l'uni e non ti viene un esercizio del genere ti conviene metterti sotto veramente prima dell'esame...

nongio
16-11-2006, 10:10
Innanzitutto che tipo di array??? Come devono essere assegnati i valori nell'array?? Dall'utente tramite tastiera? Direttamente nel sorgente??

Spiega meglio se vuoi un aiuto. ;)

Ciao scusa se rispondo cosi' in ritardo...

cmq si il valore da inserire e' da tastiera dall'utente...

Fino ad ora ho proseguito cosi':

#include <stdio.h>
#include <math.h>
#define imax 30


main ()
{

int arr[imax], num,i;
do
{
printf("Inserire il numero dei valori da inserire : ");
scanf ("%d", &num);
}
while((num<1) || (num>30));
for (i=0; i<num; i++)
{
printf("Inserire i valori dell'array:");
scanf("%d",&arr[i]);
}
if ( num>imax)
printf("I valori superano la dimensione massima dell'array ovvero 30 elementi " );

andbin
16-11-2006, 10:34
#include <stdio.h>
#include <math.h>
#define imax 30


main ()
{

int arr[imax], num,i;
do
{
printf("Inserire il numero dei valori da inserire : ");
scanf ("%d", &num);
}
while((num<1) || (num>30));
for (i=0; i<num; i++)
{
printf("Inserire i valori dell'array:");
scanf("%d",&arr[i]);
}
if ( num>imax)
printf("I valori superano la dimensione massima dell'array ovvero 30 elementi " );Fin qui mi sembra ok. Solo alcune cosette: main() deve ritornare un int. Inoltre <math.h> non credo che ti serva.

Non ho solo capito perché alla fine fai il test di num>max. num non vale mai più di 30, perché fai già il controllo nel do-while dell'input.

A questo punto, se ho capito bene, dovresti:
- Richiedere in input un numero.
- Mettere i valori minori del numero in un array e mettere i valori maggiori del numero in un altro array.

Tutto questo in un ciclo per poter ripetere la suddivisione più volte, eventualmente.

Innanzitutto dovresti dichiarare altri 2 array di lunghezza imax. Dovrai anche avere 2 variabili che tengono la lunghezza dei 2 array.
Poi fai un ciclo for per scansionare l'array principale, per ogni elemento fai il test con il numero inserito e in base al minore/maggiore, lo aggiungi ad uno dei due array (incrementando la variabile della lunghezza).

Prova un po', poi se hai problemi, chiedi pure.

nongio
16-11-2006, 11:22
ciao andbin, grazie della risposta.. sto provando a fare come hai detto tu ma ho qualche problemino :D :sofico:tu hai scritto
-Poi fai un ciclo for per scansionare l'array principale, per ogni elemento fai il test con il numero inserito e in base al minore/maggiore, lo aggiungi ad uno dei due array (incrementando la variabile della lunghezza).

dopo aver dichiarato le variabilie altri 2 array di lunghezza imax gli faccio fare

printf("Inserire un valore: ");
scanf("%d", &n);
for (arr[i]=0; arr[i]<n; n++ )
{
armin[h]=arr[i];
printf("i valori sono: %d",armin[h]);
}

so che c'e' qualcosa che non va... perdonatemi davvero ma se nn me lo spiega qualcuno non ci arrivo :help:

abbiate pazienza :cry:

andbin
16-11-2006, 11:41
ciao andbin, grazie della risposta.. sto provando a fare come hai detto tu ma ho qualche probleminoTi conviene dichiarare le variabili per i 3 array in questo modo:
int arr[imax], arr_min[imax], arr_mag[imax];
int num, num_min, num_mag;Una volta che hai tutti i valori (numero di elementi, gli N elementi e il numero per la suddivisione), fai un semplice ciclo for:
for (i = 0; i < num; i++)
{
....
}Dentro il ciclo dovrai testare se arr[i] è minore di 'n' oppure maggiore di 'n'. In base al test, dovrai inserire arr[i] in uno dei 2 array.
Nota che le variabili num_min e num_mag possono essere utilizzate sia per gli indici che per tenere la lunghezza dell'array.

Per essere più chiari: se nell'array arr_min hai già 2 elementi, allora num_min vale 2. Il prossimo elemento lo devi aggiungere proprio all'indice 2 (la terza cella) e poi devi incrementare il contatore.

nongio
16-11-2006, 17:49
Ti conviene dichiarare le variabili per i 3 array in questo modo:
int arr[imax], arr_min[imax], arr_mag[imax];
int num, num_min, num_mag;Una volta che hai tutti i valori (numero di elementi, gli N elementi e il numero per la suddivisione), fai un semplice ciclo for:
for (i = 0; i < num; i++)
{
....
}Dentro il ciclo dovrai testare se arr[i] è minore di 'n' oppure maggiore di 'n'. In base al test, dovrai inserire arr[i] in uno dei 2 array.
Nota che le variabili num_min e num_mag possono essere utilizzate sia per gli indici che per tenere la lunghezza dell'array.

Per essere più chiari: se nell'array arr_min hai già 2 elementi, allora num_min vale 2. Il prossimo elemento lo devi aggiungere proprio all'indice 2 (la terza cella) e poi devi incrementare il contatore.

grazie mille... provo e ti faccio sapere