PDA

Visualizza la versione completa : [C]Problema di input


21Edoardo96
18-01-2013, 20:10
Ciao,
devo fare un programma che permetta ricevuto un array di numeri interi positivi terminata da zero di restituire il numero di elementi che contengono un numero pari di cifre.
Il problema è nell'input infatti:
1) L'inserimento mi è consentito solo per 4 numeri e non di più;
2) Non termina l'inserimento di numeri quando premo zero



#include<stdio.h>
int main()
{
int n[100], i=0;
printf("Inserisci un numero (per terminare premi zero)");
do
{
printf("\nInserisci il %d%c numero:", i+1, 167);
scanf("%d", &n[i]);
i++;
}
while(n[i]!=0);
printf("\nIl numero di elementi che contengono cifre pari e\': %d", npar(n));
}
//Implementazione della funzione che conta il numero di elementi a cifre pari
int npar(int n1[])
{
int tot=0, n2[100], z=0, con=0;
do
{
n2[z]=n1[z];
while(n2[z]!=0)
{
n2[z]/10;
con++;
}
if(con%2==0)
tot++;
con=0;
z++;
}
while(n1[z]!=0);
return tot;
}

Ciao e grazie

P.S. Auguri a tutti di buon anno anche se molto in ritardo

Hard*RTOS
18-01-2013, 20:25
Originariamente inviato da 21Edoardo96
Ciao, devo fare un programma che permetta ricevuto un array di numeri interi positivi terminata da zero di restituire il numero di elementi che contengono un numero pari di cifre.


Ad una prima lettura non è molto chiaro, sarebbe stato più comprensibile così:

Ciao, devo fare un programma che permetta - ricevuto un array di numeri interi positivi terminata da zero - di restituire il numero di elementi che contengono un numero pari di cifre.

Con 2 piccole linee è molto più chiaro, non credi?


Ignorando il fatto che questi piccoli problemi di C si risolvano mediante la lettura e lo studio di qualsiasi libro, dai un'occhiata qui (http://www.ing.unisannio.it/santone/Didattica/Elementi/Lucidi/12_stringhe.pdf): è una dispensa di un corso di Ingegneria dell'Università di Benevento, che spiega come accettare gli input e gestire gli array.

Ciao :)

21Edoardo96
18-01-2013, 20:41
Ciao,
ho riletto più volte il codice e la pagina che mi hai consigliato ma, non ho capito dove si trovi l'errore.
Potresti dirmi quale parte dovrei modificare al fine di far funzionare il codice.
Ciao e grazie

21Edoardo96
18-01-2013, 20:53
Ciao,
ho modificato il codice ed adesso l'unico problema che trovo è che non termina l'inserimento dei numeri quando premo il tasto zero


#include<stdio.h>
int main()
{
int n[1000], i=0;
printf("Inserisci un numero (per terminare premi zero)");
do
{
printf("\nInserisci il %d%c numero:", i+1, 167);
scanf("%d", &n[i]);
i++;
}
while(n[i-1]!=0);
printf("\nIl numero di elementi che contengono cifre pari e\': %d", npar(n));
}
//Implementazione della funzione che conta il numero di elementi a cifre pari
int npar(int n1[])
{
int tot=0, n2[100], z=0, con=0;
do
{
n2[z]=n1[z];
while(n2[z]=0)
{
n2[z]/10;
con++;
}
if(con%2==0)
tot++;
con=0;
z++;
}
while(n1[z]!=0);
return tot;
}

oregon
18-01-2013, 20:56
Originariamente inviato da 21Edoardo96
1) L'inserimento mi è consentito solo per 4 numeri e non di più;

Non mi pare


2) Non termina l'inserimento di numeri quando premo zero

Nota che inserisci il valore in n[i], incrementi i con i++ e poi confronti n[i] con 0 ...


P.S. Controlla anche

n2[z]/10;

perché non ha molto senso

21Edoardo96
18-01-2013, 21:57
Ciao,
ho modificato un po' il codice è solo che permane il problema di uscire dall'inserimento quando ho premuto zero.


#include<stdio.h>
int main()
{
int n[1000], i=0;
printf("Inserisci un numero (per terminare premi zero)");
do
{
printf("\nInserisci il %d%c numero:", i+1, 167);
scanf("%d", &n[i]);
i++;
}
while(n[i-1]!=0);
printf("\nIl numero di elementi che contengono cifre pari e\': %d", npar(n));
}
//Implementazione della funzione che conta il numero di elementi a cifre pari
int npar(int n1[])
{
int tot=0, n2[100], z=0, con=0;
do
{
n2[z]=n1[z];
while(n2[z]=0)
{
ne[z]=n2[z]/10;
con++;
}
if(con%2==0)
tot++;
con=0;
z++;
}
while(n1[z]!=0);
return tot;
}

Ciao e grazie

oregon
18-01-2013, 22:11
Veramente funziona ... ovviamente inserisci 0 e return ...

Probabilmente non hai compilato correttamente (fra l'altro DOVRESTI avere degli errori in compilazione ... li hai? )


P.S. ne[z] è sbagliato ...

21Edoardo96
18-01-2013, 22:26
Ciao,
per sistemare l'input ho dovuto solo aggiungere il return 0.
Ora devo guardare la funzione che mi crea ancora dei problemi.


#include<stdio.h>
int main()
{
int n[1000], i=0;
printf("Inserisci un numero (per terminare premi zero)");
do
{
printf("\nInserisci il %d%c numero:", i+1, 167);
scanf("%d", &n[i]);
i++;
}
while(n[i-1]!=0);
printf("\nIl numero di elementi che contengono cifre pari e\': %d\n", npar(n));
system ("pause");
return 0;
}
//Implementazione della funzione che conta il numero di elementi a cifre pari
int npar(int n1[])
{
int tot=0, n2[100], z=0, con=0;
do
{
n2[z]=n1[z];
while(n2[z]=0)
{
n2[z]=n2[z]/10;
con++;
}
if(con%2==0)
tot++;
con=0;
z++;
}
while(n1[z-1]!=0);
return tot;
}


Ciao e grazie

oregon
18-01-2013, 22:27
Originariamente inviato da 21Edoardo96
Ciao,
per sistemare l'input ho dovuto solo aggiungere il return 0.

Il return 0 non c'entra nulla con l'input.

Il tuo problema era che *non riuscivi a compilare* a causa dell'errore e (come pensavo) ed eseguivi sempre il vecchio programma.

Devi fare *molta attenzione* agli errore di compilazione.

21Edoardo96
19-01-2013, 13:03
Ok,
grazie per la precisazione.
IL problema che continuo a riscontrare è che la funzione conta qualsiasi numero inserito come numero con cifre poari come mai?


#include<stdio.h>
int main()
{
int n[1000], i=0;
printf("Inserisci un numero (per terminare premi zero)");
do
{
printf("\nInserisci il %d%c numero:", i+1, 167);
scanf("%d", &n[i]);
i++;
}
while(n[i-1]!=0);
printf("\nIl numero di elementi che contengono cifre pari e\': %d\n", npar(n));
system ("pause");
return 0;
}
//Implementazione della funzione che conta il numero di elementi a cifre pari
int npar(int n1[])
{
int tot=0, n2[100], z=0, con=0;
do
{
n2[z]=n1[z];
while(n2[z]=0)
{
n2[z]=n2[z]/10;
con++;
}
if(con%2==0)
tot++;
con=0;
z++;
}
while(n1[z-1]!=0);
return tot;
}


Ciao e grazie

Loading