Jump to content
  • 0
Parazeit

Struct: Lê apenas o primeiro título - C/C++

Question

-Fazer um programa que cria uma estrutura livro, que contém os elementos
título, ano de edição, número de páginas e preço. Criar uma variável desta
estrutura que é um vetor de 5 elementos. Ler os valores para a estrutura e
imprimir a média do número de páginas do livros. Além disso mostrar os dados
do livro com maior preço e menor preço, inclusive se houver mais de um livro
com o mesmo preço.

 

Tô iniciando agora em struct, e, dada a questão, tentei montar um programa que seguisse operando o que ela pede, mas por algum motivo que n consigo identificar, o programa só lê o título do primeiro livro. Gostaria que alguém me ajudasse a identificar o problema.

 

Segue o programa que tentei fazer:

 

#include <stdio.h>
#define T 2

int main () {
	struct dados {
		char titulo[71];
		int ano;
		int pag;
		float preco;
	};
	
	struct dados livro[T];
	int i;
	float mediap = 0.0;
	float maior = 0.0, menor = 9999999999999999.9;
	
	for (i = 0; i < T; i++) {
		
		printf ("\nLivro %d:\n", i + 1);
		
		printf ("\n\tInsira o titulo do livro: ");
		fgets (livro[i].titulo, 70, stdin);
		
		printf ("\n\tInsira o ano de edicao: ");
		scanf ("%d", &livro[i].ano);
		
		printf ("\n\tInsira o numero de paginas: ");
		scanf ("%d", &livro[i].pag);
		
		printf ("\n\tInsira o preco no mercado: ");
		scanf ("%f", &livro[i].preco);
		
			if (livro[i].preco < menor)
			menor = livro[i].preco;
			
			if (livro[i].preco > maior)
			maior = livro[i].preco;
		
			mediap = mediap + livro[i].pag;
	}
	
	//system ("cls");
	
	printf ("\n\nA media do numero de paginas dos livros: %.2f\n", (float)mediap/T);
	printf ("\nO maior preco dentre os livros: %.2f\n", maior);
	printf ("\nO menor preco dentre os livros: %.2f\n", menor);
		
	return 0;
}

 

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Marcosvn
      Estou vendendo todos os meus livros da área de programação. Estão todos inteiros e em bom estado. O total dos 11 livros no valor atual e novo seria:  R$ 709,00 . Pra quem tiver interesse eu vendo todos eles por R$ 350,00. Moro em mogi das cruzes, quem morar por perto posso entregar em mãos. Qual dúvida podem me chamar no whatsapp: 11- 98557-9543
       
      Segue a relação dos livros com o preço atual e o link da loja:
       

      1 - Use a cabeça - Programação JavaScript - Valor atual: R$ 86,00
      https://www.amazon.com.br/cabeça-Programação-JavaScript-Eric-Freeman/dp/8576089904
       
      2 - Aprendendo Padrões de Projeto em PHP - Valor atual: R$ 59,00
      https://www.amazon.com.br/Aprendendo-Padrões-Projeto-em-PHP/dp/8575223437/ref=asc_df_8575223437/?tag=googleshopp00-20&linkCode=df0&hvadid=379748659420&hvpos=1o1&hvnetw=g&hvrand=2539993308221038591&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9074295&hvtargid=pla-809253259147&psc=1
       
      3 - PHP Moderno - Valor atual: R$ 55,00
      https://www.amazon.com.br/PHP-Moderno-Novos-Recursos-Práticas/dp/857522428X
       
      4 - Princípios do Web Design Maravilhoso - Valor atual: R$ 37,16
      https://www.amazon.com.br/Principios-Do-Web-Design-Maravilhoso/dp/8576082322
       
      5 - Use A cabeça - Web Design - Valor atual: R$ 102,00
      https://www.amazon.com.br/cabeça-Programação-JavaScript-Eric-Freeman/dp/8576089904
       
      6 - PHP - Programando com orientação a objetos - Valor atual: R$ 95,00
      https://www.amazon.com.br/PHP-Programando-com-Orientação-Objetos/dp/8575224654
       
      7 - PHP na Prática - Valor atual: R$ 67,00
      https://www.saraiva.com.br/php-na-pratica-200-exercicios-resolvidos-7849066/p
       
      8 - Aprendendo Node - Valor atual: R$ 67,00
      https://www.amazon.com.br/Aprendendo-Node-Usando-JavaScript-Servidor/dp/8575225405/ref=asc_df_8575225405/?tag=googleshopp00-20&linkCode=df0&hvadid=379748659420&hvpos=1o1&hvnetw=g&hvrand=7408189573190181571&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9074295&hvtargid=pla-397827438661&psc=1
       
      9 - CSS 3 - O Manual que Faltava 3º edição - Valor atual: R$ 62,00
      https://www.amazon.com.br/manual-faltava-David-Sawyer-Mcfarland/dp/8576088630
       
      10 - Programando em Wordpress - Valor atual: R$ 29,90 
      https://www.amazon.com.br/Programando-WordPress-Desenvolvimento-Funções-Plugins/dp/8575224581
       
      11 - Node Essencial - Valor atual: R$ 50,00
      https://www.amazon.com.br/Node-Essencial-Ricardo-Rodrigues-Lecheta/dp/8575226770/ref=asc_df_8575226770/?tag=googleshopp00-20&linkCode=df0&hvadid=379715964603&hvpos=1o3&hvnetw=g&hvrand=15894781247101280639&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9074295&hvtargid=pla-809606892653&psc=1
       
    • By jeredy
      Tenho um trabalho da faculdade e não consigo fazer rodar o programa corretamente.
      Quando eu coloco o cpf, na hora de imprimir sai um número aleatório. Creio que possa ser por falta de memória pois se coloco um número menor ele sai certo, porém não consigo adicionar memória em cpf.
       
      Obs: ainda não fiz a parte dos menores e da medial do grupo e a parte de imprimir em tabela pois não consegui fazer funcionar nem um básico mas se alguém souber essa parte também e puder me ajudar agradeço!!
       
      #include <stdio.h> #include <stdlib.h> main(){ struct funcionarios{ int *cpf; char nome[30]; int nascimento; float salario; }; int aux=0; //para testar se for 0 antes de armazenar o cpf struct funcionarios *func; int qtdLeitura=0, i=0, cont=0; func = ((struct funcionarios *) (malloc(sizeof(struct funcionarios) * 1))); while(1){ printf("Digite o cpf %d: ", i+1); scanf("%d", &aux); if(aux!= 0){ func.cpf = aux; fflush(stdin); } else{ break; } if(func != NULL){ qtdLeitura++; func = ((struct funcionarios *) realloc(func, sizeof(struct funcionarios) *(qtdLeitura+1))); } printf("Digite o nome %d: ", i+1); scanf("%s", func.nome); printf("Digite o nascimento %d: ",i+1); scanf("%d", &func.nascimento); printf("Digite o salario %d: ",i+1); scanf("%f", &func.salario); cont++; i++; } printf("\n\n"); for(i=0;i<cont;i++){ printf("Cpf %d:%d \n",i+1, func.cpf); printf("Nome %d: %s\n",i+1, func.nome); printf("Nascimento %d: %d\n",i+1, func.nascimento); printf("Salario %d: %.2f\n",i+1, func.salario); } }
       

    • By juliaKrunker
      1- O comando typedef pode ser utilizado para criar novos comandos, ou simplesmente novas formas de escrever
      determinados comandos em linguagem C. Por exemplo, toda vez que você quiser criar uma variável do tipo struct
      declarado acima, terá que escrever o nome completo do tipo, isto é struct lista. Usando o comando typedef, defina um
      tipo alternativo, chamado Lista, que possa ser usado em lugar de struct lista.

      2-  Usando o tipo Lista que você criou na questão 3, declare uma variável chamada myList que possa ser utilizada para
      construir uma lista encadeada.
       
      3- (0,5) Usando o tipo Lista que você criou na questão 3, declare uma variável chamada novo que possa ser utilizada para criar
      um novo elemento para a lista declarada na questão 4.

      4- Escreva uma linha de código que aloque espaço na memória para a variável novo declarada na questão 5, de forma
      que a variável possa ser utilizada para inserir um novo elemento na lista myList declarada na questão 4.

      5 -Considerando a variável myList declarada na questão 4 e a variável novo declarada na questão 5 e alocada na questão
      6, atribua os valores 1 para o atributo id e 9.1 para o atributo valor e insira-a na lista myList.
       
      6- O trecho de código apresentado a seguir, refere-se a uma função que receberá como parâmetro um ponteiro para
      uma lista do tipo Lista e deverá calcular e retornar a média dos valores existentes na lista. Escreva o corpo da função.

    • By ivolini
      Como adicionar numeros de uma struct destro de uma função em uma lista já criada em struct?
      Obrigado
    • By Marcelo Lopes Vidal
      #include<stdio.h> #include<string.h> #include<stdlib.h> struct aluno { char nome[20]; char endereco[50]; char data_de_nascimento[10]; char telefone[15]; float nota1; float nota2; }; struct aluno recadastramento(struct aluno valuno[10]); void media_das_notas(struct aluno valuno[10]); void aprovado_ou_reprovado(struct aluno valuno[10]); void mostrar_informacoes(struct aluno valuno[10]); int main(void) { struct aluno valuno[10]; int op; float media; int i; int j; printf("Digite as informacoes dos alunos"); for(i=1;i<11;i++) { printf("Digite O Nome Do Aluno[%d]\n\n",i); printf("Nome: "); fflush(stdin); gets(valuno[i].nome); printf("\nDigite O Endereco Do Aluno[%d]\n\n",i); printf("Endereco: "); fflush(stdin); gets(valuno[i].endereco); printf("\nDigite A Data De Nascimento Do Aluno [%d] No Formato <00/00/0000>\n\n",i); printf("Data De Nascimento: "); fflush(stdin); gets(valuno[i].data_de_nascimento); for(j=0;j <15; j++) { if(valuno[i].data_de_nascimento[2] != '/' && valuno[i].data_de_nascimento[5] != '/') { printf("ERRO! Digite novamente"); printf("\nDigite A Data De Nascimento Do Aluno [%d] No Formato <00/00/0000>\n\n",i); gets(valuno[i].data_de_nascimento); break; } else { printf("FORMATO CORRETO"); break; } } printf("\nDigite O Telefone Do Aluno [%d] No Formato <(DDD)00000-0000>\n\n",i); printf("Telefone Do Aluno: "); fflush(stdin); gets(valuno[i].telefone); for(j=0;j <15; j++) { if(valuno[i].telefone[0] != '(' && valuno[i].telefone[4] != ')' && valuno[i].telefone[10] != '-') { printf("ERRO! Digite novamente"); printf("Digite O Telefone Do Aluno [%d]: ",i); gets(valuno[i].telefone); break; } else { printf("FORMATO CORRETO"); break; } } printf("\nDigite A Primeira Nota Do Aluno [%d]\n\n",i); printf("Nota 1: "); scanf("%f",&valuno[i].nota1); printf("\nDigite A Segunda Nota Do Aluno [%d]\n\n",i); printf("Nota 2: "); scanf("%f",&valuno[i].nota2); } do { printf("\nMENU\n"); printf("- 1)Editar informações dos alunos \n 2)Mostrar as medias dos alunos \n 3)Dizer se os alunos foram aprovados medias >= 6 ou reprovados (medias <6)\n 4)Listar todas as informações dos alunos"); printf("\n\nOpcao::: "); scanf("%d",&op); switch(op) { case 1: recadastramento(valuno); break; case 2: media_das_notas(valuno); break; case 3: aprovado_ou_reprovado(valuno); break; case 4: mostrar_informacoes(valuno); break; default: printf("\nOpcao INVALIDA\n"); break; } }while(op > 0 && op < 5); } struct aluno recadastramento(struct aluno valuno[10]) //recadastramento de informações//Funções { int i; for(i=1;i<11;i++) { printf("\nDigite O Nome Do Aluno [%d]\n\n",i); printf("Nome: "); fflush(stdin); gets(valuno[i].nome); printf("\nDigite O Endereco Do Aluno [%d]\n\n",i); printf("Endereco: "); fflush(stdin); gets(valuno[i].endereco); printf("\nDigite A Data De Nascimento Do Aluno [%d] No Formato <00/00/0000>\n\n",i); printf("Data De Nascimento: "); fflush(stdin); gets(valuno[i].data_de_nascimento); int j; for(j=0;j < 11; j++) { if(valuno[i].data_de_nascimento[2] != '/' && valuno[i].data_de_nascimento[5] != '/')//validção de data no formato correto { printf("ERRO! Digite novamente"); printf("\nDigite A Data De Nascimento Do Aluno [%d]No Formato <00/00/0000>\n\n",i); gets(valuno[i].data_de_nascimento); break; } else { printf("FORMATO CORRETO"); break; } } printf("\nDigite O Telefone Do Aluno [%d] No Formato <(DDD)00000-0000>\n\n",i); printf("Telefone Do Aluno: "); fflush(stdin); gets(valuno[i].telefone); for(j=0;j <15; j++)//validção de numero no formato correto { if(valuno[i].telefone[0] != '(' && valuno[i].telefone[4] != ')' && valuno[i].telefone[10] != '-') { printf("ERRO! Digite novamente"); printf("Digite O Telefone Do Aluno [i]: ",i); gets(valuno[i].telefone); break; } else { printf("FORMATO CORRETO"); break; } } printf("\nDigite A Primeira Nota Do Aluno [%d]\n\n",i); printf("Nota 1: "); scanf("%f",&valuno[i].nota1); printf("\nDigite A Segunda Nota Do Aluno [%d]\n\n",i); printf("Nota 2: "); scanf("%f",&valuno[i].nota2); } } void media_das_notas(struct aluno valuno[10])//media de notas { int i; for(i=1;i<11;i++) { float media; media = (valuno[i].nota1 + valuno[i].nota2) / 2; printf("Media: %.2f\n",media); } } void aprovado_ou_reprovado(struct aluno valuno[10])//se foi aprovado ou reprovado { int i; for(i=1;i<11;i++) { float media; media = (valuno[i].nota1 + valuno[i].nota2) / 2; if(media >= 6) { printf("\nAluno [%d] APROVADO\n",i); } else { printf("\nAluno [%d] REPROVADO\n",i); } printf("\nMedia do Aluno[%d]: %.2f\n",i,media); } } void mostrar_informacoes(struct aluno valuno[10])//mostrando informções de cadastro { int i; for(i=1;i<11;i++) { printf("-Listagem Do Aluno[%d]",i); printf("\n\nNome do Aluno[%d]: %s",i,valuno[i].nome); printf("\nEndereco do Aluno[%d]: %s",i,valuno[i].endereco); printf("\nData De Nascimento do Aluno[%d]: %s",i,valuno[i].data_de_nascimento); printf("\nTelefone do Aluno[%d]: %s",i,valuno[i].telefone); printf("\nNota 1 do Aluno[%d]: %.2f ",i,valuno[i].nota1); printf("\nNota 2 do Aluno[%d]: %.2f ",i,valuno[i].nota2); } } //Fim Do Codigo  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.