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

Ajuda Com Problema De Iniciante.


Priest

Pergunta

Meu primeiro post! :]

Bom, fiz um codigo que registra livros, editora, numero de paginas e outros dados. O objetivo do exercicio é montar uma estrutura para inserir os dados e depois ver o total do número de páginas e fazer a média destas. Isso eu já fiz, foi fácil, o problema ocorreu quando fui tentar exibir o resultado da seguinte maneira:

printf("O livro \"%s\" possui %d paginas.\n", proc.nome, proc.paginas);

*postarei o código mais abaixo*

O meu problema ocorre no momento de pedir para o usuário inserir o nome do livro.

Primeiro eu tentei fazer com scanf("%s", &proc.nome), e dessa maneira ele funciona numa boa quando escrevo uma única palavra. Entretanto, quando uso espaços ele buga.

Então tentei usar gets usando uma variavel char e copiando para a estrutura, porém após a primeira passagem do laço ela também buga pulando a primeira rotina.

Segue o código levemente alterado para entenderem melhor.

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

struct livro{
       char nome[100];
       char editora[100];
       int paginas;
};

int main(){
    
    struct livro proc[5];
    int i, ct = 0, soma = 0;
    float media;
    char str1[100], str2[100];
    
    for (i = 0; i < 5; i++){
        
        printf("\nDigite o nome do livro: ");
        gets(str1);
        strcpy (proc[i].nome, str1);
        printf("Digite o nome da editora: ");
        gets(str2);
        strcpy (proc[i].editora, str2);
        printf("Digite o numero de paginas: ");
        scanf("%d", &proc[i].paginas);
        ct++;
        soma += proc[i].paginas;
        }
    
    media = soma / ct;
            
    printf("\n");
    for (i = 0; i < 5; i++){
        printf("O livro \"%s\" possui %d paginas.\n", proc[i].nome, proc[i].paginas);
    }

    printf("\n\nO total de paginas dos %d livros é: %d", ct, soma);
    
    printf("\nPortanto a media de paginas dos livros é:%.2f", media);
    printf("\n\n*Fim*\n\n");
    
    system ("Pause");
    return 0;
}

Alguém poderia me dar uma luz com essa dúvida?

Agradeço desde já, abraços.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Guest Visitante

Ah! Muito obrigado, era esse o comando que eu tinha pensado de usar, mas não lembrava a sintaxe dele, tava usando só flush!

Valeu pela ajuda, compilou e está funcionando 100%.

Abraços. ;]

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