Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703

    [c++]perchè il confronto di stringhe senza l'utilizzo di cstring

    bool termina(char a[5],char b[10])
    {

    for(int i=0;i<5;i++)
    {
    cin >> a[i];
    }

    for(int i=0;i<10;i++)
    {
    cin >> b[i];
    }

    for(int i=0;i<15;i++)
    {
    if(a[i] == b[i]== 0) cout << a[i]; //perchè non da errore?!
    }
    return 0;
    }

    ma perchè non da errore!? il confronto di stringhe si fa tramite la funzione strcmp di cstring se non sbaglio, la risposta è perchè questo in realtà è un array di caratteri?? e quindi non include /0
    mi basta un si o un no ^^ lol

  2. #2
    non sono la persona più qualificata qui per rispondere... ma scusa.. che errore dovrebbe darti?

    comunque in quell' if stai controllando se quei due caratteri sono diversi... (in maniera al quanto insolita) e se sono diversi stampi quello nella prima stringa.

    Tu prima controlli se a[i] è uguale a b[i]... e se questo è uguale a 0 (cioè falso) esegui la cout..... quindi in poche parole se i due caratteri sono diversi.... ma in ogni caso non c'è nessun errore...

    bye...

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465

    Re: [c++]perchè il confronto di stringhe senza l'utilizzo di cstring

    ma perchè non da errore!? il confronto di stringhe si fa tramite la funzione strcmp di cstring se non sbaglio
    Il confronto delle stringhe si fa - per comodità - con la strcmp, ma la puoi fare tranquillamente confrontando "carattere per carattere", che e' poi quello che fa la strcmp !

    Stai facendo un errore - questo sì - tentando di accedere ad elementi dei due vettori che non esistono ma puoi non avere errori evidenti perche' il programma va a leggere in memoria oltre gli array ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    uhm... non avevo visto che il terzo for arrivava fino al 15...

  5. #5
    a[i] == b[i] == 0

    Ricordati che l'espressione viene valutata da destra verso sinistra; quindi vale come:
    a[i] == (b[i] == 0)

    è vera quando a[i] è uguale ad uno e b[i] a zero.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da menphisx
    ... destra verso sinistra ...
    Sei sicuro?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    nel terzo ciclo infatti facendolo da 0 a 15 mi vengono stampati caratteri insensati, ho ovviato con una soluzione alquanto discutibile, anche se funzionante: messa una condizione di if restringendo il campo tramite il relativo codice della tabella ascii..tuttavia se potete suggerirmi una soluzione migliore..

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da cleaner
    nel terzo ciclo infatti facendolo da 0 a 15 mi vengono stampati caratteri insensati
    Ovviamente ...

    , ho ovviato con una soluzione alquanto discutibile, anche se funzionante: messa una condizione di if restringendo il campo tramite il relativo codice della tabella ascii..
    Non ho capito ... se mostri il codice ...

    tuttavia se potete suggerirmi una soluzione migliore..
    Per fare cosa, esattamente?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    codice:
    include <iostream>
    
    
    using namespace std;
    
    bool termina(char a[5],char b[10])
    {
    
        for(int i=0;i<5;i++)
         {
             cin >> a[i];
         }
    
         for(int i=0;i<10;i++)
         {
             cin >> b[i];
         }
    
         for(int i=0;i<15;i++)
        {
            if(a[i] == b[i]== 0)
            {
                if(a[i] >=97 && a[i] <=122 && b[i] >=97 && b[i] <=122) cout << a[i]; //soluzione ascii
            }
        }
        return 0;
    }

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Dovevi anche rispondere alla seconda domanda ... se non capisco cosa vorresti fare, a cosa mi serve vedere il codice?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.