Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-10-2006, 17:34   #1
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
C++ valore di ritorno di una funzione e ricerca testo

Salve a tutti, i miei problemi con il c++ non finiscono mai, effettivamente sono a dir poco scarso.
Data la mia ignoranza vorrei chiedervi questo. Io in java tranquillamente definivo una classe ed una funzione di un altra classe che mi ritornava un array della classe precedente cioè:

Definisco la classe PrimoPiatto

e potevo definire una funzione di un'altra classe del tipo:

PrimoPiatto[] menuPrimi(String nome){....}

In C++ ho provato a fare una cosa simile e mi sono preso una marea di insulti io però ho la necessità di tornare un array o qualcosa di simile, come posso fare?
Un'altra domanda, io dovrei cercare all'interno di una stringa di testo una frase, cioè:

string testo_vario="Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura che la dritta via era smarrita ....."

devo cercare
string daCercare="di nostra vita". Cercare un token lo so fare ed è una fesseria, per cercare tutta la frase devo implementare io di sana pianta una cosa simile controllando i token a gruppi a gruppi con cicli e controcicli o c'è qualche speranza per semplificarmi la vita?
Grazie, ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 14-10-2006, 17:45   #2
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
Quote:
Originariamente inviato da Abdujaparov
Io in java tranquillamente definivo una classe ed una funzione di un altra classe che mi ritornava un array della classe precedente cioè:
Definisco la classe PrimoPiatto
e potevo definire una funzione di un'altra classe del tipo:
PrimoPiatto[] menuPrimi(String nome){....}

In C++ ho provato a fare una cosa simile e mi sono preso una marea di insulti io però ho la necessità di tornare un array o qualcosa di simile, come posso fare?
devi ritornare l'indirizzo del primo elemento: non PrimoPiatto[] ma PrimoPiatto*
Quote:
Originariamente inviato da Abdujaparov
Un'altra domanda, io dovrei cercare all'interno di una stringa di testo una frase, cioè:
string testo_vario="Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura che la dritta via era smarrita ....."
devo cercare
string daCercare="di nostra vita".
se vuoi puoi crearti la funzione da solo ma credo sia abbastanza difficile, quindi ti conviene usare le regular expression.
ci sono decine di librerie che aggiungono le regular expression al c++ su google, purtroppo non so consigliarti la migliore.

Ultima modifica di AngeL) : 14-10-2006 alle 17:51.
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 14-10-2006, 19:02   #3
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Grazie mille, tornando PrimoPiatto* però perdo l'indicazione della dimensione dell'array. Per avere anche la dimensione dovrei creare un nuovo oggetto contenente il puntatore al primo elemento e la dimensione dell'array?
Oppure potrei passare un vettore o una lista? Con vettore e lista dovrei ritornare il puntatore o posso direttamente ritornare lista o vettore?
Grazie, ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 14-10-2006, 19:18   #4
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
Quote:
Originariamente inviato da Abdujaparov
Grazie mille, tornando PrimoPiatto* però perdo l'indicazione della dimensione dell'array. Per avere anche la dimensione dovrei creare un nuovo oggetto contenente il puntatore al primo elemento e la dimensione dell'array?
Oppure potrei passare un vettore o una lista? Con vettore e lista dovrei ritornare il puntatore o posso direttamente ritornare lista o vettore?
Grazie, ciao ciao.
nono non perdi l'indicazione della dimensione: il valore di return della funzione è un array (anche se non sembra), quindi puoi tranquillamente mettere il valore di ritorno della funzione in una variabile e poi accedere agli elementi tramite [] : variabile[0], variabile[1] ...
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2006, 08:52   #5
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Cioè ricapitolando:
io potrei dichiarare una funzione così:

PrimoPiatto* menuPrimi(....){

return menu[0];
}

e poi cont


PrimoPiatto* menu=menuPrimi(....);

for(int i=0; i<menu.lenght();i++)
......

Quindi potrei fare in questo modo senza problemi?
Grazie, ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2006, 12:20   #6
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Abdujaparov
Cioè ricapitolando:
io potrei dichiarare una funzione così:

PrimoPiatto* menuPrimi(....){

return menu[0];
}

e poi cont


PrimoPiatto* menu=menuPrimi(....);

for(int i=0; i<menu.lenght();i++)
......

Quindi potrei fare in questo modo senza problemi?
Grazie, ciao ciao.

