Ir ao conteúdo

Posts recomendados

Postado
#include <stdio.h>
#include <cstdlib>
 int main(void) {
    int capitulos, tempo_em_dias, previsao, totalcaps;
    char NomeNovela[20];
    printf("\n Ola! Qual novela esta assistindo? ");
    scanf("%c", &NomeNovela);
    printf("\nAdoro essa novela!! \nQual o total de capítulos? ");
    scanf("%d", &totalcaps);
    printf("\nJá está em qual capítulo? ");
    scanf("%d", &capitulos);
    printf("\nHa quantos dias esta assistindo? ");
    scanf("%d", &tempo_em_dias);
    previsao = totalcaps/(capitulos/tempo_em_dias);
    printf("\nPelo que você já assistiu de", "%c", NomeNovela, "\n");
    printf("\nPodemos concluir que você terminará em: ","%d", previsao, "  dias");
}

Criei este código primeiro no portugol que funcionou corretamente, agora aprendendo C, fiz no Dev C++ e ele não acusa erros na compilação, mas ao executar, ele não faz as perguntas pausadamente para o usuário. Após informar o nome da novela, ele põe na tela todas as perguntas e ainda retorna um valor aleatório. 

Postado
2 horas atrás, pedroedumendes disse:
#include <stdio.h>
#include <cstdlib>

 

Isso não faz sentido. É a mesma biblioteca. A convenção em C++ ao precisar incluir um header de C, como stdlib, é tirar o .h e colocar um 'c' na frente. Se está programando em C não está programando em C++. São linguagens diferentes, muito diferentes. E se está programando em C, já que escreveu um programa C, não use cstdlib.

 

2 horas atrás, pedroedumendes disse:
    int capitulos, tempo_em_dias, previsao, totalcaps;
    char NomeNovela[20];
    printf("\n Ola! Qual novela esta assistindo? ");
    scanf("%c", &NomeNovela);

 

Não declare mais que uma variável por linha. É grátis. Juntar isso só atrapalha a leitura. Inicialize todas as variáveis.

 

scanf retorna um int. TESTE. SEMPRE. leia o manual.

 

NomeNovela é char[20]. Em C isso quer dizer que NomeNovela é o endereço de início e é isso que deve passar para scanf(). Não pode usar o operador & porque ele vai pegar o endereço de algo que já é um endereço.

 

Mais ainda, nem deve usar scanf para isso. Pelo nome dá pra ver que scanf é um scanner. scan formatted input, daí vem o nome. E o teclado não é assim formatado, certo? scanf() foi escrita para ler tabelas de muitas linhas iguais, separadas por algum delimitador. Não é para ler do teclado. Faça o muito mais simples e use fgets(). 

 

Leia o manual de scanf e entenda os especificadores, essas coisas que começam por % como "%c" e que lê UMA letrinha e não uma frase. E entenda que scanf como está usando para no primeiro espaço branco, que pode ser o fim de linha, um TAB ou um espaço e assim não vai ler um nome de mais uma palavra. E note que nada vai controlar esse tamanho de 20 e o cara pode digitar 400 e zoar todo o programa.

 

 

  • Haha 1
  • 1 ano depois...
Postado

Boa Noite

@pedroedumendes

 

Esses eram alguns dos os avisos, se não todos.

a.c:7:13: aviso: formato ‘%c’ espera argumento do tipo ‘char *’, mas argumento 2 tem tipo ‘char (*)[20]’ [-Wformat=]
    7 |     scanf("%c", &NomeNovela);
      |            ~^   ~~~~~~~~~~~
      |             |   |
      |             |   char (*)[20]
      |             char *
a.c:15:12: aviso: muitos argumentos para o formato [-Wformat-extra-args]
   15 |     printf("\nPelo que você já assistiu de", "%c", NomeNovela, "\n");
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.c:16:12: aviso: muitos argumentos para o formato [-Wformat-extra-args]
   16 |     printf("\nPodemos concluir que você terminará em: ","%d", previsao, "  dias");
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

Teu programinha agora compila


#include <stdio.h>
int main (void) {
  int capitulos ,tempoEmDias ,totalCaps;
  char nomeNovela[20];
  printf ("%s","Olá! Qual novela esta assistindo? ");
  scanf ("%19[^\n]",&nomeNovela[0]);
  printf ("%s","Adoro essa novela!! Qual o total de capítulos? ");
  scanf ("%d",&totalCaps);
  printf ("%s","Já está em qual capítulo? ");
  scanf ("%d",&capitulos);
  printf ("%s","Há quantos dias esta assistindo? ");
  scanf ("%d",&tempoEmDias);
  int previsao= totalCaps/ (capitulos/ tempoEmDias);
  printf("%s%s%c","Pelo que você já assistiu de ",nomeNovela,'\n');
  printf("%s%d%s%c","Podemos concluir que você terminará em: ", 
                                        previsao," dia(s)",'\n');
  return 0;
  }

 

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...