Ir ao conteúdo
  • Cadastre-se

immoraesz

Membro Pleno
  • Posts

    21
  • Cadastrado em

  • Última visita

Reputação

7
  1. O código estava errado (burro de mais). #include <stdio.h> #define FIL 5 #define PROD 10 typedef struct{ char nome[50]; int maxprodutos; int quantprodutos[PROD]; }Filiais; void ReajustaPreco(Filiais filial[], int tam, int k){ int j, estoque = 0; float percentual = 0; for(j = 0; j < FIL; j++){ estoque = filial[j].quantprodutos[k]; percentual = (estoque * 100) / filial[j].maxprodutos; if(percentual > 90){ printf("%.1f%% de ocupacao do estoque da filial %s", percentual, filial[j].nome); printf("O estoque da filial esta quase completo!\n"); } else{ printf("%.1f%% de ocupacao do estoque da filial %s", percentual, filial[j].nome); } } } int main(){ Filiais filial[FIL]; int j, k; for(j = 0; j < FIL; j++){ fgets(filial[j].nome,50,stdin); scanf("%d", &filial[j].maxprodutos); for(k = 0; k < PROD; k++){ scanf("%d", &filial[j].quantprodutos[k]); } getchar(); } ReajustaPreco(filial,FIL,k); return 0; } O problema é que o calculo do percentual não está dando certo.
  2. Uma rede de lojas possui 5 filiais. Cada uma das filiais comercializa 10 produtos. Você deve elaborar um algoritmo para auxiliar no gerenciamento do estoque de produtos de cada filial. Para resolver esta questão, deve-se fazer: a) Defina constantes para representar o número total de filiais e o número de produtos comercializados. b) Crie uma estrutura para representar uma filial da loja. Essa estrutura deve conter o nome da filial (string); um número inteiro representando a capacidade de estoque da filial, ou seja, a quantidade máxima de produtos que essa filial pode ter em estoque (considerando todos os produtos); um vetor para armazenar a quantidade de unidades de cada produto presentes no estoque dessa filial. c) Faça uma função que receba como parâmetro uma estrutura do tipo filial. A função deve determinar e imprimir o percentual de ocupação do estoque de cada filial em relação à capacidade máxima. Caso a quantidade de itens em estoque esteja acima de 90% da capacidade, a função deve mostrar uma mensagem de alerta informando que o estoque está quase completo. d) Elabore um programa principal que crie um vetor de estruturas do tipo filial para armazenar as informações referentes às 5 filiais da loja e leia todos os dados para cada uma. Em seguida, o programa deve chamar a função do item c para cada filial. Quando eu compilo meu código está aparecendo "Error Segmentation fault (core dumped)" e eu não sei qual o motivo. #include <stdio.h> #include <string.h> #define FIL 5 #define PROD 10 typedef struct{ char nome[50]; int maxprodutos; int quantprodutos[PROD]; } Filiais; void ReajustaPreco(Filiais filial[], int tam, int i){ int j, estoque; float percentual; for(j=0; j<FIL; j++){ estoque = filial[j].quantprodutos[i]; percentual = (estoque*100)/(float)filial[j].maxprodutos; if(percentual<5){ printf("Produto %d ocupa %.1f%% na filial %s", i, percentual, filial[j].nome); printf("Estoque do produto esta baixo na filial!\n"); } else{ printf("Produto %d ocupa %.1f%% na filial %s", i, percentual, filial[j].nome); } } } int main(){ Filiais filial[FIL]; int j, k, i; for(j=0; j<FIL; j++){ printf("Digite o nome da filial: \n"); fgets(filial[j].nome,50,stdin); filial[j].nome[strcspn(filial[j].nome, "\n")] = 0; printf("Digite o maximo de produtos: \n"); scanf("%d", &filial[j].maxprodutos); for(k=0; k<PROD; k++){ printf("Digite o numero de produtos: \n"); scanf("%d", &filial[j].quantprodutos[k]); } getchar(); } scanf("%d", &i); ReajustaPreco(filial,FIL,i); return 0; }
  3. Solucionei o problema. #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ char nome[100]; char local[100]; int valor; }ingresso; int main(void){ int valor1, valor2, valor3, valor4; ingresso a1, a2, a3, a4; fgets(a1.nome, 100, stdin); a1.nome[strcspn(a1.nome, "\n")] = 0; fgets(a1.local, 100, stdin); scanf("%d%*c", &a1.valor); fgets(a2.nome, 100, stdin); a2.nome[strcspn(a2.nome, "\n")] = 0; fgets(a2.local, 100, stdin); scanf("%d%*c", &a2.valor); fgets(a3.nome, 100, stdin); a3.nome[strcspn(a3.nome, "\n")] = 0; fgets(a3.local, 100, stdin); scanf("%d%*c", &a3.valor); fgets(a4.nome, 100, stdin); a4.nome[strcspn(a4.nome, "\n")] = 0; fgets(a4.local, 100, stdin); scanf("%d%*c", &a4.valor); valor1 = a1.valor; valor2 = a2.valor; valor3 = a3.valor; valor4 = a4.valor; if(valor1 <= valor2){ printf("Mais Barato: %s (R$ %d.00)\n", a1.nome, a1.valor); } else if(valor2 <= valor4){ printf("Mais Barato: %s (R$ %d.00)\n", a2.nome, a2.valor); } else if(valor3 <= valor2){ printf("Mais Barato: %s (R$ %d.00)\n", a3.nome, a3.valor); } else if(valor4 <= valor1){ printf("Mais Barato: %s (R$ %d.00)\n", a4.nome, a4.valor); } if(valor1 >= valor3){ printf("Mais Caro: %s (R$ %d.00)", a1.nome, a1.valor); } else if(valor2 >= valor1){ printf("Mais Caro: %s (R$ %d.00)", a2.nome, a2.valor); } else if(valor3 >= valor1){ printf("Mais Caro: %s (R$ %d.00)", a3.nome, a3.valor); } else if(valor1 >= valor3){ printf("Mais Caro: %s (R$ %d.00)", a4.nome, a4.valor); } return 0; }
  4. @Lucca Rodrigues cara, o programa recebe os valores (nome, local e valor) automaticamente. A compilação é automática, no meu caso, se eu colocar os printf vai estar errado. Eu sei a necessidade dele em um programa que não gera os dados automaticamente, pois realmente, ninguém é adivinha. O erro do meu programa é que os condicionais estão sendo ignorados por alguma razão. Com isso, não recebo qual é o mais barato e mais caro.
  5. O programa recebe nome, local e valor do ingresso de 4 eventos e deve retornar qual é o evento mais barato e o mais caro. Contudo, o programa não está retornando nenhum dos printf e não sei o motivo. #include <stdio.h> #include <stdlib.h> #define N 4 typedef struct{ char nome[50]; char local[50]; int valor; }ingresso; int main(void){ ingresso a1, a2, a3, a4; int valor1, valor2, valor3, valor4; fgets(a1.nome, 50, stdin); fgets(a1.local, 50, stdin); scanf("%d", &a1.valor); fgets(a2.nome, 50, stdin); fgets(a2.local, 50, stdin); scanf("%d", &a2.valor); fgets(a3.nome, 50, stdin); fgets(a3.local, 50, stdin); scanf("%d", &a3.valor); fgets(a4.nome, 50, stdin); fgets(a4.local, 50, stdin); scanf("%d", &a4.valor); valor1 = a1.valor; valor2 = a2.valor; valor3 = a3.valor; valor4 = a4.valor; if(valor1 < valor2 && valor3 && valor4){ printf("Mais Barato: %s (R$%d.00)", a1.nome, a1.valor); } else if(valor2 < valor1 && valor3 && valor4){ printf("Mais Barato: %s (R$%d.00)", a2.nome, a2.valor); } else if(valor3 < valor1 && valor2 && valor4){ printf("Mais Barato: %s (R$%d.00)", a3.nome, a3.valor); } else if(valor4 < valor1 && valor2 && valor3){ printf("Mais Barato: %s (R$%d.00)", a4.nome, a4.valor); } if(valor1 > valor2 && valor3 && valor4){ printf("Mais Caro: %s (R$%d.00)", a1.nome, a1.valor); } else if(valor2 > valor1 && valor3 && valor4){ printf("Mais Caro: %s (R$%d.00)", a2.nome, a2.valor); } else if(valor3 > valor1 && valor2 && valor4){ printf("Mais Caro: %s (R$%d.00)", a3.nome, a3.valor); } else if(valor4 > valor1 && valor2 && valor3){ printf("Mais Caro: %s (R$%d.00)", a4.nome, a4.valor); } return 0; }
  6. Fazer um programa para ler uma string e transferir as consoantes para um vetor e as vogais para outro. Ao final, imprima cada um dos vetores. #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <string.h> int main(){ char frase[20], vogal[20], consoante[20]; int j, k, tam, v = 0, c = 0; fflush(stdin); fgets(frase, 20, stdin); tam=strlen(frase); for(j=0;j<tam;j++){ if(toupper(frase[j])=='A'||toupper(frase[j])=='E'|| toupper(frase[j])=='I'||toupper(frase[j])=='O'|| toupper(frase[j])=='U') { vogal[v++] = frase[j];/*acessa a posição e depois incrementa a variável*/ } else{ k=(int)frase[j]; /* pega o código ascii do caractere */ if( k > 64 || k < 91 ||/* letras maiúsculas */ k > 96 || k < 123 )/* letras minúsculas*/ consoante[c++]=frase[j]; } } vogal[v++]='\0'; consoante[c++]='\0'; printf("Vetor de vogais: "); for(v=0;v<tam;v++) { if(vogal[v]=='\0')break; printf("%c",vogal[v]); } printf("\nVetor de consoantes: "); for(c=0;c<tam;c++) { if(consoante[c]=='\0')break; printf("%c",consoante[c]); } return 0; } O programa realiza tudo certinho, mas se for mais de uma palavra (ex. Hello World) fica: Vetor de vogais: eoo Vetor de consoantes: Hll Wrld O vetor das consoantes deveria ficar: HllWrld (sem o espaço entre as palavras). Help.
  7. A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, armazenando o salário e o número de filhos de cada entrevistado. A prefeitura deseja saber: a. média do salário da população; b. média do número de filhos; c. percentual de pessoas com salário até R$1000,00; Faça um programa que leia os dados e, ao final, exiba os resultados solicitados. A leitura de dados será encerrada com a entrada de um salário negativo. #include <stdio.h> #include <stdlib.h> int main(){ int i = 0, j = 0, filhos = 0, somaF = 0; float salario = 0, somaS = 0, mediaS = 0, mediaF = 0, percentual = 0, somaP = 0; while(salario >= 0){ scanf("%f", &salario); scanf("%d", &filhos); if(salario <= 1000){ somaP = somaP + salario; i++; } somaS = somaS + salario; somaF = somaF + filhos; j++; } mediaS = somaS / j; mediaF = somaF / j; percentual = ((i * 100) / (j)); printf("%.2f\n", mediaS); printf("%.2f\n", mediaF); printf("%.2f%%", percentual); return 0; } Acredito que estou fazendo somente a acumulação e contas erradas. Preciso de ajuda para arrumar esse programa.
  8. @JorgeGus Valeu, patrão! Salvou!
  9. @.if Já tentei substituir o fgets(vendedor, 20, stdin) por gets(vendedor), mas o programa da erro assim.
  10. O programa está correto, porém no printf que mostra o nome do vendedor + salário com adição do bônus está tendo uma quebra de linha inesperada. Deveria aparecer: O salario de Amanda sera de R$ 75000.00 Está aparecendo: O salario de Amanda sera de R$ 75000.00 Como resolvo esse problema? #include <string.h> int main(){ float salario, bonus, total, adicional; char vendedor[20]; fgets( vendedor, 20, stdin); scanf("%f", &salario); scanf("%f", &bonus); adicional = ((bonus * 15) / 100); total = salario + adicional; printf("O salario de %s sera de R$ %.2f", vendedor, total); return 0; }
  11. @Alan Flanklyn Obrigado, meu patrão! Salvou!
  12. Como faço para imprimir a última letra de uma string? Só consigo imprimir a primeira ou todas as letras da palavra em questão. Usando "printf("%c", str[i]);" dentro do for, eu imprimo todas as letras. Fora do for (do jeito que está), imprime só a primeira letra e no "Ultimo caractere" imprime a primeira letra novamente em vez da última. #include <stdio.h> #include <string.h> int main(){ char str[20]; int i; printf("Digite uma palavra: "); fgets(str,20,stdin); for(i = 0; str[i] != '\0'; i++){ } printf("Primeiro caractere: %c\n",str[0]); printf("Ultimo caractere: %c\n",str['\0']); return 0; }
  13. O novo prédio da Sociedade Brasileira de Computação (SBC) possui 3 andares. Em determinadas épocas do ano, os funcionários da SBC bebem muito café. Por conta disso, a presidência da SBC decidiu presentear os funcionários com uma nova máquina de expresso. Esta máquina deve ser instalada em um dos 3 andares, mas a instalação deve ser feita de forma que as pessoas não percam muito tempo subindo e descendo escadas. Cada funcionário da SBC bebe 1 café expresso por dia. Ele precisa ir do andar onde trabalha até o andar onde está a máquina e voltar para seu posto de trabalho. Todo funcionário leva 1 minuto para subir ou descer um andar. Como a SBC se importa muito com a eficiência, ela quer posicionar a máquina de forma a minimizar o tempo total gasto subindo e descendo escadas. Sua tarefa é ajudar a diretoria a posicionar a máquina de forma a minimizar o tempo total gasto pelos funcionários subindo e descendo escadas. Entrada A entrada consiste em 3 números, A1 , A2 , A3 (0 ≤ A1 , A2 , A3 ≤ 1000), um por linha, onde Ai representa o número de pessoas que trabalham no i-ésimo andar. Saída Seu programa deve imprimir uma única linha, contendo o número total de minutos a serem gastos com o melhor posicionamento possível da máquina. #include <stdio.h> #include <math.h> int main(){ int funcionarios1, funcionarios2, funcionarios3; int total1, total2, total3, total4, andar = 0; scanf("%d", &funcionarios1); scanf("%d", &funcionarios2); scanf("%d", &funcionarios3); if(andar = 1){ total1 = funcionarios3 * 0; total2 = funcionarios2 * 1; total3 = funcionarios3 * 2; total4 = total1 + total2 + total3; printf("%d", total4); } else if(andar = 2){ total1 = funcionarios3 * 1; total2 = funcionarios2 * 0; total3 = funcionarios3 * 1; total4 = total1 + total2 + total3; printf("%d", total4); } else if(andar = 3){ total1 = funcionarios3 * 2; total2 = funcionarios2 * 1; total3 = funcionarios3 * 0; total4 = total1 + total2 + total3; printf("%d", total4); } return 0; } Alguém consegue arrumar esse programa? Acho que o erro está na parte do "andar".
  14. Para resolver este exercício, siga os passos abaixo: E = 1 + 1 / 1! + 1 / 2! + 1 / 3! + ... + 1 / (k-1)! + 1 / k! 1. A função deve receber um valor real x e calcule o valor de E. x representa o valor máximo (tolerância) para a diferença entre dois termos consecutivos. Isto é, o cálculo do valor de E deve ser computado até que |1/k! – 1/(k+1)! | < x . Imprima cada termo gerado e o resultado de E ao final. 2. Escreva uma função principal (main) que leia um valor real x e chame a função desenvolvida no item anterior. ex: 0.5 1 + 1/1! + 1/2! = 2.500 Não faço ideia de como devo fazer o fatorial de um número decimal e de como colocar a conta (1 +1/1! + 1/2! = ) junto com a resposta para cada tipo de exemplo. Tudo que eu consegui foi isso aqui: int main(){ float soma = 0, fat = 0, num; int i; scanf("%F", &num); for(i = 0; i < num; i++){ fat = fat * i; soma = soma + (1 / fat); } printf("E = %.3f", soma); return soma; }
  15. Estou tentando fazer com vetores agora. Porém, somente com alguns exemplos da certo. #include <stdio.h> #include <stdlib.h> int main (){ int vet [ 10 ], i = 0, maior, menor, x, y; scanf("%d", &vet [1]); for ( i = 2; i < 10; ++i ){ scanf ( "%d", &vet [ i ] ); if ( vet [ i ] > maior ){ maior = vet [ i ]; x = i; } if ( vet [ i ] < menor ){ menor = vet [ i ]; y = i; } } printf ( "O %do elemento é o maior.\n", x); printf ( "O %do elemento é o menor.", y ); return 0; }

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