|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 11
|
programma in c++ aiuto!! :(
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
( entro stasera mi serve ).. Scrivere un porgramma che acquista una stringa, attraverso una funzione stabilisca il numero di cifre contenute. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12939
|
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: Codice:
tipo nome-funzione(parametri)
{
..
codice
..
return valore;
}
Codice:
int doppio(int x)
{
return x*2;
}
...
int main(void)
{
int a = doppio(5); // a vale 10
return 0;
}
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). Codice:
int conta_numeri(string str)
{
..
codice
..
return conta;
}
Alla fine ritornerai la conta. Ultima modifica di WarDuck : 24-08-2010 alle 11:10. |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 11
|
ok grazie mille!
|
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 11
|
ho provato a rifarlo... ci sono ancora deiversi errori, ma non riesco a capire cosa sbaglio
#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(); } Ultima modifica di ilaria93S : 24-08-2010 alle 11:50. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 182
|
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... |
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 11
|
scusa non lo sapevo..
comunque grazie, ma mi dice che ci sono anche altri errori.. tipo sul for prima |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Se "stringa" viene dichiarato come numero intero, non puoi accedere a dei suoi elementi interni, come faresti nel caso di un'array.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 11
|
devo scrivere char stringa?
ma mi dice ke c'è ancora un errore sul for.. Ultima modifica di ilaria93S : 24-08-2010 alle 13:37. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
nella tua funzione hai dichiarato:
Codice:
int conta_numeri(int stringa) Un puntatore ad una stringa si scrive con * e deve essere naturalmente di tipo char. Comincia a coreggere quindi la tua funzione così: Codice:
int conta_numeri(char*stringa) EDIT: guarda il funzionamento di scanf(): http://www.cplusplus.com/reference/c.../cstdio/scanf/ Ultima modifica di Teo@Unix : 24-08-2010 alle 14:09. |
|
|
|
|
|
#10 | ||
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 11
|
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? |
||
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Codice:
for(j=0;j=9;j++) http://edu.os3.it/html/manual/impararec/node46.html#815 non ha senso assegnare j = 9 lì ci va un test, magari j == 9 |
|
|
|
|
|
#12 | |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 11
|
Quote:
|
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
posta il codice perchè sarà oramai stato modificato parecchio...
per capire quello che succede inserisci alla fine della funzione principale "main()" l'istruzione: Codice:
system("PAUSE");
|
|
|
|
|
|
#14 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 11
|
mi da errore.. "system undeclared"
cmq ecco il codice... 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");
}
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
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? |
|
|
|
|
|
#16 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 11
|
|
|
|
|
|
|
#17 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 11
|
quindi così va bene?
Codice:
#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);
}
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
|
|
|
|
|
|
#20 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 11
|
ok perfetto!! grazie mille!!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:16.




















