Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Abbiamo potuto mettere le mani in anteprima sul nuovo monitor MSI dedicato ai giocatori: un mostro che adotta un pannello QD-OLED da 26,5 pollici con risoluzione 2560 x 1440 pixel, frequenza di aggiornamento fino a 500 Hz e tempo di risposta di 0,03 ms GtG
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI aggiorna la sua linea di droni ultraleggeri con Neo 2, un quadricottero da 160 grammi che mantiene la compattezza del predecessore ma introduce una stabilizzazione meccanica a due assi, sensori omnidirezionali e un sistema LiDAR
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-05-2007, 13:36   #1
Viola86
Junior Member
 
Iscritto dal: May 2007
Messaggi: 9
[c++] Sostituire vocali in stringa

Salve a tutti, innanzitutto mi presento: sono Viola dalla provincia di Benevento, ho 20 anni e frequento il secondo anno di università.

Ho un problemino, anzi problemone, è ENORME! Dovrei consegnare un programma in c++ che data una stringa da input, sostituisca tutte le vocali con un asterisco (*).
Poi vabbè dovrei fare anche la documentazione e gli esempi di test, ma questi a programma fatto spero vengano da se.

Ho cercato molto su internet, programma per programma, thread per thread e non ho trovato nulla che facesse al caso mio.

So che è un programmino abbastanza semplice ed intuitivo e ho trovato molti programmini altrettanto semplici e fatti bene, completi di commenti.

Qualcuno di buon cuore non potrebbe aiutarmi in cambio della mia gratitudine eterna?
Grazie anche solo per aver letto il mio messaggio disperato.
Viola86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 14:30   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Viola86 Guarda i messaggi
Ho un problemino, anzi problemone, è ENORME! Dovrei consegnare un programma in c++ che data una stringa da input, sostituisca tutte le vocali con un asterisco (*).
Ha già provato ad "abbozzare" il programma (anche se non completo)?
Per la sostituzione si tratta solo di scansionare la stringa carattere per carattere, fare un test per stabilire se il carattere è una vocale e in tal caso scrivere in quella posizione un carattere.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 14:37   #3
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Ti fornisco una soluzione parziale: sta a te analizzarla e vedere come piazzarla all'interno di una funzioncina che venga chiamata dal main e faccia la sostituzione

Codice:
char * stringa;
stringa = (char*)malloc(...);
stringa = ...
int i=0;

while (*(stringa+i) != '\0')
{
    if ( *(stringa+i) =='a' || *(stringa+i)=='e') || ...
          *(stringa+i)='*';
	  i++;

}
printf("%s",stringa);
}
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 14:45   #4
Viola86
Junior Member
 
Iscritto dal: May 2007
Messaggi: 9
Quote:
Originariamente inviato da andbin Guarda i messaggi
Ha già provato ad "abbozzare" il programma (anche se non completo)?
Per la sostituzione si tratta solo di scansionare la stringa carattere per carattere, fare un test per stabilire se il carattere è una vocale e in tal caso scrivere in quella posizione un carattere.
Bah sono riuscita a scrivere giusto poche cose che son riuscita a carpire dalla rete...te le posto sperando possa aiutarmi. :\



const int MaxChars = 50;
bool IsVocale(char c);

int main()

