PDA

View Full Version : [C] Dubbi esercizio prova d'esame


piumone
26-06-2007, 17:29
Per chi si vuole cimentare riporto la soluzione di un esame che guardo e riguardo ma di cui non capisco bene tutte le istruzioni.

Scrivere un programma C che:
-Inserisce in un vettore VETT di 20 interi una sequenza di numeri letti da tastiera. Il caricamento del vettore deve terminare al 20-esimo numero o quando è inserito il primo numero strettamente inferiore a 2.
-Memorizza un secondo vettore di nome PRIMI quei numeri di VETT che sono primi.
-Memorizza in un terzo vettore di nome GRANDI gli elementi di primi strettamente > di 50.

#include <stdio.h>
#include <stdlib.h>
typedef int VETTORE[20];
void stampa(int *v, int l, char *s)
/*da testo questa funzione è indispensabile?*/
{int i;
printf("%s: ",s);
for(i=0; i<l; i++)
printf("%3d\t",v[i]);
printf("\n");
}

int primo(int v)
{ int i;
for( i=2; i<v; i++)
if (v%i == 0)
return 0;
return 1;
}

int main()
{
VETTORE VETT={0}, PRIMI={0}, GRANDI={0};
int i,j,k,v;


scanf("%d",&v);
for(j=0,i=0;i<20 && v>=2; i++)
{
VETT[i] = v;
if(primo(VETT[i]))
{PRIMI[j]=VETT[i];
j++;}
scanf("%d",&v); /*perchè un'altra scanf?*/ }
for(k=0, i=0; i<j; i++)
if(PRIMI[i] > 50)
{GRANDI[k] = PRIMI[i];
k++;}

stampa(VETT,20,"vettore iniziale");
stampa(PRIMI,j,"primi");
stampa(GRANDI,k,"maggiori 50");

system("pause"); return 0;
}

sirus
26-06-2007, 22:27
La funzione stampa non è indispensabile ai fine della risoluzione di un programma simile, però in questo caso è comoda. :D
Senza la seconda scanf non potresti acquisire i valori successivi da inserire nell'array VETT. :)

piumone
27-06-2007, 00:13
Ok dovrei aver capito anche questa.. sono un pò acerbo del linguaggio e si vede.. :D