Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
realme 16 5G è un nuovo smartphone con sensore Sony IMX 852 da 50MP sul retro e uno specchio selfie fisico integrato nella camera bar, una prima nel segmento di mercato. Batteria da 6550mAh in un corpo da 8,1mm e 183g, certificazione IP69K e ricarica da 45W completano un pacchetto aggressivo per la fascia media, per uno dei prodotti più interessanti del produttore sul piano commerciale
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Sono ormai definitive le nuove norme del Codice della Strada per i monopattini elettrici. Non solo targa e assicurazione, le regole sono tante e riguardano diversi aspetti, vi spieghiamo come evitare sanzioni che possono essere salate
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5 introduce Dynamic Multi Frame Generation e MFG 6X, permettendo fino a cinque frame generati per ogni frame renderizzato. I test su Cyberpunk 2077 e 007 First Light mostrano forti incrementi di FPS e riduzione della latenza su RTX 5090 Laptop. Migliorano fluidità, stabilità e qualità visiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-08-2010, 09:37   #1
ilaria93S
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 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.
ilaria93S è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 10:06   #2
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12999
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;
}
Esempio:

Codice:
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).

Codice:
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.

Ultima modifica di WarDuck : 24-08-2010 alle 10:10.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 10:25   #3
ilaria93S
Junior Member
 
Iscritto dal: Aug 2010
Messaggi: 11
ok grazie mille! ora provo a rifarlo...
ilaria93S è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 10:42   #4
ilaria93S
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 10:50.
ilaria93S è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 11:40   #5
oNaSsIs
Member
 
L'Avatar di oNaSsIs
 
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...
oNaSsIs è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 12:13   #6
ilaria93S
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
ilaria93S è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 12:23   #7
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
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!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 12:32   #8
ilaria93S
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 12:37.
ilaria93S è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 13:02   #9
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
nella tua funzione hai dichiarato:

Codice:
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ì:
Codice:
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/c.../cstdio/scanf/

Ultima modifica di Teo@Unix : 24-08-2010 alle 13:09.
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 13:10   #10
ilaria93S
Junior Member
 
Iscritto dal: Aug 2010
Messaggi: 11
Spoiler:
#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?
ilaria93S è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 13:13   #11
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Codice:
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
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 13:24   #12
ilaria93S
Junior Member
 
Iscritto dal: Aug 2010
Messaggi: 11
Quote:
Originariamente inviato da Teo@Unix Guarda i messaggi
Codice:
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...
ilaria93S è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 13:27   #13
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
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");
così il programma si ferma e capiamo cosa viene stampato.
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 13:44   #14
ilaria93S
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");
}
ilaria93S è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 14:08   #15
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
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?
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 14:10   #16
ilaria93S
Junior Member
 
Iscritto dal: Aug 2010
Messaggi: 11
Quote:
Originariamente inviato da Teo@Unix Guarda i messaggi
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 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 14:12   #17
ilaria93S
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);   
}
ilaria93S è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 14:14   #18
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Quote:
Originariamente inviato da ilaria93S Guarda i messaggi
windows
includi stdlib così:

Codice:
#include <stdlib.h>
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 14:18   #19
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Quote:
Originariamente inviato da ilaria93S Guarda i messaggi
quindi così va bene?
credo di si.
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 14:25   #20
ilaria93S
Junior Member
 
Iscritto dal: Aug 2010
Messaggi: 11
ok perfetto!! grazie mille!!
ilaria93S è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Resident Evil Veronica copia Resident Ev...
Vivo Watch GT 2 arriva in Italia: uno sm...
Lo smartphone di Trump Mobile è d...
The Social Reckoning, la storia di Faceb...
FASTCloud Open Source: un cloud sovrano ...
AMD non lascia spazio a Intel: la top 15...
iPhone 17 torna protagonista su Amazon: ...
PowerToys si aggiorna alla versione 0.10...
La nuova Audi Q7 proietta le frecce sull...
Framework blocca tutto: Laptop 13 Pro no...
SSD, Biwin investe oltre metà del...
Samsung Trend Radar 2026: smartphone e s...
Enel entra nella telefonia mobile: il vi...
Arriva il menu contestuale aggiornato di...
GM punta sulle batterie al sodio per lo ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:34.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v