{

char frase[MaxChars];
int len;

cout<<"Inserisci una frase (Max:"<<MaxChars<<" caratteri):";
gets(frase);

cout<<"Le vocali sono:";
len = strlen(frase);
Viola86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 15:07   #5
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Viola86 Guarda i messaggi
Bah sono riuscita a scrivere giusto poche cose che son riuscita a carpire dalla rete...te le posto sperando possa aiutarmi. :\



const int MaxChars = 50;
bool IsVocale(char c);

int main()

{

char frase[MaxChars];
int len;

cout<<"Inserisci una frase (Max:"<<MaxChars<<" caratteri):";
gets(frase);

cout<<"Le vocali sono:";
len = strlen(frase);
Ma visto che stiamo parlando di C++ perchè non usarlo fino in fondo?

Codice:
...
string frase;
getline(cin, frase);

int pos = -1;
while ((pos = frase.find("a")) != string::npos)
{
    frase.replace(pos,1,"*");
}
...
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 15:09   #6
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16211
Attenzione che gets è insicura, e strlen non conteggia il carattere nullo finale...

Usa cin.getline al posto di gets.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 15:11   #7
Viola86
Junior Member
 
Iscritto dal: May 2007
Messaggi: 9
Tomminno, perdonami, ma non ho ben capito cosa volevi intendere.

Il primo pezzo che hai postato è una bozza (fa proprio schifo ed è incompleta e probabilmente piena di errori formali) mentre il secondo è ciò che ha postato yorkeiser.

Non so proprio come unirle anche perchè a quanto detto da ziosilvio io ho usato qualcosa che non va.
Viola86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 15:13   #8
Viola86
Junior Member
 
Iscritto dal: May 2007
Messaggi: 9
Ah quasi dimenticavo...grazie infinite a tutti per le risposte!
Viola86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 15:19   #9
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Quote:
Originariamente inviato da Viola86 Guarda i messaggi
Tomminno, perdonami, ma non ho ben capito cosa volevi intendere.

Il primo pezzo che hai postato è una bozza (fa proprio schifo ed è incompleta e probabilmente piena di errori formali) mentre il secondo è ciò che ha postato yorkeiser.

Non so proprio come unirle anche perchè a quanto detto da ziosilvio io ho usato qualcosa che non va.
Cerca di leggere il codice e ti accorgi che sono due soluzioni diverse, anche se utilizzabili entrambe... ti cosiglio di darti una letta a un manuale (o quantomeno a un tutorial) sul c++ prima di scriverci programmi
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 15:21   #10
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Viola86 Guarda i messaggi
Tomminno, perdonami, ma non ho ben capito cosa volevi intendere.

Il primo pezzo che hai postato è una bozza (fa proprio schifo ed è incompleta e probabilmente piena di errori formali) mentre il secondo è ciò che ha postato yorkeiser.
La prima parte è il quote al tuo post
Sei te che hai scritto un codice incompleto e pieno di errori!

Per quanto riguarda il codice scritto da me e quello di yorkeiser c'è un pò di differenza, in quanto lui ha postato codice C, io invece ho usato le funzioni messe a disposizione dal C++.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 15:23   #11
Viola86
Junior Member
 
Iscritto dal: May 2007
Messaggi: 9
Quote:
Originariamente inviato da yorkeiser Guarda i messaggi
Cerca di leggere il codice e ti accorgi che sono due soluzioni diverse, anche se utilizzabili entrambe... ti cosiglio di darti una letta a un manuale (o quantomeno a un tutorial) sul c++ prima di scriverci programmi
Lo so, e già posseggo il libro:
C++ Fondamenti di programmazione di Deitel&Deitel della Apogeo, il nuovo, la ristampa con la copertina con le formichine. Mi è stato detto che era abbastanza buono.

Cmq delle vostre risposte sono rimasta un po incasinata...contando che io non è che ne capisco più di tanto e quel poco che so è perchè un amico di corso mi ha aiutato...
Viola86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 15:26   #12
Viola86
Junior Member
 
Iscritto dal: May 2007
Messaggi: 9
Quote:
Originariamente inviato da tomminno Guarda i messaggi
La prima parte è il quote al tuo post
Sei te che hai scritto un codice incompleto e pieno di errori!

Per quanto riguarda il codice scritto da me e quello di yorkeiser c'è un pò di differenza, in quanto lui ha postato codice C, io invece ho usato le funzioni messe a disposizione dal C++.


Per carità non mi hai capita! Il primo pezzo è il mio! Quello che fa più schifo! Scusa per essere stata poco chiara. Cmq grazie ancora, ma come faccio a legare le due cose e a pulirle dagli errori per presentare un programma funzionante?

Cmq scusami ancora e grazie ancora a tutti per le risposte!
Viola86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 15:35   #13
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Non devi legarle, devi scegliere una soluzione o l'altra. Ti consiglio di scegliere la soluzione di tomminno che è un po' più semplice da interpretare, però prenditi un attimo per leggerti sul manuale almeno cosa fanno le funzioni che lui ha utilizzato altrimenti non impari davvero nulla
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 16:06   #14
Viola86
Junior Member
 
Iscritto dal: May 2007
Messaggi: 9
Quote:
Originariamente inviato da yorkeiser Guarda i messaggi
Non devi legarle, devi scegliere una soluzione o l'altra. Ti consiglio di scegliere la soluzione di tomminno che è un po' più semplice da interpretare, però prenditi un attimo per leggerti sul manuale almeno cosa fanno le funzioni che lui ha utilizzato altrimenti non impari davvero nulla
Guarda il manuale già ho iniziato a leggerlo da un pò e un pò sto capendo, ma la prima cosa che devo fare è consegnare il programma al prof via mail, poi studiarmi la parte per l'orale, praticamente studiarmi il mio programma per poi commentarglielo all'orale.

Per quanto riguarda quegli stralci di programma: quello che ho scritto io lo capisco ma probabilmente è pieno di errori e nn so dove mettere mano, mentre il pezzo che ha postato tommi non so come unirlo al mio pezzo e come far terminare il programma.

Sicuramente sono stata poco chiara. :\
Viola86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 18:51   #15
Viola86
Junior Member
 
Iscritto dal: May 2007
Messaggi: 9
uppino plz
Viola86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 20:46   #16
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quando i cavalli di razza titubano, tocca agli asini salire in cattedra. Eccomi .

Due premesse. La prima è che il Deitel rispetta la legge dei due volumi. Questa legge stabilisce che se un libro è diviso in due volumi allora tutto quello che ti serve è nel volume che non hai.

La seconda è che il Deitel tratta le stringhe nelle "tecniche avanzate di programmazione". Se in C++ le stringhe sono "tecniche avanzate" immagino che la concorrenza si studi alla NASA.

E un avvertimento. L'unica ragione per cui mi pregio di mostrarti l'intero codice è che essendo io un totale asino di programmazione C++ la mera copiatura di quanto scritto ti garantirebbe non solo il generale dileggio ma credo anche una punizione corporale.

Trovo comunque divertente l'idea di espormi al pubblico ludibrio.

Codice:
#include <string>
#include <iostream>

/*
Ecco cosa fa il programma.

1. chiede all'utente di inserire una stringa
2. data la stringa inserita
	2.1 per ogni suo carattere di indice i, con i da 0 al numero di caratteri
		2.1.1 se il carattere è una vocale
			2.1.1.1 rimpiazza il carattere in posizione i nella stringa con "*"
3. stampa la stringa
*/

using namespace std;

/** Questo l'ho copiato da te :D */
bool isVocale(char);

/** Questo è una delle 175 forme del main in C++. */
int main()
{

	/** << in danimarca significa output. Nel resto del mondo non vuol dire un
	accidenti. Per due talleri, indovinate di che nazionalità è l'inventore di
	C++ */
	cout << "Inserire una linea di testo e premere invio" << endl;

	/** Potenzinterra, non ho mai capito se questa è una dichiarazione con
	allocazione, una dichiarazione con assegnamento o una clamorosa svista */
	string testo;

	/** Questo è sicuramente sbagliato. Cercate di comprendermi. Ho visto
	"getline", mi son detto sta a vedere che prende una linea di testo, e l'ho
	buttato dentro. */
	getline(cin, testo);

	/** Questa è la meraviglia. size_t l'ho usato alla vaccinara. Va bene int,
	char, byte, short, ho provato con float e mi da un warning! manco errore.*/
	for(size_t i = 0; i < testo.length(); i++) {

		/** Uso at perchè controlla l'indice di accesso. Lo so, è un'eresia:
		vuoi mettere un bel buffer overflow...*/
		char carattere = testo.at(i);

		/** Ammetto di essere stato eccessivamente chiaro. Avrei dovuto chiamare
		la funzione ivc o io, sovrascrivere l'operatore >I< e usare almeno tre
		puntatori, uno per valore, uno per riferimento e uno per Ganesh. */
		if(isVocale(carattere)) {

			/** Avrei anche usato un carattere al posto della stringa ma
			mi da un errore (const qualcosa). Posso usare un float per
			rappresentare un indice ma non posso usare un char per rappresentare
			un carattere. Sarà per questo che è "++"? */
			testo.replace(i, 1, "*");
		}
	}

	/** Questo o invia la stringa allo standard output o fa esplodere il
	pianeta. Io vi ho avvertito. */
	cout << testo << endl;

	/** Questi due li ha messi dev-cpp e per l'amor del cielo non voglio neanche
	sapere cosa siano. */
    system("PAUSE");
    return EXIT_SUCCESS;
}

/** Qui siamo ben oltre la mia capacità di comprensione. */
bool isVocale(char c) {
	return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}
Signori, buon divertimento .
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 22:10   #17
Viola86
Junior Member
 
Iscritto dal: May 2007
Messaggi: 9
Oddio non avrei mai immaginato di riuscire a vedere il programma che mi serviva tutto bello scritto, ero veramente disperata.
Non sai adesso quanto sono contenta e quanto ti ringrazio!Come ringrazio tutti gli altri che si sono attivati nell'aiutarmi!

Cmq il programma l'ho testato e sembra funzionare alla perfezione!Perchè dici che non sei bravo??
I commenti sono stupendi! :P

Cmq grazie ancora di tutto, ora me lo ricontrollo fino alla nausea!E se c'è qualcosa che posso fare per te, anche se dubito fortemente, ti prego fammelo sapere!
Grazie ancora a tutti, ovviamente vi tengo aggiornati!
Viola86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 23:38   #18
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
[code]
/** Questo è sicuramente sbagliato. Cercate di comprendermi. Ho visto
"getline", mi son detto sta a vedere che prende una linea di testo, e l'ho
buttato dentro. */
getline(cin, testo);

Visto il tono scherzoso dei commenti non sono riuscito a capire questo, comunque se fosse serio, quella "getline" esiste ed è una funzione globale di string, evita di usare le stringe C per la lettura da stream, non capisco perchè dovrebbe essere sicuramente sbagliato.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2007, 18:31   #19
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Tutti i commenti erano sull'allegro andante. Quello compreso. Vale come "è troppo facile per essere anche giusto".
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
L'IA "seria" di Appian è diversa: inserita nei processi e rispetta dati e persone L'IA "seria" di Appian è divers...
Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
AWS Transform si evolve: agenti IA per m...
I social network hanno stancato gli ital...
Star Citizen supera i 900 milioni di dol...
Netflix ha eliminato la funzione Cast pe...
L'IA è una bolla e scoppier&agrav...
Un rapporto collega i data center di Ama...
Troppa concorrenza per Cherry (quella de...
Entro il 2035 la Cina vuole costruire de...
Tineco in super sconto: ultimo giorno di...
La Cina creerà una costellazione ...
I veicoli elettrici emettono radiazioni ...
Stai per acquistare una PS5? Attento al ...
iPhone 17 Pro Max finalmente disponibile...
Apple, Sony, Bose, Beats, Sennheiser, CM...
Arriva il Raspberry Pi 5 da 1 GB, ma por...
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: 05:52.


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