In C++ gli array non sono classi. Non hai il metodo lenght che ti indica quanti elementi sono presenti!
A seconda di quello che ci devi fare potresti usare vector, list, queue, map, hash_map...
Io farei così:
Codice:
vector<PrimoPiatto>& menuPrimi(....){

return menu;//Con menu dichiarato come "vector<PrimoPiatto> menu;"
}

vector<PrimoPiatto> & menu=menuPrimi(....);

for(int i=0; i<menu.size();i++)
......
//Oppure, meglio, con gli iteratori
vector<PrimoPiatto>::iterator it;
for(it = menu.begin(); it != menu.end(); it++)
...

Ultima modifica di tomminno : 15-10-2006 alle 12:28.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2006, 13:47   #7
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
Quote:
Originariamente inviato da Abdujaparov
Cioè ricapitolando:
io potrei dichiarare una funzione così:

PrimoPiatto* menuPrimi(....){

return menu[0];
}

e poi cont


PrimoPiatto* menu=menuPrimi(....);

for(int i=0; i<menu.lenght();i++)
......

Quindi potrei fare in questo modo senza problemi?
Grazie, ciao ciao.
no
  1. se la funzione menuPrimi ritorna un array di qualcosa, devi mettere come valore di ritorno il tipo dell'array piu' "*" (ad esempio int* nomefunzione...): se menu è un array di int devi scrivere int* menuPrimi, non PrimoPiatto* menuPrimi, che non c'entra niente.
  2. ritornando menu[0] ritorni solo quell'elemento e non lintero array: devi fare return menu;
  3. non puoi scrivere PrimoPiatto menu=menuPrimi() perchè menuPrimi restituisce un array, non un oggetto primopiatto; se invece menu (qello restituito da menuPrimi) è una variabile contenuta nella classe PrimoPiatto, devi scrivere
    Codice:
    PrimoPiatto menu;
    menu.primi=menuPrimi();
  4. come già detto da tomminno, gli array in c++ non hanno la funzione lenght, ma se vuoi puoi farla tu:
    Codice:
    //considerando menu come un array di int:
    int lenght(int* array_di_int)
    {
    for(int i=0;array_di_int[i]!=0;i++){}
    return i;//ritorna la lunghezza di array
    }
    //per usarla, pero' non dovrai scrivere nomearray.lenght, ma lenght(nomearray)
se vuoi che ti aiuti piu precisamente dovresti spiegarmi +o- cosa vorresti fare perchè non si capisce bene
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2006, 19:05   #8
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Spero di essere chiaro e lineare.
Voglio tornare un array di oggetti PrimoPiatto.
La funzione prende determinati parametri e ritorna un array di oggetti PrimoPiatto.
L'oggetto PrimoPiatto l'ho definito io per gli affari miei.
E' una cosa piuttosto semplice, spero.
Grazie per la pazienza, ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2006, 21:13   #9
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
Quote:
Originariamente inviato da Abdujaparov
Spero di essere chiaro e lineare.
Voglio tornare un array di oggetti PrimoPiatto.
La funzione prende determinati parametri e ritorna un array di oggetti PrimoPiatto.
L'oggetto PrimoPiatto l'ho definito io per gli affari miei.
E' una cosa piuttosto semplice, spero.
Grazie per la pazienza, ciao ciao.
questo dovrebbe funzionare:
Codice:
PrimoPiatto* funzione(/*argomenti*/)
{
PrimoPiatto array[10];
//fai cio' che vuoi
return array;
}
prova e fammi sapere
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2006, 02:42   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ma la libreria standard il C++ che ce l'ha a fare ?
Esistono i vector...

vector <PrimiPiatti> menuPrimi(...)

In alternativa puoi comunque usare l'allocazione dinamica:

void menuPrimi(/*parametri*/, PrimiPiatti *&menu, int *dimensione)
{
.....
dimensione = XXXX;
vettore = new PrimiPiatti[dimensione];
.....
}

La richiami così:

PrimiPiatti *primi, dimensione;
menuPrimi(primi, dimensione);

Ovviamente poi dovrà essere deallocata:

delete[] primi;
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2006, 02:48   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da AngeL)
questo dovrebbe funzionare:
Quello che viene ritornato è un puntatore a dello spazio non allocato...lo spazio riservato per array viene deallocato automaticamente all fine del metodo... E' un grave errore
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2006, 07:28   #12
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Grazie a tutti, più tardi provo ma credo che alla fine mi orienterò su un array o su una lista, dopo aver rivisto attentamente la funzione che sto scrivendo.
Grazie a tutti, ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2006, 08:36   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Abdujaparov
per cercare tutta la frase devo implementare io di sana pianta una cosa simile controllando i token a gruppi a gruppi con cicli e controcicli o c'è qualche speranza per semplificarmi la vita?
Codice:
string testo(".........");
string s("stringa da cercare");
string::size_type pos = 0;

while((pos = testo.find(s, pos)) != string::npos)
{
   //fai qualcosa sapendo che all'indice pos c'è una stringa valida
   ...
   pos++; //per non ritrovare la stringa nella stessa posizione
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 18:55   #14
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Salve a tutti ho applicato i vostri consigli però non sono riuscito a risolvere nulla cioè:

list<Pizzino>& PizzinoCtrl::allPizzini(){
return provenzano;
}


La richiamo così:

list<Pizzino> &eccoli=motore.allPizzini();

ed il risultato è questo:
c:\documents and settings\angelo\documenti\visual studio 2005\projects\quarto\postit\postit.cpp(184) : error C2361: initialization of 'eccoli' is skipped by 'default' label
c:\documents and settings\angelo\documenti\visual studio 2005\projects\quarto\postit\postit.cpp(175) : see declaration of 'eccoli'


Come posso risolvere?
Grazie, ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 19:53   #15
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Cionci non capisco come funziona il pezzo che mi hai scritto.
Io devo settare a true un booleano se la la stringa da cercare è nel testo.
Non capisco cosa fa quel ciclo, puoi spiegarmelo?
Grazie, ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2006, 00:07   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Abdujaparov
ed il risultato è questo:
c:\documents and settings\angelo\documenti\visual studio 2005\projects\quarto\postit\postit.cpp(184) : error C2361: initialization of 'eccoli' is skipped by 'default' label
c:\documents and settings\angelo\documenti\visual studio 2005\projects\quarto\postit\postit.cpp(175) : see declaration of 'eccoli'
Posta il codice dentro cui hai dichiarato eccoli...sembra che tu l'abbia dichiarato in un ramo di uno switch e non si può...

Per il mio codice: semplicemente cerca una stringa fino a quando il valore ritornato da testo.find è diverso da string::npos (che è il valore ritornato quando non trova più sottostringhe uguali a quella cercata)...

Se devi semplicemente settare un booleano se la stringa trovata è nel testo allora fai così:

boolean trovato = (testo.find(s, 0) != string::npos);
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2006, 09:17   #17
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Grazie mille, c'era uno switch in mezzo e non me ne rendevo conto.
Ho fatto in questo modo:
vector<Pizzino> PizzinoCtrl:izziniConTesto(string testo){
vector<Pizzino> speriamo;
//FA QUALCOSA CON LA RICERCA TESTO CHE STO PROVANDO GRAZIE ATE
return speriamo;
}


Dentro un'altra classe:
vector<Pizzino> trovati;//dichiarato fuori dallo switch

//invoco il metodo in questo modo
trovati=motore.pizziniConTesto("ehehe");

Ho tolto il riferimento perchè ritorno un vettore che è una variabile locale, ho fatto bene?
Ora provo il metodo per la ricerca del testo grazie infinite.
Ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2006, 11:13   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Hai fatto bene, in questo modo usa l'operatore di assegnazione e dovrebbe andare bene...
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
La capsula SpaceX Dragon CRS-33 ha acces...
La NASA è sempre più vicin...
Crisi delle memorie: ASUS torna al passa...
Le console next-generation potrebbero es...
Gemini cresce ancora: la quota di mercat...
Samsung sfida TSMC: la capacità produtti...
Iliad alza il prezzo della fibra ottica ...
Il prossimo low cost di POCO sarà il più...
The Elder Scrolls VI: ecco le ultime sul...
Ecco i saldi di fine anno Amazon, 34 off...
iPhone Fold: scorte limitate al lancio m...
OpenAI porterà la pubblicità in ChatGPT ...
TSMC aumenterà ancora i prezzi: nel 2026...
Marvel pubblica anche il secondo teaser ...
Nuovo accordo tra xAI e il Pentagono: l'...
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: 07:58.


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