Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di baicin
    Registrato dal
    Feb 2002
    Messaggi
    29

    c++ problema palindromi

    Come mai questo programma che dovrebbe scrivere la parola al contrario non funziona e il compilatore segnala un warning " not all paths return a value" nella funzoine palindro????


    #include<iostream.h>

    char palindro (char c[], int dim)
    {
    int i;
    for (i=dim;i>0;i--){
    return c[i];
    }}

    void main()
    {
    char t[]="giacomo";
    int dime=8;
    cout<<palindro(t,dime);

    }

    Grazie!
    BACCI

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798

    Re: c++ problema palindromi

    Originariamente inviato da baicin
    Come mai questo programma che dovrebbe scrivere la parola al contrario non funziona e il compilatore segnala un warning " not all paths return a value" nella funzoine palindro????


    #include<iostream.h>

    char palindro (char c[], int dim)
    {
    int i;
    for (i=dim;i>0;i--){
    return c[i];
    }}

    void main()
    {
    char t[]="giacomo";
    int dime=8;
    cout<<palindro(t,dime);

    }

    Grazie!
    Mi sembra chela tua funzione prende come argomento un array di caratteri poi al primo ciclo for ritorna l'ultimo carattere dell'array e termina la sua esecuzione. Però non vedo perchè ti dovrebbe dare errori in compilazione...

  3. #3
    Utente di HTML.it L'avatar di baicin
    Registrato dal
    Feb 2002
    Messaggi
    29

    Forse nn hai capito

    Quello che vorrei che facesse è che se in input c'è "Ciao" mi restituisca "oaiC" .DOve sta il problema???
    BACCI

  4. #4

    Re: Forse nn hai capito

    Originariamente inviato da baicin
    Quello che vorrei che facesse è che se in input c'è "Ciao" mi restituisca "oaiC" .DOve sta il problema???
    Il problema stà che la funzione restituisce l'ultimo elemento delarray di stringa, che poi non è neache una lettera della parola "giacomo".

    Perchè la tua funzione in teoria dovrebbe restituire il terminatore di stringa.

    Un aiuto può venirti da qui:

    codice:
    #include <iostream.h>
    
    void palindro(char c[], int dim){
     for (int i=dim-1;i>=0;i--)
      cout<<c[i];
    }
    
    void main(){
     char t[]="giacomo";
     int dime=8;
     palindro(t,dime);
    }
    Che come vedi non restituisce nulla, ma scrive solo il palincrono.

  5. #5
    Utente di HTML.it L'avatar di baicin
    Registrato dal
    Feb 2002
    Messaggi
    29

    ok

    penso di aver capito.Una delle cose che capisco poco ..(sono alle primissime armi) è l'intestazione void...quando devo metterla? quando la funzione nn restituisce nulla...pero in questo caso non restituisce la stringa???chi mi puo spiegare bene void rispetto alle altre intestazioni??
    grazie
    BACCI

  6. #6

    Risposta

    void non resistuisce nessun valore alla funzione:

    Tipo:

    void scrivi_ciao(){
    cout<<"ciao";
    }

    Che valore deve restituire? Nessuno xchè scrive solo la parola "ciao".

    Nel mio programmino la parola viene scritta dalla funzione, e non viene ritornata nella main.

    type funzione() // restituisce un valore di tipo "type".

  7. #7

    PS: palindromo

    PS: la funzione restituisce la parola al contrario che non si chiama palindromo

    Palindromo equivale a:

    otto anna radar

    Perchè lette al contrario hanno lo stesso significato.

    Scusa per questa svista

  8. #8
    Intanto non vedo traccia di palindromi.. Mi pare piu` che tu voglia solo invertire una stringa.

    Il warning e` dovuto a questo fatto (a parte che il codice e` sbagliato):

    codice:
    char palindro( char c[], int dim )
    {
        int i;
    
        for( i = dim; i > 0; i-- )
        {
            return c[ i ];
        }
    }
    Se per caso passi un valore di 'dim' minore o uguale a 0 (ed e` possibile perche` e` int), allora quella funzione - che deve ritornare un 'char' - non trova nessuna istruzione 'return', ed e` quello che il compilatore ti ha segnalato.

    La traduzione e` infatti: "Non tutti i percorsi restituiscono un valore."

    Ciao.

  9. #9
    char* palindro(char dest[], char src[], unsigned int dim) {

    int i;

    for (--dim, i = 0; dim <= 0; --dim, ++i)
    dest[i] = src[dim];

    return dest;

    }
    There are 10 kinds of people in the world: who knows the binary numeration and who not

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.