Ir para conteúdo
Fórum Script Brasil
  • 0

ME AJUDEM :CC


Maaso

Pergunta

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

 

#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 por Maaso
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

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 é
Muito
Bom

e sairia:

Bom
Muito
Chocolate é

 

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;
}

 

 

 

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...