Ir ao conteúdo
  • Cadastre-se

C Por que esse programa C não consegue ser compilado?


Yaroiiy

Posts recomendados

Certamente, eu desenvolvi este código em linguagem C, no entanto, durante o processo de compilação, um erro está sendo gerado, e até o momento, eu não consegui identificar a natureza desse erro. Seria possível a alguém, por gentileza, oferecer assistência com relação a esse problema que estou enfrentando?

😨

 

Este arquivo meu é um programa em linguagem C, no entanto, devido às restrições do site, foi necessário renomeá-lo para .zip. Portanto, basta que você o renomeie novamente para .c e tudo retornará ao seu estado original.

 

Observação: Estou atualmente matriculado em um curso de desenvolvimento de jogos e estou cursando uma disciplina denominada "Programação Básica". Portanto, a resolução deste problema é essencial para o andamento do meu curso.

 

 

#include <stdio.h>

#include <locale.h>

#include <stdlib.h>

int linha(){

 int i;

printf("|");

for(i=0;i<65;i++){

    printf("=");

}

printf("|");

}

int main(){

 setlocale(LC_ALL,"");

    system ("color F0");

    int opc, opccomedia, opcromance, opcacao, opcaventura, opcterror;

    float vlacao, vlcomedia, vlromance, vlaventura, vlterror, total;

    vlacao=0;

    vlcomedia=0;

    vlromance=0;

    vlaventura=0;

    vlterror=0;

    total=0;

    char continuar = 's';

    while(continuar = 's'){

linha();

printf("\n| LOCADORA DE VÍDEO |\n");

linha();

printf("\n| BEM VINDO (A) |\n");

printf("| ESCOLHA O GENERO DO FILME PARA ALUGAR: |\n");

printf("| 1: COMÉDIA |\n");

printf("| 2: AÇÃO |\n");

printf("| 3: AVENTURA |\n");

printf("| 4: ROMANCE |\n");

printf("| 5: TERROR |\n");

printf("| O: FINALIZAR |\n");

linha();

printf("\n");

printf(" ESCOLHA A OPÇÃO: ");

scanf("%d", &opc);

switch(opc){

 case 0:

  system("cls");

  total = vlacao + vlcomedia + vlromance + opcaventura + opcterror;

  printf("*---------------------------------*\n");

  printf("*valor dos filmes %.f,00 R$ *\n", total);

  printf("*---------------------------------*\n");

  return 0;

 case 1:

  system("cls");

  linha();

  printf("\n| COMÉDIA |\n");

  linha();

  printf("\n| 1- Anjos Da Lei --------------> 11,90 R$ |");

  printf("\n| 2- As Branquelas -------------> 24,90 R$ |");

  printf("\n| 3- Debi E Loide --------------> 07,90 R$ |");

  printf("\n| 4- O Maskara -----------------> 06,90 R$ |\n");

     linha();

     printf("\n Escolha a opção: ");

     scanf("%d", &opccomedia);

     

     if(opccomedia==1){

      vlcomedia = 11.90; 

  }

  if(opccomedia==2){

      vlcomedia = 24.90;

  }

  if(opccomedia==3){

      vlcomedia = 07.90;

  }

  if(opccomedia==4){

      vlcomedia = 06.90;

  }

  opccomedia = 0;

  system("cls");

  break;

 case 2:

  system("cls");

  linha();

  printf("\n| AÇÃO |\n");

  linha();

  printf("\n| 1- Velozes & Furiosos --------> 12,00 R$ |");

  printf("\n| 2- Ghostbusters --------------> 14,00 R$ |");

  printf("\n| 3- Motoqueiro Fantasma -------> 09,90 R$ |");

  printf("\n| 4- Transformers --------------> 05,90 R$ |\n");

     linha();

     printf("\n Escolha a opção: ");

     scanf("%d", &opcacao);

     

     if(opcacao==1){

      vlacao = 12,00; 

  }

  if(opcacao==2){

      vlacao = 14,00;

  }

  if(opcacao==3){

      vlacao = 10,90;

  }

  if(opcacao==4){

      vlacao = 05,90;

      

  }

  opcacao = 0;

  system("cls");

  break;

  

     

}//fim switch

}//fim while    

}//fim programa

 

