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;
}
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;
}