PDA

View Full Version : [C++] Invertire un Array di caratteri.


Xizor
19-02-2008, 18:06
Ciao a tutti, sto cercando di invertire i caratteri di un array di stringhe, che cioè all'inserimento di una parola come "mouse" ti dia come risultato "esuom". Potete darmi una mano? Grazie. :help:


#include<iostream.h>
#include<string.h>
#define lunghezza 5
int main() {
int i,j,a;
char stringa[20];
cout<<"Inserire una stringa di caratteri (al massimo di 20 caratteri, spazi inclusi): \n";
gets(stringa);
i=0;
while(stringa[i]<=stringa[lunghezza]){
stringa[i++];
}
j==i;
for(j=i;j!=0;j--){
}
cout<<"La stringa invertita e'-->"<<stringa[j]<<"\n";
system("pause");
return 0;
}

Xizor
22-02-2008, 17:58
Ci sono riuscito. Però qualcuno saprebbe dirmi come fare a visualizzare il risultato su un'unico cout, senza inserirlo in un ciclo for e dare come output una lettera x volta ? :confused:
Grazie. :)

//stringaInvertita.CCP

#include<iostream.h>
#include<string.h>

int main () {
int j,n,i;
char stringa[30];

cout<<"Inserisci una stringa di caratteri: \n";
cin>>stringa;
n=strlen(stringa);
j=n;
for(i=0;stringa[j-1]!=0;i++){
stringa[j--];
j-i;
cout<<"La stringa invertita e' "<<stringa[j]<<"\n";
}
system("pause");
return 0;
}

||ElChE||88
22-02-2008, 18:13
Mai programmato in c++ ma ci provo lo stesso... :fagiano:


#include <iostream>
#include <string>
using namespace std;

int main()
{
string stringa;

cout << "Inserisci una stringa di caratteri:" << endl;
cin >> stringa;
cout << "La stringa invertita e' ";

for(int i = stringa.length() - 1; i >= 0; i--)
{
cout << stringa[i];
}

cout << endl;
system("pause");
return 0;
}

Xizor
22-02-2008, 18:25
Grazie! :)

82ginopino
23-02-2008, 16:22
prova anke questo...:read:

#include <stdio.h>
#include <conio.h>

char y[20];
int n;

int lunghezza(char y[]){
int i;
for(i=0;y[i]!='\0';i++);
return(i);
}
void nuovo (char y[], int *x){
printf("Inserisci una stringa: ");
scanf("%s",y);
*x=lunghezza(y);
}
void inverti(char y[],int x){
int i;
char z;
for(i=0;i<(x/2);i++){
z=y[x-i-1];
y[x-i-1]=y[i];
y[i]=z;
}
printf("\nLa stringa invertita Š: %s\n",y);
getch();
}
void main(){
clrscr();
nuovo(y,&n);
inverti(y,n);
}

può andare?
L'unico limite è la dimensione fissa della stringa, ma si può risolvere con una lista!

Mafio
23-02-2008, 16:28
Mai programmato in c++ ma ci provo lo stesso... :fagiano:


#include <iostream>
#include <string>
using namespace std;

int main()
{
string stringa;

cout << "Inserisci una stringa di caratteri:" << endl;
cin >> stringa;
cout << "La stringa invertita e' ";

for(int i = stringa.length() - 1; i >= 0; i--)
{
cout << stringa[i];
}

cout << endl;
system("pause");
return 0;
}


il return non serve

||ElChE||88
23-02-2008, 19:39
perchè no? int main (void) ... tipo di ritorno è un int...:D
Compila anche senza il return, ma l'ho lasciato comunque per chiarezza... :fagiano:

||ElChE||88
23-02-2008, 19:47
secondo me se una funzione torna qualcosa è bene sempre specificare cosa torna, no?:D
Appunto, è quel che ho scritto sopra.

Mafio
23-02-2008, 21:45
perchè no? int main (void) ... tipo di ritorno è un int...:D

colpa mia, mi sono espresso male. :stordita:

perchè "int main" e non "void main"???

||ElChE||88
23-02-2008, 22:00
colpa mia, mi sono espresso male. :stordita:

perchè "int main" e non "void main"???
Perché è lo standard c++... :fagiano:

Mafio
23-02-2008, 22:02
Perché è lo standard c++... :fagiano:

asd...io ho sempre fatto void main() :D

||ElChE||88
23-02-2008, 22:39
asd...io ho sempre fatto void main() :D
Ma che compiler usi? :mbe:
gcc lo rifiuta...

Mafio
23-02-2008, 22:44
Ma che compiler usi? :mbe:
gcc lo rifiuta...

c builder 2006...a scuola ci fanno fare così. :stordita:

anzi a dirla proprio tutta facciamo c e c++ mischiati, per esempio tutto in c e poi usiamo cin e cout al posto di scanf e printf...mi chiedo ancora quale sia l'utilità di fare una cosa simile. :rolleyes:

^TiGeRShArK^
24-02-2008, 03:20
Ma che compiler usi? :mbe:
gcc lo rifiuta...
anche mingw se non sbaglio..
mmm... o forse da un warning..:mbe:
ora non ricordo perchè sono secoli che non scrivo codice c/c++.. :stordita:

^TiGeRShArK^
24-02-2008, 03:21
c builder 2006...a scuola ci fanno fare così. :stordita:

anzi a dirla proprio tutta facciamo c e c++ mischiati, per esempio tutto in c e poi usiamo cin e cout al posto di scanf e printf...mi chiedo ancora quale sia l'utilità di fare una cosa simile. :rolleyes:
semplice :O
vi confondono le idee in modo che non potrete mai riuscire ad impare la programmazione ad oggetti :D

:asd:

Mafio
24-02-2008, 08:59
semplice :O
vi confondono le idee in modo che non potrete mai riuscire ad impare la programmazione ad oggetti :D

:asd:

si ma per imparare la programmazione ad oggetti serve qualcuno di capace che te la insegni...quindi credo che a scuola non la impareremo mai. :stordita:

marko.fatto
24-02-2008, 09:37
anche mingw se non sbaglio..
mmm... o forse da un warning..:mbe:
ora non ricordo perchè sono secoli che non scrivo codice c/c++.. :stordita:

anche mingw non l'accetta :O