LOCADORA (1).c.zip LOCADORA (1).c.zip LOCADORA (1).c.zip

Link para o comentário
Compartilhar em outros sites

Não entendi muito do que escreveu 😞  

 

Está então escrevendo um programa C mas marcou o tópico como C++? Por que? É outra linguagem....

 

Não poste links ou arquivos compactados ou imagens. Poste código e texto que permita a alguém reproduzir seu problema

 

Poste código como explicado no primeiro post do forum...

 

Veja a diferença:

 

#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
int linha()
{
    int i;
    printf("|");
    for (i = 0; i < 65; i++) { printf("="); }
    printf("|");
}
int main()
{
    setlocale(LC_ALL, "");
    system("color F0");
    int opc, opccomedia, opcromance, opcacao, opcaventura,
        opcterror;
    float vlacao, vlcomedia, vlromance, vlaventura,
        vlterror, total;
    vlacao = 0;
    vlcomedia = 0;
    vlromance = 0;
    vlaventura = 0;
    vlterror = 0;
    total = 0;
    char continuar = 's';
    while (continuar = 's')
    {
        linha();
        printf("\n| LOCADORA DE VÍDEO |\n");
        linha();
        printf("\n| BEM VINDO (A) |\n");
        printf(
            "| ESCOLHA O GENERO DO FILME PARA ALUGAR: |\n");
        printf("| 1: COMÉDIA |\n");
        printf("| 2: AÇÃO |\n");
        printf("| 3: AVENTURA |\n");
        printf("| 4: ROMANCE |\n");
        printf("| 5: TERROR |\n");
        printf("| O: FINALIZAR |\n");
        linha();
        printf("\n");
        printf(" ESCOLHA A OPÇÃO: ");
        scanf("%d", &opc);
        switch (opc)
        {
            case 0:
                system("cls");
                total = vlacao + vlcomedia + vlromance +
                        opcaventura + opcterror;
                printf(
                    "*---------------------------------*"
                    "\n");
                printf(
                    "*valor dos filmes %.f,00 R$ *\n",
                    total);
                printf(
                    "*---------------------------------*"
                    "\n");
                return 0;
            case 1:
                system("cls");
                linha();
                printf("\n| COMÉDIA |\n");
                linha();
                printf(
                    "\n| 1- Anjos Da Lei --------------> "
                    "11,90 R$ |");
                printf(
                    "\n| 2- As Branquelas -------------> "
                    "24,90 R$ |");
                printf(
                    "\n| 3- Debi E Loide --------------> "
                    "07,90 R$ |");
                printf(
                    "\n| 4- O Maskara -----------------> "
                    "06,90 R$ |\n");
                linha();
                printf("\n Escolha a opção: ");
                scanf("%d", &opccomedia);
                if (opccomedia == 1) { vlcomedia = 11.90; }
                if (opccomedia == 2) { vlcomedia = 24.90; }
                if (opccomedia == 3) { vlcomedia = 07.90; }
                if (opccomedia == 4) { vlcomedia = 06.90; }
                opccomedia = 0;
                system("cls");
                break;
            case 2:
                system("cls");
                linha();
                printf("\n| AÇÃO |\n");
                linha();
                printf(
                    "\n| 1- Velozes & Furiosos --------> "
                    "12,00 R$ |");
                printf(
                    "\n| 2- Ghostbusters --------------> "
                    "14,00 R$ |");
                printf(
                    "\n| 3- Motoqueiro Fantasma -------> "
                    "09,90 R$ |");
                printf(
                    "\n| 4- Transformers --------------> "
                    "05,90 R$ |\n");
                linha();
                printf("\n Escolha a opção: ");
                scanf("%d", &opcacao);
                if (opcacao == 1) { vlacao = 12, 00; }
                if (opcacao == 2) { vlacao = 14, 00; }
                if (opcacao == 3) { vlacao = 10, 90; }
                if (opcacao == 4) { vlacao = 05, 90; }
                opcacao = 0;
                system("cls");
                break;
        }  // fim switch
    }  // fim while
}  // fim programa

 

