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

Projeto (Controle remoto de televisão)


maychan

Pergunta

Meu professor passou esse projeto cujo objetivo era criar um programa em C que funcione como um controle remoto digital de televisão.

O meu código ficou bem extenso então não vou colocar aqui, mas o problema que está dando é na declaração de variáveis, uma em especial está sendo lida como constante. Acredito que seja porque o programa tem suas funções arquivadas em bibliotecas e esse mesmo termo que usei para a variável também usei nessas outras funções como um parâmetro de valor 5 pra todas.

Acontece que quando eu tento modificar a variável no programa principal, as funções inseridas nele dão falha.

Já tentei deixar ele lá e adicionar outro, mas acaba lendo só o primeiro.

vou pôr aqui apenas as partes onde estão sendo detectados o problema.

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

#include "INICIARtv.cpp"
#include "SITUACAOtv.cpp"
#include "Volume.h"
#include "AUMENTARvolume.cpp"
#include "DIMINUIRvolume.cpp"
#include "MUDOvolume.cpp"
#include "AUMENTARcanal.cpp"
#include "DIMINUIRcanal.cpp"
#include "ESCOLHERcanal.cpp"
#include "MODOtv.cpp"
#include "SALVAR.cpp"
#include "RECUPERAR.cpp"
#include "PAINEL-PRINCIPAL.cpp"

#define mark 10
#define botao 5


int main()
{

    setlocale (LC_ALL,"portuguese");
    
    int painel[mark][botao], canalNovo, modoNovo, marco, botao = 1;
    char url[]="memoria.txt";

    //Escolher a tv que vai ser usada
    printf("Escolha a marca de TV na qual deseja usar o controle: \n");
    printf("1 - Samsung \n2 - LG \n3 - Semp Toshiba \n4 - Philco \n5 - Phillips \n6 - CCE \n7 - Panasonic \n8 - Sony \n9 - Gradiente \n10 - AOC\n");
    scanf("%d", &marco);
    marco -= 1;
    
    INICIARtv(painel, marco);

    //salvar codigo da tv
    painel[marco][0] = marco;

    //IniciarTV
    //Aperta botão
        
        while(botao != 0)
    {
        system("cls"); //limpar a tela
        PAINEL_PRINCIPAL(painel, marco); // como o codigo de mostrar o painel é grande, ficou avulso da main
        printf("\n\t\t\t   |Controle Remoto Universal|\n");//mostrar interface do controle
        printf("\n\t(1)Power \t\t(2)Salvar \t\t(3)Recuperar \n\n\t(4)Volume+ \t\t(5)Volume- \t\t(6)Mudo \n\n\t(7)Canal+ \t\t(8)Canal- \t\t(9)Escolher Canal \n\n\t(10)Modo \t\t(11)Mudar TV \t\t(12)Resetar \n\n\t\t\t\t(0)Fechar Aplicacao\n\t");
        printf("\n\t\t\tApertar o botão:");
        scanf("%d", &botao);
    
    ...
    }

O que está em negrito é onde foi detectado, deixei os includes também pra caracterizar o que eu disse sobre salvar as funções em bibliotecas...

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá, o problema que você está enfrentando se dá pela seguinte premissa:

Os compiladores trabalham com escopo, e cada variável, função tem seu escopo.

#define botao 5

Nessa declaração você DETERMINOU que a variável botao vai assumir o valor 5 ao iniciar a execução e esse valor não vai mudar. Essa variável não pode mais sofrer atribuições.

scanf("%d", &botao);

Nesse código você tenta atribuir um novo valor à variável botão. Isso viola as leis do compilador, e consequentemente gera erro.

A solução é você usar outra variável, ou não definir uma constante.

E talvez seja uma boa ideia criar um struct controle remoto e outro para tv.

struct tv{
  char marca[30];
  int canalAtual;
  bool status; //0 desligada, 1 ligada
  int volume;  
};

 

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui resolver o problema. Muito obrigada o/

No final das contas acabei tendo que mudar a variável de todas as bibliotecas e mudar a chamada delas no programa principal.

Parece que eu estava chamando as funções com nomes diferentes XD

Mas o que você disse realmente me fez atentar melhor para o código, obrigada novamente.

Já tinha quebrado muito a cabeça com isso.

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,2k
    • Posts
      652k
×
×
  • Criar Novo...