Oppure

Loading
27/02/10 11:16
Alfonso
ti stimo nessuno!:)
aaa
27/02/10 11:21
Postato originariamente da Poggi Marco:

@nessuno: ti ripeto che l' esercizio chiede di invertire l' array.

mistervox ha scritto:

"(cioè: nome*cognome) ... (cioè: cognome*nome)"


Non mi pare ci siano dubbi ...

Una soluzione giusta è quella di invertire l' intero array. Successivamente, teamite il carattere separatore (*), si invertono le due sottostringhe.


Non credo proprio ...
27/02/10 11:44
Poggi Marco
Ammetto che è un sistema macchinoso, ma funzionante. La funzione printf() stampa a video la stringha in modo corretto, ma non inverte l' array.
aaa
27/02/10 11:46
Postato originariamente da Poggi Marco:

Ammetto che è un sistema macchinoso, ma funzionante. La funzione printf() stampa a video la stringha in modo corretto, ma non inverte l' array.


Ma NON si deve invertire l'arry nel senso che pensi tu (carattere per carattere) ...

Quello che si intende, quando dice "invertire", è che parli delle parti (nome cognome) che compongono l'array ...

In ogni caso, suggerirei di attendere l'opinione di mistervox, che è poi il vero interessato dato che ha aperto lui il thread ...
Ultima modifica effettuata da 27/02/10 12:04
27/02/10 11:48
Postato originariamente da Alfonso:

ti stimo nessuno!:)


Grazie, ma per così poco ...
27/02/10 12:21
Poggi Marco
Postato originariamente da nessuno:

Postato originariamente da Poggi Marco:

Ammetto che è un sistema macchinoso, ma funzionante. La funzione printf() stampa a video la stringha in modo corretto, ma non inverte l' array.


Ma NON si deve invertire l'arry nel senso che pensi tu (carattere per carattere) ...

Quello che si intende, quando dice "invertire", è che parli delle parti (nome cognome) che compongono l'array ...

In ogni caso, suggerirei di attendere l'opinione di mistervox, che è poi il vero interessato dato che ha aperto lui il thread ...


Nel topic di mistervox, io ho capito che l' esercizio chieda di lavorare sull' array.

In ogni caso quale è la difficoltà?
aaa
27/02/10 12:33
Postato originariamente da Poggi Marco:
Nel topic di mistervox, io ho capito che l' esercizio chieda di lavorare sull' array.


Potrebbe essere ... in questo caso attendiamo mistervox e modificheremo il codice secondo la tua idea ... anzi ... proponi questo tipo di codice, così mistervox potrà scegliere ....

In ogni caso quale è la difficoltà?


Non so ... qual è?
Ultima modifica effettuata da 27/02/10 12:43
27/02/10 12:52
Poggi Marco
Scusa, mi sono espresso male.
Intendevo sapere quale fossero i tuoi dubbi a riguardo alla mia idea.

Ecco il programma:

#include <iostream>

using namespace std;

void InvertiStringa(char *, int, int);
bool CercaCarattere(const char *, char, int &);

int main()
{
    char fr[80]="", nome[80]="", cognome[80]="";
    char divisore='*';
    cout<<"Inserire il nome ";
    cin.getline(nome, 79);
    cout<<"Inserire il cognome ";
    cin.getline(cognome, 79);
    strcpy(fr, nome);
    strcat(fr, "*");
    strcat(fr, cognome);
    cout<<"\n\nFormato originale: "<<fr<<endl;
    InvertiStringa(fr, 0, strlen(fr)-1);
    int CarattereDivisore=0;
    if (CercaCarattere(fr, divisore, CarattereDivisore))
    {
         InvertiStringa(fr, 0, CarattereDivisore-1); // inverte il cognome
         InvertiStringa(fr, CarattereDivisore+1, strlen(fr)-1); // inverte il nome
    }
    else
    {
         cout<<"\nCarattere divisore non trovato!\n";
         InvertiStringa(fr, 0, strlen(fr)-1); // riporta la stringa allo stato originale
    }
    cout<<"\n\Formato invertito: "<<fr<<endl;
    fflush(stdin);
    getchar();
    return 0;
}

void InvertiStringa(char *fr, int inizio, int fine)
{
    char t=' ';
    while (inizio<fine)
    {
        t=fr[inizio];
        fr[inizio]=fr[fine];
        fr[fine]=t;
        inizio++;
        fine--;
    }
}


bool CercaCarattere(const char *fr, char c, int &x)
{
    x=0;
    while (fr[x++]!=NULL) if (fr[x]==c) return true; // carattere trovato
    return false; // carattere non trovato
}


Ultima modifica effettuata da Poggi Marco 27/02/10 13:02
aaa