Maaso Postado Setembro 1, 2015 Denunciar Share Postado Setembro 1, 2015 (editado) preciso fazer uma matriz 5x1 de caracteres ao inverso porem não estou conseguindo. Sou novo nesse assunto e preciso da ajuda de vocês. :/Por exemplo : Matriz normal:Chocolate éMuitoBomMatriz inversa:é etalocohCotiuMmoB #include<stdio.h> #include<locale.h> #include<string.h> main() { char matriz[5][100],n=1; int x; setlocale(LC_ALL,"Portuguese"); for(x=0;x<5;x++) { printf("Informe o %iº elemento da matriz:",n++); gets(matriz[x]); } // for(x=0;x<5;x++) // { // printf("%s",matriz[x]); // printf("\n"); // } for(x=strlen(matriz);x>0;x--){ printf("%s",matriz[x]); } }Erro: [Error] cannot convert 'char (*)[100]' to 'const char*' for argument '1' to 'size_t strlen(const char*)' Editado Setembro 1, 2015 por Maaso Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Setembro 1, 2015 Denunciar Share Postado Setembro 1, 2015 para fazer isso você tem que imprimir letra por letra ao contrario e usando un for duplo. você estava imprimindo a frase completa ela nunca vai dar a volta usando printf("%s",matriz[x]);O %s imprime ele normalmente nesse sentido ->, fazer que o for vaia al contrario não adianta, você só vai conseguir imprimir a ultima palavra primeiro, depois a antipenultuma e assim sucessivamente até chegar na primeira frase. você entraria:Chocolate éMuitoBome sairia:BomMuitoChocolate é A forma mais correta de fazer isso é:#include<stdio.h> #include<locale.h> #include<string.h> #define N_MAX_FRASES 5 //numero maximo de frases int main() { char matriz[N_MAX_FRASES][100], n = 1; int x, i; int ch; setlocale ( LC_ALL, "Portuguese" ); for ( x = 0; x < N_MAX_FRASES; x++ ) { printf ( "Informe o %iº elemento da matriz:", n++ ); scanf( "%99[^\n]", matriz[x] ); //le todos os chars que vc quiser, porem não permite que entre mais de 100 na matriz(99+'\n'=100). O resto fica no buffer e é liberado pelo seguinte scanf. Resultado... Leitura segura e portável! Não existe nenhum outro método mais eficiente, si dizem que sim, te estão roubando o dinheiro!!! while ( ( ch = fgetc ( stdin ) ) != EOF && ch != '\n' ); //limpar buffer } for ( i = 0; i < N_MAX_FRASES; i++ ){ for ( x = strlen ( matriz[i] )-1; x >= 0; x-- ) { printf ( "%c", matriz[i][x] ); } printf ( "\n"); } return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Maaso
preciso fazer uma matriz 5x1 de caracteres ao inverso porem não estou conseguindo. Sou novo nesse assunto e preciso da ajuda de vocês. :/
Por exemplo :
Matriz normal:
Chocolate é
Muito
Bom
Matriz inversa:
é etalocohC
otiuM
moB
Erro: [Error] cannot convert 'char (*)[100]' to 'const char*' for argument '1' to 'size_t strlen(const char*)'
Editado por MaasoLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.