View Full Version : Vettore 10 numeri e determinare pari e dispari [help]
Salve a tutti e da un'oretta che mi sto mangiando la testa per realizare un programma che svolga questo quesito:
Caricare in un vettore 10 numeri interi...successivamente mostrate un contatore dei numeri pari e di quelli dispari...infine stampare (mostrare) prima tutti i numeri pari e poi tutti quelli dispari...
Io l'ho fatto così ma sto avendo problemi nella stampa dei numeri pari e di quelli dispari....chi mi può aiutare?
#include <stdio.h>
int main ()
{
int vet[10];
int pari;
int dispari;
int resto;
int i;
pari=0;
dispari=0;
for(i=1;i<=10;i++)
{
printf("inserisci un numero: ");
scanf("%d",&vet[i]);
}
for(i=1;i<=10;i++)
{
resto=vet[i]%2;
if(resto==0)
pari++;
else
dispari++;
}
printf("numeri pari %d\n",pari);
printf("numeri dispari %d\n",dispari);
scanf("%d");
}
Sicuramente c'è qualche errore alla stampa del vettore....o all'assegnazione...perchè li sto appena studiando e non li so usare ancora bene...
scusa ma dov'è la parte per la stampa dei numeri pari e dispari?
comunque se li vuoi stampare tutti alla fine, potresti fare un altro vettore di controllo booleano e quando un numero è pari segni true, altrimenti false, dopo aver controllato il vettore stampi prima tutti i numeri che ci sono nelle posizioni true, e poi quelli con le posizioni false. potrebbe essere una soluzione..
é proprio questo che non riesco a fare....come si codificherebbe con il vettore di controllo booleano? che ancora non li abbiamo studiati...
Grazie
potresti fare:
bool ctrl[10];
for(i=0;i<10;i++){
if(vet[i]%2){
pari++;
ctrl[i]=true;
}
else {
dispari++;
ctrl[i]=false;
}
}
e poi:
for(i=0;i<10;i++) //stampare i pari
if(ctrl[i]) cout<< vet[i] <<"\n";
for(i=0;i<10;i++) //stampare i dispari
if(!ctrl[i]) cout<< vet[i] <<"\n";
Dovrebbe uscire così....ma non sto riuscendo a fare la parte di stampa...non la sto capendo..:cry:
#include <stdio.h>
int main ()
{
bool ctrl[10];
int vet[10];
int pari;
int dispari;
int resto;
int i;
pari=0;
dispari=0;
for(i=1;i<=10;i++)
{
printf("inserisci un numero: ");
scanf("%d",&vet[i]);
}
for(i=1;i<=10;i++)
{
resto=vet[i]%2;
if(resto==0)
{pari++;
ctrl[i]=true;}
else
{dispari++;
ctrl[i]=false;}
scusa come prima cosa mi sono dimenticato di chiederti che linguaggio usi, non l'hai specificato nel titolo e io ho usato il linguaggio del c++..
per quanto riguarda quello che ti ho scritto cercherò di spiegartelo un po meglio:
for(i=0;i<10;i++) //ciclo for per scorrere il vettore di controllo ctrl[i]
if(ctrl[i]) // se ctrl[i] è true entra nel ciclo for.
se ctrl[i] è true allora il corrispondente numero di vet[i] deve essere pari perchè precedentemente hai fatto:
resto=vet[i]%2;
if(resto==0){
pari++;
ctrl[i]=true;
}
fin quì ci sei?
quindi utilizziamo la riga sotto per stampare i valori pari.
cout<< vet[i] <<"\n";
la stessa cosa avviene con i numeri dispari, visto che volevi stampare prima tutti i pari e poi tutti i dispari si devono fare due cicli for separati...
spero di essere stato un po più chiaro
for(i=0;i<10;i++) //stampare i dispari
if(!ctrl[i]) cout<< vet[i] <<"\n";
Fatto...ho capito sei stato chiarissimo ;) ...
io l'ho fatto così (uso C)..:
printf("I numeri pari sono: \n");
for(i=0;i<10;i++)
{if(ctrl[i]);
printf("%d \n"), vet[i];}
con cout<< vet[i] <<"\n"; mi dà proprio errore.... e ho cambiato con printf.così lo avvia ma mi stampa sempre 2293592 al posto dei numeri...:confused:
Thread chiuso
|
V
http://www.hwupgrade.it/forum/showthread.php?t=1649196
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.