Seu programa não está nada bom. Muitos dos problemas são muito comuns e eu tenho uma lista de onde eu copio isso:

 

  • Não use system() para nada. Não estará fazendo nada. Não estará aprendendo nada. Não há praticamente nada que possa fazer com system() que não possa fazer em C ou C++. system() foi escrita em C e o sistema quase todo também. E em geral é proibido em empresas e escolas afinal: é um risco grande de segurança. E se tem algo que você não possa inicialmente fazer em C ou C++ talvez não deva mesmo fazer.
  • main() deve ser a primeira função de seu programa. Se possível em um arquivo separado. Há muitas razões para isso, mas em especial vai gostar de começar a ler seus programas e os de outros a partir de main() E a partir do início do texto. Ao mesmo tempo. E ao usar protótipos fica trivial passar as declarações todas para um arquivo .h que é o mais prático afinal.
  • Não declare mais que uma variável por linha. Não acrescenta nada e só dificulta a leitura. Inicialize todas as variáveis.
  • Nunca leia valores do teclado para alimentar seu programa antes dele estar rodando. Só vai te atrasar e não acrescenta absolutamente nada. Use constantes, use funções que retornam a estrutura preenchida. Leia de arquivos: é trivial em C. Ao terminar os  testes aí sim incorpore a leitura. Um programa interativo é chato para testar. Durante o desenvolvimento ninguém quer interagir com o programa. Nunca escreva um programa interativo, mesmo que seja o objetivo final.
  • Se seu programa tem um menu, entenda que o menu() deve mostrar as opções e ler e retornar a opção. Um void menu() é um desperdício. Use uma função que mostra o menu e retorna a opção.
  • scanf() foi escrita para ler entrada formatada. Não use para ler do teclado, que claramente não é entrada formatada. Só vai dar mais trabalho. Muito mais trabalho.
  • Ao usar scanf() ou alguma função da família, como fscanf() entenda que ela retorna um valor. E teste. É ingênuo deixar o programa seguir sem testar. TESTE sempre. Exemplo: para 5 especificadores --- aquelas coisas com % na frente e que não tem um asterisco nem outro '%' --- como "%d %d %f %f %d" scanf() pode ler de 0 a 5 itens ou dar erro e retornar -1. Então teste o retorno que vai estar entre -1 e 5... 
  • Nunca escreva um programa interativo. Não vai aprender nada. Não vai ganhar nada. Escreva e teste todas as funções. DEPOIS de tudo testado coloque a parte interativa. isso inclui claro o eventual menu.
  • evite ler do teclado a menos que seja o objetivo do problema. Ler de arquivos é muito mais simples, seguro e fácil de reproduzir. Não há razão para ficar parado em frente a tela minutos inventando nomes de campos e coisas assim: o efeito é que vai acabar não testando direito porque é difícil controlar e repetir testes.
  • Não misture entrada de dados ou formatação com a apresentação dos dados ou a lógica do programa, Isso é um desastre para manutenção e desenvolvimento
  • Um printf() de 6 linhas é muito, mas muito melhor que 6 printf() de 1 linha. E se só vai mostrar o texto puts() é ainda melhor e dezenas de vezes mais rápido que uma série de printf().

Ainda sobre o código:

 

  • Evite usar float em C. Faça o simples e use double.
  • Habilite todos os avisos de erro de seu compilador. E trate os avisos.
    • em case 0: total = tem 2 variáveis que não foram inicializadas
    • declarou linha() como retornando int mas não tem nenhum return na função
  • Em seu programa tem uma tabela para os valores de locação. Mas aí você usa um if para achar a faixa de preço... Não é esperto. É claro que sempre vai dar na mesma. Use uma tabela....

 

 

Link para o comentário
Compartilhar em outros sites

  • Rio McCloud alterou o título para Por que esse programa C não consegue ser compilado?

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!