Ciao, ho dato un'occhiata (veloce) e c'erano degli errori di codifica (caratteri strani o sbagliati). Ti posto il codice privo di quegli errori, anche se ne restano molti altri riguardanti variabili non dichiarate.
#include <iostream>
using namespace std;
int main() {
char pippo[50];
char pluto[48];
int posizione,errore,nbyte,lstringa,risposta,rm,wwe;
char car;
for (rm=0;rm <50;rm++) { pippo[rm]=0; }
for (rm=0;rm <48;rm++) { pluto[rm]=0; }
rm=0; car=' '; wwe=0;
cout << " inserisi una stringa max 49 caratteri : \n";
cin.getline (pippo,50);
posizione = 0; errore=0; nbyte=0; lstringa=0; risposta=0;rm=0;
cin.clear();
menu:
cout << "\nmenu' prova funzioni assembler \n";
cout << "0) Fine Programma \n";
cout << "1) LenStringa\n";
cout << "2) Seachar\n";
cout << "3) Seastringa\n";
cout << "4) Parola\n";
cout << "5) ContaParole\n";
cout <<"6) LeftStringa\n";
cout <<"7) MidStringa\n";
cout <<"8) RightStringa\n";
cout <<"9) FixStringa\n";
cout << "10) chaleftstr\n";
cout << "11) charightstr\n";
cout << "12) chamidstr\n";
cout << "13) chafixstr\n";
cout << " scegli ? ";
cin >> risposta;
if ( risposta > 9) { goto menu; }
switch (risposta)
{
case 0:
{
nbyte=0;
lstringa=lenstringa(pippo,&nbyte);
cout << " dettaglio dimensioni delle varie routine\n";
cout << "1) cleareg = 13 byte\n";
cout << "2) lenstringa = " << nbyte << " byte \n";
nbyte=0;
lstringa=lwarf(pippo,&nbyte);
cout << "3) lwarf = " << nbyte << " byte\n";
nbyte=0;nbyte=seachar(pippo,car,&posizione,&errore);
cout << "4) seachar = " << nbyte << " byte\n";
nbyte=0; nbyte=seastringa(pippo,pluto,&posizione,&errore);
cout << "5) seastringa = " << nbyte << " byte\n";
nbyte=0; nbyte=numparola(pippo,&lstringa,&posizione,&errore);
cout << "6) numparola = " << nbyte << " byte\n";
errore=0;nbyte=leftstringa(pippo,pluto,6,&errore);
cout << "7) leftstringa = " << nbyte << " byte\n";
errore=0;nbyte=midstringa(pippo,pluto,6,&errore);
cout << "8) midstringa = " << nbyte << " byte\n";
errore=0; nbyte=rightstringa(pippo,pluto,6,&errore);
cout << "9) rightstringa = " << nbyte << " byte\n";
errore=0; nbyte=fixstringa(pippo,pluto,6,5,1,&errore);
cout << "10) fixstringa = " << nbyte << " byte\n";
break;
}
case 1:
{
lstringa=lenstringa(pippo,&rm);
cout << "la routine serve per calcolare di quanticaratteri e' composta la stringa\n";
cout << "la Stringa e' Lunga : " << lstringa << " caratteri \n";
cout << "la Routine occupa : " << rm << " spazi di memoria\n";
cout << "premi un tasto piu' invio per continuare ";
cin >> car;
break;
}
case 2:
{
cout << "inserisi un carattere da trovare : ";
cin >> car;
nbyte = seachar(pippo,car,&posizione,&errore);
cout << "\n Vediamo i valori restituiti dalla subroutine Assembler\n";
cout << "carattere cercato = " << car <<"\n";
cout << "posizione = "<< posizione << "\n";
cout << "errore =" << errore << "\n";
if (errore==0)
{
cout << "\nil carattere e stato trovato alla posizione " << posizione << "\n";
cout <<"la routine occupa " << nbyte << " byte di memoria \n";
}
if (errore==1)
{
cout << "\ncarattere non trovato\n";
errore=0;
}
break;
}
case 3:
{
cout << "\n inserisci una stringada cercare max 47 caratteri\n";
cin.getline (pluto,47);
nbyte=seastringa(pippo,pluto,&posizione,&errore);
if (errore==0)
{
cout << "\nla Stringa e' stata trovata a partire dalla posizione " << posizione << "\n";
cout <<"la routine occupa " << nbyte << " byte di memoria \n";
}
break;
}
case 4:
{
posizione=0; errore=0;
nbyte =parola(pippo,pluto,&posizione,&errore);
if (errore==0)
{
cout << "\nLa Stringa Prelevata e' : " << pluto << " la prossima posizione di partenza sarà : " << posizione << "\n";
}
break;
}
case 5:
{ // l'errore si presenta qui
rm=0;posizione=0;errore=0;nbyte=0;nbyte=numparola (pippo,&rm,&posizione,&nbyte);
if (errore==0)
{
cout << "\nNessun Errore Riscontrato\n";
cout << "nella stringa ci sono : " << rm << " Parole\n";
}
break;
}
case 6:
{
cout << "quanti caratteri vuoi prendere ? ";
cin >> rm;
errore=0;nbyte=leftstringa(pippo,pluto,rm,&errore);
if (errore==0)
{
cout << "da sinistra ho preso : " << pluto << " caratteri \n";
cout << " la routine occupa : " << nbyte << " byte\n";
}
break;
}
case 7:
{
cout << "quanti caratteri vuoi prendere ? ";
cin >> rm;
errore=0;nbyte=midstringa(pippo,pluto,rm,&errore);
if (errore==0)
{
cout << " dal centro ho preso : " << pluto << " caratteri \n";
cout << "la routine occupa : " << nbyte << " byte\n";
}
break;
}
case 8:
{
cout << "quanti caratteri vuoi prendere ? ";
cin >> rm;
errore=0;nbyte=rightstringa(pippo,pluto,rm,&errore);
if (errore==0)
{
cout << "da destra ho preso : " << pluto << " caratteri\n";
cout << "la routine occupa : " << nbyte << " byte\n";
}
break;
}
case 9:
{
cout << "inserisci la posizione di partenza : ";
cin >> posizione;
cout << "quanti caratteri vuoi prendere ? ";
cin >> rm;
cout << "1 sinistra verso destra 2 destra verso sinistra\n";
cout << " da dove vuoi prenderei caratteri ? ";
cin >> wwe;
errore=0;nbyte=fixstringa(pippo,pluto,posizione,rm,wwe,&errore);
if (errore==0)
{
cout << "dalla posizione " << posizione << "ho preso : " << pluto << " caratteri\n";
cout << "la routine occupa : " << nbyte << " byte\n";
}
break;
}
case 10:
{
cin.clear();
cout << "\ninserisci caratteriche modificano la stringa : ";
cin.getline(pluto,47);
nbyte=0;rm=lenstringa(pluto,&nbyte);errore=0;
cout << "la vecchia stringa era : \n" << pippo << "\n";
nbyte=chaleftstr(pippo,pluto,rm,&errore);
if (errore==0)
{
cout << "la stringa e stata modificata da " << rm << " caratteri\n";
cout << "ora la nuova stringa e': \n";
cout << pippo << "\n";
}
break;
}
case 11:
{
cin.clear();
cout << "\ninserisci caratteri che modificano la stringa : ";
cin >> pluto;
nbyte=0;rm=lenstringa(pluto,&nbyte);errore=0;
cout << "la vecchia stringa era : \n" << pippo << "\n";
nbyte=charightstr(pippo,pluto,rm,&errore);
if (errore==0)
{
cout << "la stringa e stata modificata da " << rm << " caratteri\n";
cout << "ora la nuova stringa e': \n" << pippo << "\n";
}
break;
}
case 12:
{
cin.clear();
cout << "inserisci caratteri chemodificano la stringa : ";
cin >> pluto;
nbyte=0;rm=lenstringa(pluto,&nbyte);
cout << "la vecchia stringa era : \n" << pippo << "\n";
nbyte=chamidstr(pippo,pluto,&nbyte);
if (errore==0)
{
cout << " la stringa e stata modificata da " << rm << " caratteri\n";
cout << " ora la nuova stringa e': \n" << pippo << "\n";
}
break;
}
case 13:
{
cin.clear();
cout << "inserisci caratteri che modificano la stringa : ";
cin >> pluto;
nbyte=0;rm=lenstringa(pippo,&nbyte); rm=rm-1;
cout << "\n inserisci un numero tra 0 e " << rm << "\n";
cin >> posizione;
cout << "verso 1 da sinistra a destra 2 viceversa ";
cin >> wwe;
cout << "la vecchia stringa era :\n"<<pippo<<"\n";
errore=0; nbyte=charfixstr(pippo,pluto,posizione,rm,wwe,errore);
if (errore==0)
{
cout << " la stringa e' statamodificata da "<< rm << " caratteri\n";
cout << "ora la nuova stringa e': \n"<<pippo<<"\n";
}
break;
}
default:
{
cout <<"\n opzione senza funzione di riferimento\n";
break;
}
}
//---------------------------------------------------------------------------------------------
if (risposta==0) { goto altro; }
switch (errore)
{
case 1:
{
cout << "\nErrore parametro 1 stringa mal definita\n";
break;
}
case 2:
{
cout << "\nErrore nel parametro 2 di lancio\n";
break;
}
case 3:
{
cout << "\n Errore nel parametro 3 di di lancio\n";
break;
}
case 4:
{
cout << "\nErrore nel parametro 4 di lancio\n ";
break;
}
case 5:
{
cout <<"\nErrore nel parametro 5 di lancio\n";
break;
}
case 6:
{
cout <<"\nDiscordanza tra 2 o piu' parametri numerici\n";
break;
}
case 7:
{
cout << "\nConflitto tra dimensioni di stringhe\n";
break;
}
case 8:
{
cout << "\nConflitto tra Dimensione stringa e uno o piu' parametri numerici\n";
break;
}
case 9:
cout<<"\nTentativo di sfondamento Stringa dovuto a calcoli numerici\n";
break;
case 10:
{
cout << "\n Non Ho Tempo da Perdere trovatelo tu l'errore!\n";
break;
}
default:
{
cout << "\nErrore ancora non Gestito\n";
break;
}
}
altro:
{
cout << "vuoi cambiare frase di test (1=si 2=no) ? ";
cin >> risposta;
if (risposta==1)
{
cout << " inserisi una stringa max 49 caratteri : \n";
cin.getline (pippo,50);
}
if (risposta < 1) { goto altro; }
if (risposta > 2) { goto altro; }
goto menu;
}
}
Altri errori che avevi fatto erano:
1) mancanza di punto-e-virgola alla fine di un'istruzione
2) due punti al posto di punto-e-virgola
3) cin << anzichè cin >>
Infine, se mi permetti, qualche consiglio:
1) una sola istruzione per riga, cioè niente
a=0; b=0; c=1;
2) niente graffe negli switch, cioe
case 4:
cout<<"Ciao";
break;
case...
3) niente goto
PS. goto???