-
Posts
80 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por jcgs98
-
-
#include <stdio.h> #define X 200 void zeraI (int *v, int n){ int i; for (i=0;i<n;i++){ v[i]=0; } } void zeraF (float *v, int n){ int i; for (i=0;i<n;i++){ v[i]=0; } } int buscaI (int *v, int n, int chv){ for (int i=0;i<n;i++){ if (v[i]==chv) return i; } return -1; } float buscaF (float *v, int n, int chv){ for (int i=0;i<n;i++){ if (v[i]==chv) return i; } return -1; } int buscaI_ (int *v, int n, int chv){ for (int i=0;i<n;i++){ if (v[i]==chv) return v[i]; } return -1; } float buscaF_ (float *v, int n, int chv){ for (int i=0;i<n;i++){ if (v[i]==chv) return v[i]; } return -1; } int carrega_prods (int *v1, float *v2, int n){ v1[0]=203;v2[0]=110.0; v1[1]=120;v2[1]=03.0; v1[2]=340;v2[2]=25.0; v1[3]=220;v2[3]=70.0; return 4; } int carrega_lojas (int *v1, int *v2, int n){ v1[0]=20;v2[0]=1; v1[1]=8 ;v2[1]=2; v1[2]=34;v2[2]=2; v1[3]=22;v2[3]=5; v1[4]=14;v2[4]=3; v1[5]=52;v2[5]=4; v1[6]=16;v2[6]=6; v1[7]=55;v2[7]=4; v1[8]=41;v2[8]=5; v1[9]=28;v2[9]=6; } int carrega_est (float *v1){ v1[0]=10.0; v1[1]=1.2; v1[2]=3.4; v1[3]=9.3; v1[4]=6.0; v1[5]=3.1; } int main (void){ int i, cod, qtd, loj,z; int produto,quantidade; float c, d, imposto, valor; int vPro[4], vLoj[10], vCod[10],viAuxa[X],viAuxb[X],viAuxc[X]; float vVal[4],vImp[6],fat[10],vfAuxb[X],vfAuxa[X]; zeraI (vPro,4); zeraF (vVal,4); zeraF (vfAuxa,X); zeraF (vfAuxb,X); zeraI (viAuxa,X); zeraI (viAuxb,X); zeraI (viAuxc,X); zeraF (fat,10); zeraI (vLoj,10); zeraI (vCod,10); zeraF (vImp,6); carrega_prods (vPro,vVal,4); carrega_lojas (vLoj,vCod,10); carrega_est (vImp); for (i=0;i<10;i++){ printf("\nLoja.....: %3d / Estado...: %d / Imposto..: %.2f",vLoj[i],vCod[i],vImp[vCod[i]-1]); } for (i=0;i<4;i++){ printf("\nProduto..: %d / Valor....: R$%.2f",vPro[i],vVal[i]); } for(i=0;i<X;i++) { printf("\n\n\nCodigo do produto...............: "); scanf("%d",&produto); valor=vVal[buscaI(vPro,4,produto)]; printf("\nValor do produto................: R$ %.2f",valor); printf("\nQuantidade......................:"); scanf("%d",&quantidade); printf("\nValor da compra ................: R$ %.2f",valor*quantidade); printf("\nLoja............................:"); scanf("%d",&viAuxc[i]); imposto=vImp[vCod[buscaI(vLoj,10,viAuxc[i])]-1]; printf("\nValor do Imposto no estado %d...: %.2f",buscaI_(vLoj,10,viAuxc[i]),imposto); c=(valor*quantidade)/(1+(imposto/100)); printf("\nValor sem imposto...............: %.2f",c); vfAuxa[i]=c; } for(i=0;i<X;i++){ printf("\nLoja: %d / Total: %.2f",viAuxc[i],vfAuxa[i]); } int vlojas [10]; float vTot[10]; for (i=0;i<10;i++) { vTot[i]=0; vlojas [i]=0; } for (i=0;i<X;i++){ vlojas [i]=buscaI(vLoj,X,viAuxc[i]); } for (i=0;i<10;i++) { if (vfAuxa[i]!=0) vTot[vlojas[i]]+=vfAuxa[i]; } for (i=0;i<10;i++) { printf("\nFaturamento liquido da loja %d..: R$ %.2f",vlojas [i],vTot[i]); } return 0; }
Não está funcionando a totalização.
-
14 horas atrás, Flávio Pedroza disse:
Acredito que esta solução está funcionando. Basta você adicionar a implementa para tratamento de códigos inexistentes (quando busca retornar <0). Atente também para o fato da função "zera" aceitar apenas vetores do tipo float. Portanto, não pode usá-la para vetores do tipo int;
int main (void){ int i, cod, qtd, loj; int vPro[4], vLoj[10], vCod[10], vEst[10]; float vVal[4],vImp[6]; //zera (vPro,4); zera (vVal,4); //zera (vLoj,10); //zera (vCod,10); zera (vImp,6); carrega_prods (vPro,vVal,4); carrega_lojas (vLoj,vEst,10); carrega_est (vImp); while (1) { printf("\nCodigo do produto....:"); scanf("%d",&cod); if (cod < 0) break; i = busca (vPro, 4, cod); float preco = vVal[i]; //Preco do produto printf ("\nPreco:%f", preco); printf("\nQuantidade...........:"); scanf("%d",&qtd); printf("\nLoja.................:"); scanf("%d",&loj); i = busca (vLoj, 10, loj); printf ("\nLoja:%d", vLoj[i]); float imposto = vImp[vEst[i]-1]; // imposto printf ("\nImposto:%f", imposto); float faturamento = preco*qtd * (1 - (imposto/100)); printf ("\nFaturamento.......:%f", faturamento); } return 0; }
Eu modifiquei para aceitar float e int, fiz zeraI e zeraF;
Não poderia usar o "while(1)" porque no enunciado o número de entradas é limitado em 200.
Obrigado pela ajuda!
- 1
-
-
-
-
Boa tarde!
Essa tá f...
Comecei assim:
#include <stdio.h> #define X 200 void zera (float *v, int n){ int i; for (i=0;i<n;i++){ v[i]=0; } } int busca (int *v, int n, int chv){ for (int i=0;i<n;i++){ if (v[i]==chv) return i; } return -1; } int carrega_prods (int *v1, float *v2, int n){ v1[0]=203; v2[0]=10.0; v1[1]=120; v2[1]=3.0; v1[2]=340; v2[2]=25.0; v1[3]=220; v2[3]=70.0; return 4; } int carrega_lojas (int *v1, int *v2, int n){ v1[0]=20; v2[0]=1; v1[1]=8; v2[1]=2; v1[2]=34; v2[2]=2; v1[3]=22; v2[3]=5; v1[4]=14; v2[4]=3;v1[5]=52; v2[5]=4; v1[6]=16; v2[6]=6;v1[7]=55; v2[7]=4;v1[8]=41; v2[8]=5;v1[9]=28; v2[9]=6; } int carrega_est (float *v1){ v1[0]=2.0; v1[1]=1.2; v1[2]=3.4; v1[3]=9.3; v1[4]=6.0; v1[5]=3.1; } int main (void){ int i, cod, qtd, loj; int vPro[4], vLoj[10], vCod[10]; float vVal[4],vImp[6]; zera (vPro,4); zera (vVal,4); zera (vLoj,10); zera (vCod,10); zera (vImp,6); carrega_prods (&vPro,&vVal,4); carrega_lojas (&vLoj,&vEst,10); carrega_est (&vImp); printf("\nCodigo do produto....:"); scanf("%d",&cod); while (cod>=0&&i<X){ for (i=0;i<X;i++){ busca (vPro, 4, cod); printf("\nQuantidade...........:"); scanf("%d",&qtd); printf("\nLoja.................:"); scanf("%d",&loj); printf("\nCodigo do produto....:"); scanf("%d",&cod); } } return 0; }
- 1
-
Isso. Dei mole.
adicionado 2 minutos depois3 horas atrás, Flávio Pedroza disse:void encontraDoisVals (int limInf, int limSup, int *dig1, int *dig2) { int n[2]; for (int i=0; i < 2; i++) { while (1) { printf("\nDigite um valor inteiro %d.......................: ", i+1); scanf("%d",&n[i]); if (n[i] < limInf) && (n[i] > limSup) break; } } *dig1=n[0]; *dig2=n[1]; }
adicionado 2 minutos depoisAlternativamente, se você puder ler os dois número de uma só vez:
void encontraDoisVals (int limInf, int limSup, int *dig1, int *dig2) { do { printf("\nDigite dois valores inteiros.......................: "); scanf("%d %d",dig1, dig2); } while (((*dig1 >= limInf) && (*dig1 <= limSup)) || ((*dig2 >= limInf) && (*dig2 <= limSup))); }
Acho que o correto é esse mesmo que você fez agora. Foi isso que a questão pediu.
-
Perfeito!
Esse eu acho que peguei o jeito:
#include <stdio.h> float encontraMenor(int numEmp, float *vetorSal){ int menorSal=vetorSal[0],i; for (i=0;i<numEmp;i++){ if (menorSal>vetorSal[i]) menorSal=vetorSal[i]; } return menorSal; } float exibeDifMenorRetornaSoma (float vMenorSal, int numEmp, int *vetorInsc, float *vetorSal){ int i; float somaDif; for (i=0;i<numEmp;i++){ printf("\n\nFuncionario %d - Diferenca do salario ..: R$ %.2f",vetorInsc[i],vetorSal[i]-vMenorSal); somaDif=somaDif+(vetorSal[i]-vMenorSal); } printf("\n\nSoma das diferencas .......................: R$ %.2f",somaDif); } int main (void){ int vInsc[6]={1010,1020,1030,1040,1050,1060}; float vSal[6]={1000.00,4020.00,900.00,10400.00,20000.00,1000.00}; float menorSal; menorSal=encontraMenor(6,vSal); printf("\n\nO menor salario e ........................: R$ %.2f",menorSal); exibeDifMenorRetornaSoma (menorSal, 6, vInsc, vSal); return 0; }
-
Eu pensei nisso, mas não posso usar o "do...while".
-
-
-
Bom dia.
Minha dúvida está na função.
Teria outra maneira de verificar os números digitados sem ter que repetir o "while"?
#include <stdio.h> int encontraDoisVals (int limInf, int limSup, int *dig1, int *dig2){ int n1,n2; printf("\nDigite um valor inteiro.......................: "); scanf("%d",&n1); while (n1>limInf&&n1<limSup){ printf("\nDigite um valor inteiro.......................: "); scanf("%d",&n1); } *dig1=n1; printf("\nDigite um valor inteiro.......................: "); scanf("%d",&n2); while (n2>limInf&&n2<limSup){ printf("\nDigite um valor inteiro.......................: "); scanf("%d",&n2); } *dig2=n2; } int main(void){ int limI, limS, dig1, dig2; int soma; int i; printf("\nDigite o limite inferior......................: "); scanf("%d",&limI); printf("\nDigite o limite superior......................: "); scanf("%d",&limS); encontraDoisVals (limI, limS, &dig1, &dig2); soma=dig1+dig2; printf("\nSoma dos valores digitado fora do intervalo...: %d",soma); return 0; }
adicionado 5 minutos depoisFunção é "void" não 'int".
-
Entendi, mas a função "exibeDiferencaAB" só pode receber 2 vetores.
adicionado 5 minutos depois33 minutos atrás, isrnick disse:A função exibeDiferencaAB também deveria receber os comprimentos dos vetores A e B como parâmetros.
E uma boa indentação do código é um requisito, senão dá muito trabalho identificar o que está acontecendo no código.
E existem várias ferramentas para indentar códigos automaticamente, uma boa ferramenta online que eu uso é essa:
https://www.tutorialspoint.com/online_c_formatter.htm
E falando em facilitar a compreensão do código isso é mais uma recomendação do que uma necessidade: Código é feito para ser lido por outras pessoas, então usar nomes de variáveis descritivos e/ou colocar comentários ajuda a próxima pessoa a compreender seu código.
Veja o código modificado:
#include <stdio.h> # define X 10 # define Y 15 int busca (int numero, int n, int *vetor) { int i; for (i=0; i<n; i++) { if (vetor[i]==numero) return 1; } return 0; } void exibeDiferencaAB (int n1, int *vetor1, int n2, int *vetor2) { int achou, i; for (i=0; i<n1; i++) { achou=busca(vetor1[i], n2, vetor2); if (!achou) //se nao achou o numero printf("%d, ",vetor1[i]); } } int main(void) { int vetor1[X]= {1,4,3,7,99,14,17,16,11,13}; int vetor2[Y]= {4,2,3,9,1,1,5,16,11,33,44,55,66,23,5}; exibeDiferencaAB (X, vetor1, Y, vetor2); return 0; }
Não entendi os "n". Na verdade entendi, mas não a necessidade. Apenas para organização?
-
-
Boa tarde!
Eu outra vez...
Podem criticar meu código?
Obrigado!
#include <stdio.h> # define X 10 # define Y 15 int busca (int n, int vetor1, int *vetor2){ int i; for (i=0;i<n;i++){ if (vetor2[i]==vetor1)return 1; } return 0;} void exibeDiferencaAB (int *vetor1, int *vetor2){ int a,i; for (i=0;i<X;i++){ a=busca (Y, vetor1[i], vetor2); if (a==0)printf("%d ",vetor1[i]);} } int main(void){ int vetor1[X]={1,4,3,7,99,14,17,16,11,13}; int vetor2[Y]={4,2,3,9,1,1,5,16,11,33,44,55,66,23,5}; exibeDiferencaAB (vetor1, vetor2); return 0;}
- 1
-
12 minutos atrás, isrnick disse:
Como falei se o scanf estiver fora da função você pode fazer um scanf para obter o primeiro valor de agência antes do while por exemplo...
Sim, achei que tivesse outro jeito para não ter que repetir as linhas no código.
Pelo que vocês falaram, o código ficaria assim:
#include <stdio.h> int somaAl (int num){ int t=0; while (num>0){ t+=num%10;num=num/10; }return t;} void calcDigitos(int conta, int agencia, int *dig1,int *dig2){ int n1,n2; n1=somaAl(agencia);n2=somaAl(conta); if(n1>n2){ *dig1=n1%9;*dig2=n2%6; } else if(n2>n1){ *dig1=n1%9;*dig2=n2%7; } else{ *dig1=n1%3;*dig2=n2%5;}} int main(void){ int agencia, dig1, conta, dig2; printf("\nDigite a agencia:.... "); scanf("%d",&agencia); while (agencia!=0){ printf("\nDigite a conta:...... "); scanf("%d",&conta); calcDigitos(conta,agencia,&dig1,&dig2); printf("\nAg: %d-%d cta: %d-%d\n\n",agencia,dig1,conta,dig2); printf("\nDigite a agencia:.... "); scanf("%d",&agencia); }return 0;}
Os ponteiros estão corretos?
- 1
-
6 minutos atrás, isrnick disse:
Pela imagem ela exigiu que a somaAlg fosse calculada na função, não que os scanfs estivessem dentro da função.
Será????
adicionado 3 minutos depois6 minutos atrás, isrnick disse:Não encerra não, o scanf para obter o valor inicial de agencia deve vir antes de fazer a primeira comparação para checar se agencia!=0 .
Se eu não fizer "age=1" acontece isso:
-
Eu sei, mas a professora exigiu que fosse na função.
adicionado 3 minutos depoisadicionado 8 minutos depois@isrnick Se eu não colocar "age=1", o while (agencia!=0) vai encerrar antes de começar.
-
Entendi!
-
-
Boa tarde!
Poderiam me ajudar com a questão abaixo?
Fiz o código, funcionou, mas não gostei dele.
Como poderia ficar melhor?
Por exemplo:
Como parar assim que digitar "agência 0"?
Como fazer para não precisar colocar "agencia =1"?
Obrigado!#include <stdio.h> #include <stdlib.h> int somaAl (int num) { int t=0; while ( num > 0){ t+=num%10; num=num/10; } return t; } void calcDigitos(int *conta, int *agencia, int *dig1,int *dig2) { int i,age=1, n1; int cta, n2; printf("\nDigite a agencia:.... "); scanf("%d",&age); n1=somaAl (age); *agencia=age; printf("\nDigite a conta:...... "); scanf("%d",&cta); n2=somaAl (cta); *conta=cta; if(n1>n2) { *dig1=n1%9; *dig2=n2%6; } else if(n2>n1) { *dig1=n1%9; *dig2=n2%7; } else { *dig1=n1%3; *dig2=n2%5; } } int main(void) { int agencia=1, dig1; int conta, dig2; while (agencia!=0) { calcDigitos(&conta,&agencia,&dig1,&dig2); printf("\nAgencia:............. %d - %d",agencia,dig1); printf("\nConta:............... %d - %d",conta,dig2); } return 0; }
-
Obrigado!
- 1
-
Exatamente!
Não entendi tudo, mas se cair na prova final agora dia 04 vou saber fazer alguma coisa. (Isso lá é prova de primeiro período???)
Obrigado!
Postei outra dúvida se puderem ajudar:
adicionado 2 minutos depoisComo finalizo o tópico? A questão foi resolvida!
-
Mas nesse caso, só vai totalizar as 6 primeiras posições do vetor vNota
#include <stdio.h> #include <stdlib.h> int main (void) { float vNota[25] = {1,1,2,10,10,3,4,6,7,7,8,9,3,10,4,5,2,7,5,9,8,4,6,8,9}; float vAtend[25] = {1,2,3,4,5,6,2,3,4,5,1,2,3,6,4,5,4,6,1,3,4,5,6,2,4}; int vCont [6]; float vTot[6]; int func; int i; //zera (vtot); //zera (vCont); for (i=0;i<6;i++) { vTot[i]=0; vCont[i]=0; } for (i=0;i<25;i++) { func=vAtend[i]-1; vCont[func]++; vTot[func]+=vNota[func]; } for (i=0;i<6;i++) { if (vCont[i]!=0)printf ("\nMedia...:%.7f",vTot[i]/vCont[i]); } return 0; }
- 1
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
operação com vetores. condicional. operadores lógicos. faeterj. fac. av2. 2017.
em C/C#/C++
Postado
@Flávio Pedroza Resolvi tudo menos isso: