Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air combina diverse carte molto interessanti: un OLED PaperMatte da 12 pollici, un corpo sottile e una tastiera molto comoda. Durante la prova abbiamo apprezzato fluidità, audio e comfort visivo, mentre i test hanno chiarito pregi e qualche limite nelle prestazioni. L'autonomia ha convinto anche nell'uso intermittente; la scelta passa dalla compatibilità delle proprie app e dal valore del pacchetto con accessori, proposto a 749 euro
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
Debuttano ufficialmente i primi sistemi notebook basati su piattaforma NVIDIA RTX Spark, abbinati a Windows on ARM e pensati per l'intelligenza artificiale agentica. Architettura integrata tra CPU e GPU che condividono la memoria di sistema, capace di gestire in locale modelli molto grandi ma al contempo anche di spiccare con la grafica e l'elaborazione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Abbiamo provato Motorola razr fold, il pieghevole a libro con display interno LTPO da 8,09 pollici, Snapdragon 8 Gen 5 e batteria da 6000 mAh in 243 grammi. Pennino e custodia sopno già nella confezione, per un foldable che si caratterizza per il pannello luminoso, l'autonomia ottima per la categoria e le fotocamere coerenti e ben sfruttabili. Il listino è di 1999 euro, ma in vendita si trova già a molto meno
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-03-2005, 20:40   #1
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
[C++]Stringhe

Salve a tutti...
Ho un problema :
devo fare un programma che date 2 stringhe in input verifichi la presenza di una nell'altra. Per ora ho fatto:

Codice:
#include<iostream>
#include<cstdio>

using namespace std;

int main(void)
{
    char stringa1[10],stringa2[10];
    int i,lenght1,lenght2,j;
    bool lol=false;
    cout<<"Inserire la prima stringa ";
    fgets(stringa1,10,stdin);
    cout<<"Inserire la seconda stringa ";
    fgets(stringa2,10,stdin);
    lenght1=strlen(stringa1);
    lenght2=strlen(stringa2);
    if(lenght1>lenght2){
    for(i=0;i<lenght1;i++)
    {
                          for(j=0;j<lenght1;j++){
                          if(stringa2[j]==stringa1[i]) cout<<"Trovato un carattere comune"<<endl;
                          }
}
}
getchar();
}
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 21-03-2005, 21:54   #2
The3DProgrammer
Senior Member
 
Iscritto dal: May 2000
Messaggi: 1459
ciao, tipico problema di pattern matching. Io lo risolverei così (mi sembra sia corretto, cmq ora che posto lo ricontrollo ben indentato e casomai modifico )

ciauz

Codice:
#include<iostream>
#include<cstdio>

using namespace std;

bool stringaTrovata(char stringa1 [],char stringa2[],int startPos,int patternSize){

for(int i=0; i<patternSize; i++)
if(stringa1[startPos+i] != stringa2[i])
  return false;

return true;

}


int main(void)
{
    char stringa1[10],stringa2[10];
    int i,lenght1,lenght2,j;
    bool lol=false;
    cout<<"Inserire la prima stringa ";
   cin.getline(stringa1,10);

    cout<<"Inserire la seconda stringa ";

   cin.getline(stringa2,10);

    lenght1=strlen(stringa1);
    lenght2=strlen(stringa2);

    if(lenght1>=lenght2){

    for(i=0;i<=lenght1 - lenght2; i++)
if(stringaTrovata(stringa1,stringa2,i,lenght2))
cout <<"Stringa trovata in posizione " <<i <<endl;

}

getchar();
}

Ultima modifica di The3DProgrammer : 21-03-2005 alle 22:37.
The3DProgrammer è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2005, 10:26   #3
tglman
Senior Member
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
io consiglio di fare cosi:

Codice:
//ritorna la posizione di strin in str o -1 se non è presente
int instr(char * str, char * strin)
{
	int i,k,n;
	for( k=0,i=0;str[i]!='\0';i++)
	{
		if(str[i]==strin[k])k++;
		else 
		{
			if(k>0)
			{
				k=0;
				i=n;
			}
			n=i;
		}
		if(strin[k]=='\0')break;
	}
	if(str[i]!='\0')return i-k+1;
	else return -1;
}
int main()
{
	//leggo le stringe
	....
	if(strlen(striga1)>strlen(striga1))instr(stringa1,stringa2);//se stringa1 è più 
	//lunga di stringa2 non può gli puo stare dentro  
	else instr(stringa2,stringa1);//viceversa
//resto codice
....
}

Ultima modifica di tglman : 22-03-2005 alle 10:39.
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2005, 10:32   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Re: [C++]Stringhe

<OT> Questo non è corretto:
Codice:
    char stringa1[10];
    fgets(stringa1,10,stdin);
Aggiungi un
stringa1[sizeof(stringa1)-1] = '\0';
altrimenti sei a rischio di overflow nella strlen.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2005, 13:00   #5
MSciglio
Senior Member
 
Iscritto dal: Apr 2001
Città: Dundee, Scotland
Messaggi: 467
Invece di usare le stringhe C usa std::string e il metodo find.

Codice:
std::string stringa1;
std::string stringa2;

...

size_type idx=stringa1.find(stringa2.c_str());

