Jump to content
Fórum Script Brasil
  • 0

ME AJUDEM :CC


Maaso
 Share

Question

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*)'

Edited by Maaso
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...