Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

GoldStrike

Ajuda num programa

Mensagens Recomendadas

GoldStrike

Já, comecei a fazer mas não sei se o que fiz foi perda de tempo

#include <stdio.h>
#define A 0
#define B 1
#define C 2
#define D 3
#define E 4
#define F 5
#define G 6

main()
{
      int array[11][7]={ {1,1,1,1,1,1,0},
                         {0,1,1,0,0,0,0},
                         {1,1,0,1,1,0,1},
                         {1,1,1,1,0,0,1},
                         {0,1,1,0,0,1,1},
                         {1,0,1,1,0,1,1},
                         {1,0,1,1,1,1,1},
                         {1,1,1,0,0,0,0},
                         {1,1,1,1,1,1,1},
                         {1,1,1,1,0,1,1},
                         {0,0,0,0,0,0,1},       
                       };
      
       i,j,a,b,c,d,e,f,g;

queria saber como fazer pa definir do a até ao g pelo valor lógico (0 ou 1), se preciso de usar um ciclo for ou assim ou se deva definir por funções . . .

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Eu começava pelo principio.

Repara que, por estar no enunciado uma imagem com essas letras não significa que tenhas que utilizar essas variáveis par definir os segmentos. Mas a pergunta de definir o valor lógico:

a = 0;
a = 1;

Funciona na perfeição. Agora se queres mesmo definir o valor com flags binárias, tendo em conta que só usas 7 segmentos, podes usar um char (8-bits = 8 flags) e fazer operações binárias:

char segments = 0; // todos desligados
/* 00000000
   -gfedcba */
segments = segments | 1; // liga o primeiro bit -> 00000001
segments = segments | 1 << 2; // liga o terceiro bit -> 00000101
segments = segments ^ 1; // desliga o primeiro bit -> 00000100
segments = segments ^ 1; // liga o primeiro bit -> 00000100

if (segments & 1 << 5) // verifica se o sexto bit está ligado
    ;

Mas este exercício já está mais que batido neste fórum...


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
GoldStrike

#include <stdio.h>
#define a 0
#define b 1
#define c 2
#define d 3
#define e 4
#define f 5
#define g 6

void escreve_algarismo(int alg, int tabela[11][7])
{            

      if(tabela[alg][a]==1)     
        printf(" - \n");     
       else printf("  \n");
       
       if(tabela[alg][f]==1)
        printf("| ");    
       else printf("  "); 
                             
       if(tabela[alg][b]==1)
        printf("|\n");
       else printf("  \n");
       
       if(tabela[alg][g]==1)
        printf(" - \n");
       else printf("  \n");
       
       if(tabela[alg][e]==1)
        printf("| ");
       else printf("  ");
       
       if(tabela[alg][c]==1)
        printf("|\n");
       else printf("   \n");
       
       if(tabela[alg][d]==1)
        printf(" - ");
       else printf("  ");
}       
       
main()

{ 
      int array[11][7]={ {1,1,1,1,1,1,0},
                         {0,1,1,0,0,0,0},
                         {1,1,0,1,1,0,1},
                         {1,1,1,1,0,0,1},
                         {0,1,1,0,0,1,1},
                         {1,0,1,1,0,1,1},
                         {1,0,1,1,1,1,1},
                         {1,1,1,0,0,0,0},
                         {1,1,1,1,1,1,1},
                         {1,1,1,1,0,1,1},
                         {0,0,0,0,0,0,1},       
                       };
      
       
       int i;
       for(i=0; i<10; i=i+1)             
         { 
         system("cls");       
         escreve_algarismo(i,array);
         getch();        
         printf("\n\n");
         }
        
}

Fiz assim mas quando chega ao 9 quero que regresse ao 0 e ainda tenho de fazer de 2 algarismos alguma sugestão???

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

#define CHAR_HEIGHT 11
#define CHAR_WIDTH 8

#define DISPLAY_NUM_CHARS 3

void print_digit(int ** display, char c, int position);
void output_display(int ** display);

...
int display[CHAR_HEIGHT][DISPLAY_NUM_CHARS * CHAR_WIDTH];
...

espero que te de alguma ideia ...


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

esquece o post anterior ... estava confuso com o tipo de problema :)

pensa assim :

void escreve_numero(int alg, int tabela[11][7]) {
  // se "alg" for 0 entao
    // apresenta escreve_algarismo(0)
  // caso contrário
    // enquanto "alg" for maior que 0
      // apresenta escreve_algarismo(resto da divisao inteira de "alg" com 10)
      // "alg" = divisao inteira de "alg" por 10
}


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.