Ir ao conteúdo
  • Cadastre-se
Lucas Pelepek

C RESOLVIDO Matriz imprimindo uma letra a mais.

Posts recomendados

bom dia/tarde/noite.
 

#include <stdio.h>
#include <string.h>

void main()
{
  int c, anda, numero, x,y,cod,z ,num;
  y=0;
  cod=0;
  char portas[100];
  char matrizcopia[1000][1000];

  while( 1 ) // 1 faz ser loop eterno
  {
    while (1)// loop pra verificar se está dentro dos limites
    {
      printf("Escreva o numero de andares e quanto numeros jogara:\n");
      scanf( "%d %d", &anda, &numero );

      if ( (anda <= 100 && anda >= 1) && (numero <=200 && numero >= 1) || (anda == 0 && numero == 0) )
      {
        y+=anda;
        break;
      }}
      if( anda == 0 && numero == 0 ) // sai do loop caso 0 0
      {
        break;
      }
      for( c=0; c<anda; c++ ) // zera o vetor
      {
        portas[c] = 0;
      }
      for( c=0; c<numero; c++ ) // le as jogados de acordo com o numero lido antes
      {
        printf("\njogada(%d): ",c+1);
        scanf( "%d", &num );

        for( x=num-1; x<anda; x+=num )// inverte o vetor nas portas calculadas
        {
          portas[x] = !portas[x];
        }}
        for (int i = 0; i <= anda; i++) {
          matrizcopia[cod][i]=(portas[i] ? 'O' : 'C');
        }
        cod+=1;
      }

      for (int z = 0; z <= cod; z++) {
        printf("\n");
        for (int i = 0; i < 200; i++) {
          printf("%c",matrizcopia[z][i]);
        }}}

colocando esse imput:
5 3
3

4

2

0 0

 

o resultado deveria dar:

COOCC

 

porém no meu codigo ele adciona uma letra a mais:

COOCCO

 

não importa qual imput.


não consigo achar por onde essa letra tá entrando, HELP!

 

obrigado desde já.
 

  • Curtir 2
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu preciso ver seu código melhor quando eu tiver mais tempo, mas batendo o olho eu te aconselho a procurar algo no laço de repetição. Será que esse caractere a mais não tem a ver com incremento?

 

Ou isso aqui ?

 for (int i = 0; i <= anda; i++) {
          matrizcopia[cod][i]=(portas[i] ? 'O' : 'C');
        }
        cod+=1;
      }

eu acho que tu não definiu a variável i:

 int c, anda, numero, x,y,cod,z ,num;
  y=0;
  cod=0;
  char portas[100];
  char matrizcopia[1000][1000];

 

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa, a variavel ( i ) já está sendo inicializada no proprio FOR, mesmo colocando ela lá em cima dá o mesmo resultado.

 

mas como você disse:
era só ter mudado o anda.

for (int i = 0; i <= (anda-1); i++) {
          matrizcopia[cod][i]=(portas[i] ? 'O' : 'C');
        }
        cod+=1;
      }

outra mudança pra não ter espaço entre os outputs:

 for (int i = 0; i < strlen(matrizcopia[z]) ; i++) {
          printf("%c",matrizcopia[z][i]);
        }}}

o unico problema é que está tendo 2 linhas puladas no final, não sei de onde elas vem, mas obrigado pela ajuda.

 

#include <stdio.h>
#include <string.h>

void main()
{
  int c, anda, numero,i, x,y,cod,z ,num;
  y=0;
  cod=0;
  char portas[100];
  char matrizcopia[1000][1000];

  while( 1 ) // 1 faz ser loop eterno
  {
    while (1)// loop pra verificar se está dentro dos limites
    {
     // printf("Escreva o numero de andares e quanto numeros jogara:\n");
      scanf( "%d %d", &anda, &numero );

      if ( (anda <= 100 && anda >= 1) && (numero <=200 && numero >= 1) || (anda == 0 && numero == 0) )
      {
        y+=anda;
        break;
      }}
      if( anda == 0 && numero == 0 ) // sai do loop caso 0 0
      {
        break;
      }
      for( c=0; c<anda; c++ ) // zera o vetor
      {
        portas[c] = 0;
      }
      for( c=0; c<numero; c++ ) // le as jogados de acordo com o numero lido antes
      {
        //printf("\njogada(%d): ",c+1);
        scanf( "%d", &num );

        for( x=num-1; x<anda; x+=num )// inverte o vetor nas portas calculadas
        {
          portas[x] = !portas[x];
        }}
        for ( i = 0; i <= (anda-1); i++) {
          matrizcopia[cod][i]=(portas[i] ? 'O' : 'C');
        }
        cod+=1;
      }

      for (z = 0; z <= cod; z++) {

        for ( i = 0; i < strlen(matrizcopia[z]) ; i++) {
          printf("%c",matrizcopia[z][i]);
        }
         printf("\n");
      }}


 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pega isso:

  for (z = 0; z <= cod; z++) {

        for ( i = 0; i < strlen(matrizcopia[z]) ; i++) {
          printf("%c",matrizcopia[z][i]);
        }
         printf("\n");
      }}

E muda pra isso e ve se resolve:

  for (z = 0; z <= cod; z++) {

        for ( i = 0; i < strlen(matrizcopia[z]) ; i++) {
          printf("\n%c",matrizcopia[z][i]);
        }
      
      }}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu, mas já tinha conseguido fazer assim: 

 

for (z = 0; z <= cod; z++) {
        
        for ( i = 0; i < strlen(matrizcopia[z]) ; i++) {
            
            printf("%c",matrizcopia[z][i]);
        }
        if(z<=0){
        printf("\n");
        }
      }}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Redes de Computadores - Gabriel Torres

PROMOÇÃO DE QUARENTENA

De R$ 39,90 por apenas R$ 9,90 só até as 23h59min desta sexta-feira 03/04/2020

CLIQUE AQUI E COMPRE AGORA MESMO!