Ir para conteúdo
Fórum Script Brasil

Aristóteles

Membros
  • Total de itens

    69
  • Registro em

  • Última visita

Tudo que Aristóteles postou

  1. Exato vangodp! Eu não tinha reparado nesse detalhe. Aspas simples é para char mesmo. Do resto, incluir stdio.h e retirar conio.h, nessa parte: printf ("Digite seu nome: ");scanf("%s", &name); retirar o & comercial, pois a string é um array de caractere e o seu nome já é o índice para localizar. E corrigir a impressão dos tipos no printf: case '1': au=((sal)+(sal*0.1));printf ("O funcionário %s, de categoria %d terá um salário de %f\n",name,cat,au);break; case '2': au=((sal)+(sal*0.15));printf ("O funcionário %s, de categoria %d terá um salário de %f\n",name,cat,au);break; case '3': au=((sal)+(sal*0.25));printf ("O funcionário %s, de categoria %d terá um salário de %f\n",name,cat,au);break; case '4': au=((sal)+(sal*0.35));printf ("O funcionário %s, de categoria %d terá um salário de %f\n",name,cat,au);break; case '5': au=((sal)+(sal*0.50));printf ("O funcionário %s, de categoria %d terá um salário de %f\n",name,cat,au);break;default: printf ("Periodo invalido") Assim funcionará. Fui.
  2. Olhando não está evidente aonde está falhando, porém só de eu mudar o comando switch para um alinhamento de if e else if FUNCIONOU. Pode ser algum erro dentro do switch que não está evidente. veja só como funciona: #include <stdio.h> #include <stdlib.h> #include <locale.h> int main () { //setlocale(LC_ALL,"Portuguese"); char name[18]; float sal; int ct; printf ("Digite seu nome: "); scanf("%s", name); printf ("Se você se enquadra nas categorias:\n Categorias: A-C-F-H - DIGITE 1\n"); printf ("Categorias: B-D-E-I-J-T DIGITE 2\n"); printf ("Categorias: K-R - DIGITE 3\n"); printf ("Categorias:L-M-N-O-P-Q-S - Digite 4\n"); printf ("Categorias: U-V-X-Y-W-Z - Digite 5\n"); printf("\nDigite o número correspondente a categoria: "); scanf ("%d", &ct); printf ("\n\n"); printf ("Digite seu salário atual: "); scanf ("%f", &sal); if (ct==1) printf ("\n\nO funcionário %s, de categoria %d terá um salário de %f\n",name,ct,sal+(sal*0.1)); else if (ct==2) printf ("\n\nO funcionário %s, de categoria %d terá um salário de %f\n",name,ct,sal+(sal*0.15)); else if (ct==3) printf ("\n\nO funcionário %s, de categoria %d terá um salário de %f\n",name,ct,sal+(sal*0.25)); else if (ct==4) printf ("\n\nO funcionário %s, de categoria %d terá um salário de %f\n",name,ct,sal+(sal*0.35)); else if (ct==5) printf ("\n\nO funcionário %s, de categoria %d terá um salário de %f\n",name,ct,sal+(sal*0.50)); else printf ("Periodo invalido"); return 0 ; } E não use a biblioteca conio, já não faz parte do padrão C. É antiga, códigos obsoletos e etc.
  3. Aristóteles

    Programa C

    Apenas esse for precisa ser concertado para a contagem correta dos blocos, precisando de uma nova int para somar os blocos: for (i=1; soma_padrao<pedras_totais; i++) { p.andares++; /* Aqui o padrão é somado a quantidade anterior de blocos, como no padrão, o anterior é incrementado com o posterior*/ guarda_padrao = (i+(i+1)); soma_padrao = soma_padrao+guarda_padrao; padrao_bruto += soma_padrao; printf ("%d-", padrao_bruto); if (padrao_bruto > pedras_totais) { break; } else { p.qtpedras = padrao_bruto; } } Fui
  4. # include <stdio.h> # include <stdlib.h> //~~~~ declare aqui! int res; // ~~~~ int media (int num1,int num2,int num3){ int res; res = (num1+num2+num3)/3; return res; } int main () { int n1,n2,n3,resultado; printf("Digite um valor: "); scanf("%d",&n1); printf("Digite outro valor: "); scanf("%d",&n2); printf("Digite mais um valor: "); scanf("%d",&n3); resultado = media (n1,n2,n3); printf("A media aritmetica dos valores e: %d",resultado); return 0; }
  5. Não é o printf que não foi declarado, e sim a int res. A int res tem que ser declarada antes da função, é global.
  6. Aristóteles

    Programa C

    Gostei desse algoritmo aí, vou ajudar com o que eu consegui: Primeiramente, a cada andar que a pirâmide decresce (isso mesmo, é bem mais didático calcular de cima para baixo) existe um padrão de incremento de blocos: 1 3 5 7... (((1+3)+5)+7) ... Essa é a primeira coisa a se observar. A partir desse padrão o problema se resolve. Vamos ao que interessa, o código: #include <stdio.h> #include <stdlib.h> typedef struct Piramide { int qtpedras, andares, altura; } Piramide; int main () { Piramide p; int i, pedras_totais, pedras_sobraram, guarda_padrao, soma_padrao; do { printf ("Entre com a quantidade de pedras ~MAIOR do que 5~ : "); scanf ("%d", &pedras_totais); }while (pedras_totais<=5); /*Atribuindo valores que não atrapalharão o calculo. */ guarda_padrao=1, soma_padrao=1, p.andares=0, p.qtpedras=0; for (i=1; soma_padrao<pedras_totais; i++) { p.andares+=1; /* Aqui o padrão é somado a quantidade anterior de blocos, como no padrão, o anterior é incrementado com o posterior*/ guarda_padrao = ((i*2)+1); soma_padrao += guarda_padrao; if (soma_padrao > pedras_totais) { break; } else { p.qtpedras = soma_padrao; } } pedras_sobraram = pedras_totais - p.qtpedras; printf ("\nEssa piramide tem:\n"); printf ("\nAndares+terreo: %d", p.andares); printf ("\nAltura: %f metros\n", p.andares*1.5); if (pedras_totais == p.qtpedras) { printf ("não sobraram pedras!\n"); } else printf ("Sobraram %d pedras...\n", pedras_sobraram); return 0; }
  7. Aristóteles

    Programa C

    Entendi o algoritimo, mas para te ajudar preciso saber se é em C ou C++
  8. Esse aux5 não é necessário e nem faz sentido. Assim resolve o problema: #include <iostream> using namespace std; int main () { int i; for (i=101; i>=1; i--) { cout <<i<<"-"; } return 0; }
  9. #include <iostream> using namespace std; int main() { int numeros [10]; int i, p, backup; for (i=; i<10; i++) { cout << "Digite o numero de posicao " << i+1 << ": "<< endl; cin >> numeros[i]; } for (i=; i<10; i++) { for (p=i+1; p<10; p++) { if (numeros[i]>numeros[p]) { backup = numeros[i]; numeros[i] = numeros[p]; numeros[p] = backup; p = i; } } } cout << "\nNumero maior: " << numeros[9] << endl; cout << "Numero menor: " << numeros[] << endl; cout << "Numero intermediario: " << numeros [(10/2)-1]<< endl; return ; } Ocorreu erro na hora da postagem, o certo é: cout << "Numero menor: " << numeros[] << endl; numeros[0]. O code está bugando adm. Abraços.
  10. A função de calculo de fatorial do codigo acima está errada, o certo seria: for (i = numeros[0]-1; i>=1; i--) { if (i==numeros[0]-1) { fatorial = numeros[0]*i; } else { fatorial = fatorial * i; } } Ou então um modo mais genérico, mas inverte a ordem de cálculo, tal como vemos no código abaixo: #include <stdio.h> int main() { int fat, n; printf("Insira um valor para o qual deseja calcular seu fatorial: "); scanf("%d", &n); for(fat = 1; n > 1; n = n - 1) fat = fat * n; printf("\nFatorial calculado: %d", fat); return 0; }
  11. #include <stdio.h> #include <stdlib.h> /*Escreva um programa em C que leia 15 numeros inteiros quaisquer, informados pelo usuario e: a- A cada numero informado diga se ele é par/impar e primo/não-primo; b- Antes de encerrar diga qual a media aritmetica de cada numero informado, quantos numeros eram primos, qual o maior numero informado, qual o fatorial do menor numero informado, quantos multiplos de 5 foram informados, quantos vezes o numero 22 foi informado.*/ int j; int par, primo; /*função geral que calcula quantas vezes aparece o 22, quantos primos, quantos multiplos de cinco e se é par/impar primo/não-primo*/ int ParImparPrimo (int n, int *primos, int *info22, int *mult5) { if (n == 22) *info22 = *info22 + 1; if ((n%5)==0) *mult5 = *mult5 + 1; if ((n%2) != 0) { printf ("%d eh impar\n", n); par = 0; } else { printf ("%d eh par\n", n); par = 1; } if (n>=2) { for (j=2; j<=n; j++) { if ((n%j) == 0 && (n!=j)) { primo = 0; break; } primo = 1; } if (primo == 1) { printf ("%d eh primo\n\n", n); *primos = *primos + 1; } if (primo == 0) { printf ("%d nao eh primo\n\n", n); } } if (n<2) { printf ("\n\n~~~~~O número %d eh menor do que 2~~~~~\n\n", n); } return *primos, *mult5, *info22; } int main() { int primos = 0; int info22 = 0; int mult5 = 0; int backup; int mediarit = 0; int fatorial=0; int numeros [15]; int i, p; for (i=0; i<15; i++) { printf ("Digite o número %d de 15: ", i+1); scanf ("%d", &numeros[i]); printf ("\n\n"); ParImparPrimo (numeros[i], &primos, &info22, &mult5); } //checa o menor e o maior número. O menor será colocado no primeiro índice do array, e o maior no último. for (i=0; i<15; i++) { for (p=i+1; p<15; p++) { if (numeros[i]>numeros[p]) { backup = numeros[i]; numeros[i] = numeros[p]; numeros[p] = backup; p = i; } } } //calcula média aritmética for (i=0; i<15; i++) { mediarit = mediarit + numeros [i]; } mediarit = mediarit / 15; // calcula fatorial do menor número for (i = (numeros[0] - 1); i>=1; i--) { fatorial = fatorial + (numeros[0]*i); } printf ("\nA media aritmetica dos numeros informados eh: %d\n", mediarit); printf ("A quantidade de numeros primos eh: %d\n", primos); printf ("O maior numero informado eh: %d\n", numeros[14]); printf ("O menor numero informado eh: %d e o seu fatorial eh: %d\n", numeros[0], fatorial); printf ("Existem %d multiplos de 5\n", mult5); printf ("O numero 22 foi informado %d vezes\n", info22); return EXIT_SUCCESS; } Dê uma estudada nesse código. Abraços.
  12. http://www.cprogressivo.net/2012/11/A-funcao-printf-Caracteres-Especais.html :D #include <stdio.h> #include <stdlib.h> int main () { //utilize a barra invertida e enfatize o caractere digitando duas vezes. printf ("imprimindo o \%%"); return 0; } Quando se usa setlocale (LC_ALL, "Portuguese"), a localidade do computador é mudada para ptbr, por isso a sintaxe dos números reais muda para vírgula 2,2 e não 2.2. Mas isso nem é tão problemático assim.
  13. Está gerando apenas 0-99 números aleatórios. Pois no teste lógico (i < 100) quando i == 100 não é executada a tarefa, o certo seria i <= 100, para executar mais uma vez. O resto está bom.
  14. Padrão de função para anular um produto pelo nome utilizando comparação de strings: printf ("\nPara excluir (anular) um produto, digite o nome EXATO do mesmo: "); scanf ("%s", excluir); for (i = 0; i <= vetor; i++) { if (strcmp (estoque[i].nome, excluir) == 0) { strcpy (estoque[i].nome, "0"); strcpy (estoque[i].marca, "0"); estoque [i].quantidade = 0; estoque [i].valor = 0; printf ("\nProduto anulado!\n"); (...) Para consultar produto pelo nome: printf ("Digite o nome EXATO do produto para ver seus detalhes: "); scanf ("%s", informa); for (i = 0; i <= vetor; i++) { if (strcmp (estoque[i].nome, informa) == 0) { printf ("\n ~~~~~ EXIBINDO O PRODUTO %s ~~~~~", estoque[i].nome); printf ("\nestoque [%d]\n", i); printf ("Nome: %s\nMarca: %s\n", estoque[i].nome, estoque[i].marca); printf ("Quantidade: %d\n Valor: %f\n", estoque[i].quantidade, estoque[i].valor); (...) Saiba que é possível simplificar muito o seu programa. E não use a biblioteca conio.h xD, abraços
  15. Se você declara um array do tipo estrutura, você precisa usar a notaçao de colchetes para salvar informações nas variáveis. Exemplo: estoque[1].quantidade = 3; (...) De acordo com o seu algoritmo, fiz um programa bem simples, no qual consigo usar as funções de comparar as strings para informar se há produto com o mesmo nome cadastrado, para informar detalhes do produto pelo seu nome e para anular informações da variável struct (excluir produto) pelo seu nome. Segue o código completo: #include <stdio.h> #include <stdlib.h> #include <string.h> struct produto { char nome [20]; char marca [20]; int quantidade; float valor; }; int main() { int i, j, p; char excluir [20], informa [20]; struct produto estoque [1]; printf ("\n ~~~~~ INCLUINDO PRODUTOS NO ESTOQUE ~~~~~"); for (i = 0; i <= 1; i++) { printf ("\nestoque [%d]\n", i); printf ("Digite o nome do produto: \n"); scanf ("%s", estoque[i].nome); //aqui o código que verifica strings iguais para informar produto repetido é iniciado: if (i != 0) { for (p = 0; p < i; p++) { if (strcmp (estoque[i].nome, estoque [p].nome) == 0) printf ("\n!!!!!!!!Produto com o mesmo nome encontrado!!!!!!!!!\n"); } } printf ("Digite a marca do produto: \n"); scanf ("%s", estoque[i].marca); printf ("Digite a quantidade do produto: \n"); scanf ("%d", &estoque[i].quantidade); printf ("Digite o valor do produto: \n"); scanf ("%f", &estoque[i].valor); } for (i = 0; i <= 1; i++) { printf ("\n ~~~~~ EXIBINDO OS PRODUTOS DO ESTOQUE ~~~~~"); printf ("\nestoque [%d]\n", i); printf ("Nome: %s\nMarca: %s\n", estoque[i].nome, estoque[i].marca); printf ("Quantidade: %d\n Valor: %f\n", estoque[i].quantidade, estoque[i].valor); } printf (" ------ Deseja excluir algum produto? Digite 1 para SIM e outro numero para NAO: "); scanf ("%d", &j); if (j == 1) { printf ("\n\nOs nomes existentes de produtos são:\n\n"); for (i = 0; i <=1; i++) { printf ("%s\n", estoque[i].nome); } printf ("\nPara excluir (anular) um produto, digite o nome EXATO do mesmo: "); scanf ("%s", excluir); //aqui o código para excluir (anular) o produto pelo nome é iniciado: for (i = 0; i <= 1; i++) { if (strcmp (estoque[i].nome, excluir) == 0) { strcpy (estoque[i].nome, "0"); strcpy (estoque[i].marca, "0"); estoque [i].quantidade = 0; estoque [i].valor = 0; printf ("\nProduto anulado!\n"); } } } for (i = 0; i <= 1; i++) { printf ("\n ~~~~~ EXIBINDO OS PRODUTOS DO ESTOQUE ~~~~~"); printf ("\nestoque [%d]\n", i); printf ("Nome: %s\nMarca: %s\n", estoque[i].nome, estoque[i].marca); printf ("Quantidade: %d\n Valor: %f\n", estoque[i].quantidade, estoque[i].valor); } printf ("\n ------ Deseja ver informacoes de um produto particular? Digite 2 para SIM e outro numero para NAO: \n"); scanf ("%d", &j); //aqui o código para mostrar informações de um produto em particular é iniciado: if (j == 2) { printf ("Digite o nome EXATO do produto para ver seus detalhes: "); scanf ("%s", informa); for (i = 0; i <= 1; i++) { if (strcmp (estoque[i].nome, informa) == 0) { printf ("\n ~~~~~ EXIBINDO O PRODUTO %s ~~~~~", estoque[i].nome); printf ("\nestoque [%d]\n", i); printf ("Nome: %s\nMarca: %s\n", estoque[i].nome, estoque[i].marca); printf ("Quantidade: %d\n Valor: %f\n", estoque[i].quantidade, estoque[i].valor); } } } printf ("\nFIM DO PROGRAMA\n"); return EXIT_SUCCESS; } Nas operações de informar produto repetido, informar produto pelo nome e excluir produto pelo nome é utilizado o mesmo padrão de manipulação de strings. Abraços!
  16. Na função incluir () eu vejo uma pequena falha, você salva todos os cadastros na mesma variável, e não diz em qual referência do array de struct você salva os dados. (estoque[x].nome). Para acusar produto com o mesmo nome você pode usar uma função da biblioteca <string.h> para comparar strings, que retorna 0 se forem iguais. A função é strcmp (): if (strcmp (string1 , string2 ) == 0) printf ( ‘‘ S t r i n g s i g u a i s \n ’’ ) ; else printf ( ‘‘ S t r i n g s d i f e r e n t e s \n ’’ ) ; O mesmo pode ser feito para excluir um produto pelo nome, tem que criar uma função que compara strings com o nome do produto de cada local do vetor. Depois posto uns códigos. Abraços.
  17. Já foi resolvido, então ok. Mas posto a versão revisada do meu código, pois o primeiro ficou muito ruim. xD #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int cartela [24], i, j, p, q = 0; srand(time(NULL)); cartela [0] = rand() % 99; for (i = 0; i <= 24; i++) { cartela [i] = rand() % 99; for (j = i; j > 0; j--) { if (cartela [i - j] == cartela [i] && i != 0) { cartela [i] = rand() % 99; j = i + 1; } } } for (p = 0; p <= 24; p++) { if (q == 4) { printf (" - %d - \n", cartela [p]); q = 0; } else { printf (" - %d - ", cartela [p]); q++; } } return 0; } falou.
  18. Segue o problema: Faça um programa para gerar automaticamente números entre 0 e 99 de uma cartela de bingo. Sabendo que cada cartela deverá conter 5 linhas e 5 números, gere estes dados de modo a não ter números repetidos dentro da cartela. Se o importante é gerar números aleatórios para preencher uma cartela de bingo (sem repetir números), usar vetores simplifica a situação, e o cheque-mate é a impressão dos números na tela. Vamos lá: #include <stdio.h> #include <stdlib.h> int main() { srand(time(NULL)); int cartela [24]; int confere [24]; int i, e, o; for (i =0; i < 24; i++) { cartela [i] = rand() % 99; for (e = 0; e < 24; e++) { confere [e] = cartela [i]; while (confere [e] < 0) { for (o = confere [e]; o != 0; o--) { while (cartela [i] == confere [e]) { cartela [i] = rand() % 99; } } confere [e] = confere [e - 1]; } } } printf ("---------------------------------"); printf ("\n [%d] - [%d] - [%d] - [%d] - [%d] \n", cartela [0], cartela [1], cartela [2], cartela [3], cartela [4]); printf ("\n [%d] - [%d] - [%d] - [%d] - [%d] \n", cartela [5], cartela [6], cartela [7], cartela [8], cartela [9]); printf ("\n [%d] - [%d] - [%d] - [%d] - [%d] \n", cartela [10], cartela [11], cartela [12], cartela [13], cartela [14]); printf ("\n [%d] - [%d] - [%d] - [%d] - [%d] \n", cartela [15], cartela [16], cartela [17], cartela [18], cartela [19]); printf ("\n [%d] - [%d] - [%d] - [%d] - [%d] \n", cartela [20], cartela [21], cartela [22], cartela [23], cartela [24]); printf ("---------------------------------"); return 0; } Funfou?
×
×
  • Criar Novo...