View Full Version : programma in c++ aiuto!! :(
ilaria93S
24-08-2010, 09:37
salve a tutti! mi servirebbe entro stasera questo programma... dmn ho l'esame di riparazione, ma questo programma non sono proprio riuscita a farlo perchè con le funzioni non ci ho capito niente :( spero che mi possiate aiutare.. grazie 1000 in anticipo a chi rispondera
( entro stasera mi serve )..
Scrivere un porgramma che acquista una stringa, attraverso una funzione stabilisca il numero di cifre contenute.
Beh il programma non te lo possiamo scrivere noi, comunque...
Una funzione (in maniera poco formale) è un blocco di codice che puoi richiamare da programma, che dato un ingresso ti da un'uscita.
Per dichiarare una funzione si usa questa sintassi:
tipo nome-funzione(parametri)
{
..
codice
..
return valore;
}
Esempio:
int doppio(int x)
{
return x*2;
}
...
int main(void)
{
int a = doppio(5); // a vale 10
return 0;
}
Anche il main() è una funzione, in particolare la prima funzione ad essere eseguita quando avvii il programma.
Comunque ciò che ti si chiede non è difficile, in pratica farai una funzione del tipo string -> intero (ovvero che data una stringa ti ritorna un intero).
int conta_numeri(string str)
{
..
codice
..
return conta;
}
Quello che dovrai fare è leggere un carattere alla volta e stabilire se è un numero oppure no, se è un numero allora incrementi di uno il contatore, altrimenti passi al carattere successivo.
Alla fine ritornerai la conta.
ilaria93S
24-08-2010, 10:25
ok grazie mille! :) ora provo a rifarlo...
ilaria93S
24-08-2010, 10:42
ho provato a rifarlo... ci sono ancora deiversi errori, ma non riesco a capire cosa sbaglio :( :help:
#include<stdio.h>
int conta_numeri(int stringa)
{
char v[]="0123456789";
int i,j,cont;
cont=0;
for(i=0;stringa[i]!='\0';i++)
{
for(j=0;j=9;j++)
{
if(stringa[i]==v[j])
{
cont++;
j=10;
}
}
}
return cont;
}
int main()
{
char stringa[20],v[10];
int cont, i,k,j, num, n;
printf("\ninserire una stringa:\n\n");
i=0;
scanf ("%c", & stringa[0]);
while (stringa[i]!='\n')
{
i++;
scanf ("%c", & stringa[i]);
}
cont=conta_numeri(stringa);
printf("\nIl numero di cifre della stringa e' %d\n",cont);
getch();
}
Per favore usa gli appositi TAG per postare del codice...
Comunque dando un'occhiata al volo nel tuo for hai sbagliato a scrivere la condizione j<9 e non j=9...
ilaria93S
24-08-2010, 12:13
scusa non lo sapevo..
comunque grazie, ma mi dice che ci sono anche altri errori.. tipo sul for prima :(
DanieleC88
24-08-2010, 12:23
Se "stringa" viene dichiarato come numero intero, non puoi accedere a dei suoi elementi interni, come faresti nel caso di un'array.
ilaria93S
24-08-2010, 12:32
devo scrivere char stringa?
ma mi dice ke c'è ancora un errore sul for..
Teo@Unix
24-08-2010, 13:02
nella tua funzione hai dichiarato:
int conta_numeri(int stringa)
quando tu chiami la funzione e passi "stringa", tu passi il puntatore dell'array, questo credo che lo sai.
Un puntatore ad una stringa si scrive con * e deve essere naturalmente di tipo char.
Comincia a coreggere quindi la tua funzione così:
int conta_numeri(char*stringa)
poi ci sono ancora dei problemi sul modo che usi per leggere la stringa credo
EDIT:
guarda il funzionamento di scanf():
http://www.cplusplus.com/reference/clibrary/cstdio/scanf/
ilaria93S
24-08-2010, 13:10
#include<stdio.h>
int conta_numeri(char *stringa)
{
char v[]="0123456789";
int i,j,cont;
cont=0;
for(i=0;stringa[i]!='\0';i++)
{
for(j=0;j<9;j++)
{
if(stringa[i]==v[j])
{
cont++;
j=10;
}
}
}
return cont;
}
int main()
{
char stringa[20],v[10];
int cont, i,k,j, num, n;
printf("\ninserire una stringa:\n\n");
i=0;
scanf ("%c", & stringa[0]);
while (stringa[i]!='\n')
{
i++;
scanf ("%c", & stringa[i]);
}
cont=conta_numeri(stringa);
printf("\nIl numero di cifre della stringa e' %d\n",cont);
}
evvai adesso funziona! grazie a tutti.. :)
è rimasto solo un piccolo problema... quando lo mando in esecuzione dopo aver scritto "il numero di cifre della strnga è.." si chiude subito.
sapete come risolverlo?
Teo@Unix
24-08-2010, 13:13
for(j=0;j=9;j++)
per l'uso del for guarda qui:
http://edu.os3.it/html/manual/impararec/node46.html#815
non ha senso assegnare j = 9 lì ci va un test, magari j == 9
ilaria93S
24-08-2010, 13:24
for(j=0;j=9;j++)
per l'uso del for guarda qui:
http://edu.os3.it/html/manual/impararec/node46.html#815
non ha senso assegnare j = 9 lì ci va un test, magari j == 9
adesso ho messo j<=9 e funziona.. a parte quel problema che ho scritto prima...
Teo@Unix
24-08-2010, 13:27
posta il codice perchè sarà oramai stato modificato parecchio...
per capire quello che succede inserisci alla fine della funzione principale "main()" l'istruzione:
system("PAUSE");
così il programma si ferma e capiamo cosa viene stampato.
ilaria93S
24-08-2010, 13:44
mi da errore.. "system undeclared"
cmq ecco il codice...
#include<stdio.h>
int conta_numeri(char *stringa)
{
char v[]="0123456789";
int i,j,cont;
cont=0;
for(i=0;stringa[i]!='\0';i++)
{
for(j=0;j<=9;j++)
{
if(stringa[i]==v[j])
{
cont++;
j=10;
}
}
}
return cont;
}
int main()
{
char stringa[20],v[10];
int cont, i,k,j, num, n;
printf("\ninserire una stringa:\n\n");
i=0;
scanf ("%c", & stringa[0]);
while (stringa[i]!='\n')
{
i++;
scanf ("%c", & stringa[i]);
}
cont=conta_numeri(stringa);
printf("\nIl numero di cifre della stringa e' %d\n",cont);
system("PAUSE");
}
Teo@Unix
24-08-2010, 14:08
la stringa di formato per scanf() deve essere %s non %c. %s legge una stringa di caratteri %c ne legge uno.
Per system(), tu sei su windows o su linux?
ilaria93S
24-08-2010, 14:10
la stringa di formato per scanf() deve essere %s non %c. %s legge una stringa di caratteri %c ne legge uno.
Per system(), tu sei su windows o su linux?
windows
ilaria93S
24-08-2010, 14:12
quindi così va bene?
#include<stdio.h>
int conta_cifre(char *stringa)
{
char v[]="0123456789";
int i,j,cont;
cont=0;
for(i=0;stringa[i]!='\0';i++)
{
for(j=0;j<=9;j++)
{
if(stringa[i]==v[j])
{
cont++;
j=10;
}
}
}
return cont;
}
int main()
{
char stringa[20],v[10];
int cont, i,k,j, num, n;
printf("\ninserire una stringa:\n\n");
i=0;
scanf ("%s", & stringa[i]);
cont=conta_cifre(stringa);
printf("\nIl numero di cifre della stringa e' %d\n",cont);
}
Teo@Unix
24-08-2010, 14:14
windows
includi stdlib così:
#include <stdlib.h>
Teo@Unix
24-08-2010, 14:18
quindi così va bene?
credo di si.
ilaria93S
24-08-2010, 14:25
ok perfetto!! grazie mille!! :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.