if (idx!=npos)
{
   // stringa2 contenuta in stringa1
}
MSciglio è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2005, 20:37   #6
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
Grazie a tutti.
Se qualcuno ha voglia, mi sa dire perchè questo codice qua non si compila?
Codice:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define DIM 10
#define DIM2 4
//automa
using namespace std;
void caricamento(char[][],char[][],char[][],char[][]);
void simulazione(char[][],char[][],char[][],char[][]);
void uscite();

int main(void)
{
    char input[DIM][DIM2],stati[DIM][DIM2],matr_stato[DIM][DIM2],matr_uscite[DIM][DIM2];
    char risp;
    int scelta;
    do{
        cout<<"Programma automa "<<endl;
        cout<<"1-carticamento vettori e matrici. "<<endl;
        cout<<"2-simulaz."<<endl;
        cout<<"3-Uscite. "<<endl;
        cout<<"4-Esci. "<<endl;
        cin>>scelta;
        switch(scelta)
        {
                      case 1:caricamento(input,stati,matr_stato,matr_uscite);break;
                      case 2:simulazione(input,stati,matr_stato,matr_uscite);break;
                      //case 3:uscite();break;
                      case 4:exit(0);break;
                      }
        cout<<"Continuare? "<<endl;
        cin>>risp;
        }while(risp=='s');
        cin.get();
        }
//******************************************************************************

void caricamento(char input[][],char stati[][],char matr_stato[][],char matr_uscite[][])
{
     int i,j,lenght1,lenght2;
     bool trovato=false;
     //valori di input
     cout<<"Valori di input: "<<endl;
     cin.ignore();
     for(i=0;i<DIM;i++)
     {
                       do{
                             cout<<i<<" : ";
                             //do{
                             lenght1=strlen(input[i]);
                             cin.getline(input[i],DIM2);
                            // }while(lenght1>3);
                             
                             for(j=0;j<i;j++)
                             {
                             if(strcmp(input[i],input[j])==0)
                             {
                                                             trovato=true;
                                                             break;
                                                             }
                             }
                             }while(trovato==true);
     }
     //valori di stato
     cout<<"Valori di stato "<<endl;
     do{
                   for(i=0;i<DIM;i++)
                   {
                                     cout<<i<<" : ";
                                     //do{
                                     lenght2=strlen(input[i]);
                                     cin.getline(stati[i],DIM2);
                                    // }while(lenght2>3);                                     
                                     for(j=0;j<i;j++)
                                     {
                                     if(strcmp(stati[i],stati[j])==0)
                                     {
                                                                      trovato=true;
                                                                      break;
                                                                      }
                                     }
                   }
     }while(trovato==true);
}

//******************************************************************************

void simulazione(char input[][],char stati[][],char matr_stato[][],char matr_uscite[][])
{
     int i,j,pos_input,pos_stato;
     char _input,_stato;
     cout<<"Inserisci l'input: "<<endl;
     cin.getline(_input);
     /*ciclo per la ricerca dell'input
     inserito dall'utente nella matrice di char contenente
     tutti gli input inseriti precedentemente */
     for(i=0;i<DIM;i++)
     {
                       if(!strcmp(_input,input[i])) pos_input=i;
                       }
     cout<<"Posizione trovata: "<<pos_input<<endl;
     cout<<"Inserisci lo stato: "<<endl;
     cin.getline(_stato);
      /*ciclo per la ricerca dello
     inserito dall'utente nella matrice di char contenente
     tutti gli stati inseriti precedentemente */
     for(i=0;i<DIM;i++)
     {
                       if(!strcmp(_stato,stati[i])) pos_stato=i;
                       }
     cout<<"Posizione trovata: "<<pos_stato;
}
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 02:54   #7
Black imp
Senior Member
 
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
Re: Re: [C++]Stringhe

Quote:
Originariamente inviato da ilsensine
<OT> Questo non è corretto:
Codice:
    char stringa1[10];
    fgets(stringa1,10,stdin);
Aggiungi un
stringa1[sizeof(stringa1)-1] = '\0';
altrimenti sei a rischio di overflow nella strlen.

mmmh scusa non mi ricordo: so che il C iso lo mette lui automaticamente. e il C++ no?
Black imp è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2005, 07:50   #8
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Re: Re: Re: [C++]Stringhe

Quote:
Originariamente inviato da Black imp
mmmh scusa non mi ricordo: so che il C iso lo mette lui automaticamente. e il C++ no?
Hai ragione; credevo che fgets ragionasse come snprintf & co
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
OpenAI, un modello GPT-5.6 Sol ha usato ...
Google testa Ask Google Help: l'IA di Ge...
Apple aggiorna l'elenco dei prodotti obs...
Renault 5 si aggiorna anche in Italia: p...
L’IA fa il lavoro dei junior. Ma le impr...
Google riduce gli errori quantistici di ...
Xpeng Mona L05: un SUV da 4,87 metri con...
CERN e Mistral AI insieme per il primo L...
Le analisi approfondite sullo scudo term...
Chery Q arriva in Italia: 380 km, trazio...
Rocket Lab rinvia il primo lancio di Neu...
Tutti gli astronauti della missione spaz...
Agenti IA in azienda: il difficile non &...
Anthropic, New York chiede di rinviare l...
Meta aggiorna Edits con link audio, tend...
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: 02:12.


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