Esercizio con funzioni c++

di Anonimizzato12966 il
25 risposte

25 Risposte - Pagina 2

  • Ho corretto così ..può andare?
    
    int Maggiore(int r,string *p)
    {
     int riga=0;
     int lung=(p)->length();
     for(int i=1;i<r;i++)
     {
      if ((p+i)->length()>lung)
       {
           lung=(p+i)->length();
           riga=i;
       }
     }
     return riga;
    }
    
    grazie davvero..: )
  • Sì, anche se si potrebbe "ottimizzare" se la for la scrivessi così ... ma non è importante
    
    for(int i=1;i<r;i++)
    {
      int lu=(p+i)->length();
      if (lu>lung)
       {
           lung=lu;
           riga=i;
       }
    }
    
  • Perfetto..grazie...il secondo punto l'ho fatto il procedimento è lo stesso...mentre per trovare la prima lettera maiuscola e le lettere uguali consecutive non mi viene come fare a scorrere nella stringa del vettore carattere per carattere :S perchè in questo modo con il puntatore al vettore non posso operare sui singoli caratteri giusto?
  • Si tratta solo di studiare un po' le caratteristiche della classe string ... che è quello che pensa di ottenere il docente con questi esercizi ...

    Puoi usare il metodo

    substr

    della string per estrarre una stringa (anche un carattere) da un'altra string. Ad esempio
    
    string prova = "ciao";
    cout << prova.substr(2, 1) << endl;
    
    oppure puoi utilizzare il metodo

    c_str()

    per accedere all'array della stringa con un classico puntatore. Ad esempio
    
    string prova = "ciao";
    const char *p = prova.c_str();
    
    cout << p[2] << endl;
    
    accedi al terzo carattere della stringa.
  • Quindi per utilizzare il secondo metodo devo fare il puntatore al puntatore che punta al vettore ..e poi devo incrementare entrambi i puntatori uno fino a che non finisce e la stringa , l' altro fino a che non finiscono le righe...
  • Sarebbe meglio il primo metodo ... comunque ...
  • Con il secondo metodo niente non ci riesco... poi ho fatto così per le maiuscole.(primo metodo) e insomma più o meno...
    int Maiusc(int r,string *p)
    {
    int riga;
    for (int i=0;i<r;i++)
    {
    string stringa=*(p+i);
    string car=stringa.substr(0,1);
    if ((car>="a")&&(car<="z"))
    {
     cout<<"minuscole"<<endl;
    }
    else
        {
          riga=i;
        }
    }
    return riga;
    }
    
    grazie
  • Quasi ... il ciclo con i accede alle stringhe, ne serve un altro per i singoli caratteri.
  • La traccia chiede che deve essere la prima lettera maiuscola, perciò non l' ho fatto il ciclo per i singoli caratteri..tanto mi serve solo il primo carattere
    mentre per trovare i caratteri consecutivi uguali si
    ho fatto così
    int LettUgual(int r,string *p)
    {
    int riga;
    int j=0;
    for (int i=0;i<r;i++) //righe
    {
    string stringa=*(p+i);
    const char *pp=stringa.c_str();
    do
    {
    if (*(pp+j)==*(pp+j+1))
    {
        riga=i;
        j++;
    }
    else
    {
        j++;
    }
    }
    while(*(pp+j)!='\0');
    j=0;
    }
    return riga;
    }
    solo che non stampa le prime righe ma le ultime...grazie =)
  • azzurra_13 ha scritto:


    la traccia chiede che deve essere la prima lettera maiuscola, perciò non l' ho fatto il ciclo per i singoli caratteri..tanto mi serve solo il primo carattere
    Ah ... ok
  • Grazie mille
Devi accedere o registrarti per scrivere nel forum
25 risposte