Ir ao conteúdo
  • Cadastre-se

jcgs98

Membro Pleno
  • Posts

    80
  • Cadastrado em

  • Última visita

Tudo que jcgs98 postou

  1. @arfneto Não, a forma iterativa está certa. Retorna a quantidade de caracteres em comum. Comparando Paulo com Paula, retorna 4: P->P, a->a, u->u e l->l.
  2. @arfneto Vou tentar entender os código... não consigo pensar recursivamente. @arfneto "imagino que pretendesse retornar false quando as strings fossem diferentes, zero no popular. E 1 quando forem iguais, mas está contando e retornando apenas o número de letras iguais. Ou pretendia apenas retornar o número de vezes que alguma letra de str1 aparece em str2 ou algo assim? Acho que te qualquer maneira não está certo porque está comparando todas as letras de str2 com cada letra de str1 e isso pode não ter um significado objetivo, já que as strings podem ter letras repetidas... Escreva explicando o que pretende se não é comparar as strings apenas." Não, retornar a quantidade de letras em comum.
  3. #include <string.h> #include <strings.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> int comparaString (char str1[100],char str2[100]); int main(void) { int cont=0; char str1[100],str2[100]; system("cls"); fflush(stdin); printf("\nString1...:\n"); gets(str1); system("cls"); fflush(stdin); printf("\nString2...:\n"); gets(str2); cont=comparaString (str1,str2); printf("\nExistem %i caracteres comuns entre as duas strings\n",cont); return 0; } int comparaString (char str1[100],char str2[100]) { int i,j,cont=0; for(i=0;str1[i]!=NULL;i++) { for(j=0;str2[j]!=NULL;j++) { if(str1[i]==str2[j]) { cont++; } } } return cont; } Como fazer de forma totalmente recursiva?
  4. @Anthony1104 Oi. Nos diga o que você quer fazer em tópicos. Vou te ajudar didaticamente sem "blá blá blá" ou crítica. Primeiro: O programa tem que fazer o que? Dica para quem quer ajudar, as pessoas que pedem ajuda a querem para problemas pontuais. Geralmente estudantes de faculdade querendo resolver tarefas. Ao invés de usarem funções prontas, criem códigos com passo a passo. Vai ajudar nos estudos destas pessoas.
  5. @Midori Não muito fácil de entender para ele que está começando... melhor ser bem didático para ele entender os conceitos.
  6. @GordinhoCoreano Bem didático e sem blá blá blá; se quiser um código mais enxuto e elegante pode perguntar. #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct{ char letra[2]; int numero; }Tnumerologia; int procuraletra(char *letra); int main(void) { char letra[2]; int resultado=0, aux=0, aux2=0; while(procuraletra(letra)!=0) { printf("\nDigite Cada Letra do Seu Nome Seguido De Enter('&' para terminar)...: "); gets(letra); printf("\nLetra %s -> %i",letra,procuraletra(letra)); aux=aux+procuraletra(letra); } system("cls"); printf("\nSoma de todas a letras....: %i\n\n\n",aux); while(aux>=10) { aux2=(aux/10)+(aux%10); aux=aux2; } printf("\nSeu Numero Pessoal: %i",aux); return 0; } int procuraletra(char *letra){ int i; Tnumerologia vetorComDados[27]={{"A",1},{"J",1},{"S",1}, {"B",2},{"K",2},{"T",2}, {"C",3},{"L",3},{"U",3}, {"D",4},{"M",4},{"V",4}, {"E",5},{"N",5},{"W",5}, {"F",6},{"O",6},{"X",6}, {"G",7},{"P",7},{"Y",7}, {"H",8},{"Q",8},{"Z",8}, {"I",9},{"R",9},{"&",0}}; for(i=0;i<27;i++) { if(!(strcasecmp(letra,vetorComDados[i].letra))) { return vetorComDados[i].numero; } } }
  7. @KXSYentendi, mas estou ensinando com simplesmente encadeada.
  8. @devair1010 Conitnue fazendo do meu jeito; é mais didático. As pessoas esquecem que vocês vem aqui para aprender. Sempre me irritei com algumas respostas que nada ajudam quem vem aqui pedir auxílio. Isso tudo acabou com minha chegada. Mesmo que digam que o post é inútil (se ensina é bem útil). Vou ver seu problema e tentar te explicar. @devair1010 "ele diz que não tem a função main nesse código" Sim, não tem: é "só" uma função. Vou postar com a main para fins didáticos. Primeiro você deve construir a estrutura que vai criar os nós: //ESTRUTRA DO NÓ typedef struct No { int valor; struct No *prox; }TNo; //SERVER PARA VOCÊ NÃO TER QUE FAZER PONTEIRO DE PONTEIRO (**) E SE CONFUNDIR typedef TNo* TLista; #include <locale.h> #include <stdio.h> #include <stdlib.h> typedef struct No { int valor; struct No *prox; } TNo; typedef TNo* TLista; int insereNaPosicao (TLista *Lista,int inserido,int posicao); int colocarElementosNaLista (TLista *Lista, int elemento); void exibirElementosDaLista (TLista Lista); int main (void) { TLista Lista = NULL; int opcao, num1, num2; setlocale(LC_ALL,""); do { system ("cls"); printf ("Opções:\n\n"); printf ("(1)\tInserir na Lista\n(2)\tInserir Em Determinada Posição\n"); printf ("(3)\tExibir Lista Criada\n(4)\tSair\n\n"); printf ("Entre com a sua opção: "); scanf ("%d", &op); switch (op) { case 1: printf ("Entre com o número a ser inserido: "); scanf ("%d", &num1); if (colocarElementosNaLista (&Lista, num1)) { printf ("Elemento inserido!\n"); } else { printf ("ERRO: Elemento não inserido!\n"); } break; case 2: printf ("Entre com o número a ser inserido: "); scanf ("%d", &num1); printf ("Entre com o posição: "); scanf ("%d", &num2); if (insereNaPosicao (&Lista,num1, num2)) { printf ("Elemento %i inserido na %ia. posição da lista!\n",num1,num2); } else { printf ("ERRO: Elemento não inserido na lista!\n"); } break; case 3: exibirElementosDaLista (Lista); break; case 4: printf ("Fim do programa!\n"); break; default: printf ("Opção inválida! Tente novamente.\n"); } system ("pause"); } while (opcao != 4); } int insereNaPosicao (TLista *Lista,int inserido,int posicao) { int con=0,CON=0; TLista AUX, aux, novo, tam; AUX=*Lista; tam=*Lista; posicao=posicao-1; novo=(TLista) malloc (sizeof(TNo)); novo->valor = inserido; while (tam!=NULL) { tam=tam->prox; CON++; } if (posicao>CON||posicao<0) { return 0; } while (con<posicao-1) { AUX=AUX->prox; con++; } aux=AUX->prox; AUX->prox=novo; novo->prox=aux; return 1; } int colocarElementosNaLista (TLista *Lista, int numero) { TLista aux = (TLista) malloc (sizeof(TNo)); if (!aux) //(aux == NULL) { return 0; } else { aux->valor = numero; aux->prox = *Lista; *Lista = aux; return 1; } } void exibirElementosDaLista (TLista Lista) { TLista i; if (!Lista)//if (Lista == NULL) { printf ("Lista vazia!\n"); } else { printf ("Elementos: "); i = Lista; while (i) //while (i != NULL) { printf ("%d ", i->valor); i = i->prox; } printf ("\n"); } } @devair1010 código completo
  9. @devair1010 vê se ajuda: https://www.clubedohardware.com.br/forums/topic/1498676-exibir-lista-encadeada-linguagem-c/?tab=comments#comment-7998143 Se não tiver no mínimo metade das visualizações em curtidas, posto mais nada!
  10. #include <stdio.h> #include <stdlib.h> typedef struct No { int valor ; struct No *prox ; } TNo ; typedef TNo* TLista ; int insereNaPosicao (TLista *L,int inserido,int posicao) { int con=0,CON=0; TLista AUX, aux, novo, tam; AUX=*L; tam=*L; posicao=posicao-1; novo=(TLista) malloc (sizeof(TNo)); novo->valor = inserido; while (tam!=NULL) { tam=tam->prox; CON++; } if (posicao>CON||posicao<0) { return 0; } while (con<posicao-1) { AUX=AUX->prox; con++; } aux=AUX->prox; AUX->prox=novo; novo->prox=aux; return 1; }
  11. Digamos que você saiba como fazer uma lista encadeada e esteja querendo saber como Verificar Se Ela Está Ordenada? Não. Não. Sim.
  12. Serve para "Verificar Se Lista Encadeada Está Ordenada".
  13. #include <stdio.h> #include <stdlib.h> typedef struct No { int valor ; struct No *prox ; } TNo ; typedef TNo* TLista ; int estaOrdenada(TLista L) { if (L != NULL) { while (L->prox != NULL) { if (L->valor > L->prox->valor) return 0; L = L->prox; } } return 1; }
  14. #include <string.h> #include <strings.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> typedef struct No { int nConteudo; struct No *prox; }TNo; typedef TNo* TLista; void liberar_memoria(TLista p); void verificaPar(TLista p1, TLista p2); void mostraLista(TLista p1, TLista p2); int main(void) { TLista pNo1 = NULL; TLista pNo2 = NULL; TLista pNo3 = NULL; TLista pNo4 = NULL; TLista pNo5 = NULL; TLista pNo6 = NULL; pNo1 = (TLista) malloc(sizeof(TLista)); pNo1->nConteudo = 110; pNo2 = (TLista) malloc(sizeof(TLista)); pNo2->nConteudo = 210; pNo3 = (TLista) malloc(sizeof(TLista)); pNo3->nConteudo = 310; pNo4 = (TLista) malloc(sizeof(TLista)); pNo4->nConteudo = 110; pNo5 = (TLista) malloc(sizeof(TLista)); pNo5->nConteudo = 210; pNo6 = (TLista) malloc(sizeof(TLista)); pNo6->nConteudo = 310; pNo1->prox = pNo2; pNo2->prox = pNo3; pNo3->prox = NULL; pNo4->prox = pNo5; pNo5->prox = pNo6; pNo6->prox = NULL; mostraLista(pNo1,pNo4); verificaPar(pNo1, pNo4); liberar_memoria(pNo1); liberar_memoria(pNo4); return 0; } void liberar_memoria(TLista p) { TLista atual = p; while (atual != NULL) { TLista proximo = atual->prox; free(atual); atual = proximo; } } void mostraLista(TLista p1, TLista p2) { TLista i,j; printf("\nMostrando a lista:\n"); if((p1)&&(p2)) for (i=p1,j=p2; p1!=NULL;p2=p2->prox,p1=p1->prox) { printf("\n%d\t", i->nConteudo); printf("- %d\n", j->nConteudo); i=i->prox; j=j->prox; } else printf("Lista vazia."); printf("\n\n"); } void verificaPar(TLista p1, TLista p2) { TLista i,j, cont=0; if((p1)&&(p2)) { for (i=p1,j=p2; p1!=NULL;p2=p2->prox,p1=p1->prox) { if (i->nConteudo!=j->nConteudo) { printf("NAO SAO IGUAIS - LISTAS DIFERENTES!\n"); cont=0; break; } else { cont++; } i=i->prox; j=j->prox; } if (cont) { printf("AS LISTAS SAO IDENTICAS\n"); } } else printf("LISTAS IDENTICAS PORQUE AMBAS SAO VAZIAS."); }
  15. @AnsiC vários operadores que não aprendi: "- -" antes da variável. "? a :" Vou pesquisar. Parece que ficou bem mais econômico mesmo.
  16. Como desenvolver uma função recursiva que, dado um vetor contendo Y números reais, determine o maior deles? Fiz conforme abaixo, tem um jeito mais elegante ou mais econômico? #include <stdio.h> #include <conio.h> int maior (int a, int i, int *vetor){ if (i<0){ return a; } if (vetor[i]>a){ a=vetor[i]; } return maior(a,i-1,vetor); } int main (void){ int vetor[5]={5,94,32,22,1}; printf("\nMaior: %i",maior(vetor[4],5,vetor)); return 0; } Ou invertido: #include <stdio.h> #include <conio.h> int maior (int i, int a, int *vetor){ if (i>4){ return a; } if (vetor[i]>a){ a=vetor[i]; } return maior(i+1,a,vetor); } int main (void){ int vetor[5]={5,94,32,22,1}; printf("\nMaior: %i",maior(0,vetor[4],vetor)); return 0; }
  17. Questão 2: #include <stdio.h> #define X 1000 float reajustaMultiplosretornaTotal(int numEmp, float *vetorSal, float multiplo){ float montante=0; int i; int transforma_em_inteiro1=0; int transforma_em_inteiro2=multiplo*100; for (i=0;i<numEmp;i++){ transforma_em_inteiro1=vetorSal[i]*100; if (transforma_em_inteiro1%transforma_em_inteiro2==0) montante+=(vetorSal[i]*1.1-vetorSal[i]); } return montante; } void exibeFunc (int numEmp, int *vetorInsc, float *vetorSal){ int i; for (i=0;i<numEmp;i++){ printf("\n\nFuncionario %d - Salario ..: R$ %.2f",vetorInsc[i],vetorSal[i]); } } 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 acrescimo; acrescimo=reajustaMultiplosretornaTotal(6,vSal,X); exibeFunc(6,vInsc,vSal); printf("\n\nAcrescimo na folha........................: R$ %.2f",acrescimo); return 0; }
  18. questão 3: #include // biblioteca usada #define x 200 // definindo uma constante. serve para nao ter que mudar em todo codigo. basta mudar aqui. void zerai (int *v, int n){ //funcao para zerar vetores composto por numeros inteiros int i; for (i=0;in;i++){ v[i]=0; } } void zeraf (float *v, int n){ //funcao para zerar vetores composto por numeros reais int i; for (i=0;in;i++){ v[i]=0; } } int busca (int *v, int n, int chv){ //funcao para buscar valores inteiros em vetor qualquer for (int i=0;in;i++){ if (v[i]==chv) return i; } return -1; } int carrega_doces (int *coddoce, int *codtipo, int n){ //funcao para carregar vetor com dados coddoce[0]=203;codtipo[0]=1; coddoce[1]=120;codtipo[1]=3; coddoce[2]=340;codtipo[2]=1; coddoce[3]=220;codtipo[3]=7; return 4; } int carrega_tipos (float *pesomin, float *pesomax){ //funcao para carregar vetor com dados pesomin[0]=2.0;pesomax[0]=2.4; pesomin[1]=1.2;pesomax[1]=2.0; pesomin[2]=3.4;pesomax[2]=3.8; pesomin[3]=9.3;pesomax[3]=9.8; pesomin[4]=6.0;pesomax[4]=6.4; pesomin[5]=3.1;pesomax[5]=3.2; pesomin[6]=4.6;pesomax[6]=4.8; } int main (void){ //funcao principal int i,doce=0,d=0,cod=0,qtd=0,loj=0; //definindo e zerando variaveis inteiras float peso=0; //definindo e zerando variaveis reais int vdoce[4],vtipo[4],docedigitado[x],tipodigitado[x],vtot[x]; //definindo variaveis vetores para numeros inteiros float pesodoce[x],pmax[7],pmin[7]; //definindo variaveis vetores para numeros reais zerai (vdoce,4); // usando funcao definida no inicio para zerar vetor zerai (vtipo,4); // usando funcao definida no inicio para zerar vetor zeraf (pmax,7); // usando funcao definida no inicio para zerar vetor zeraf (pmin,7); // usando funcao definida no inicio para zerar vetor zerai (docedigitado,x); // usando funcao definida no inicio para zerar vetor zerai (tipodigitado,x); // usando funcao definida no inicio para zerar vetor zerai (vtot,4); // usando funcao definida no inicio para zerar vetor carrega_doces (vdoce,vtipo,4); // usando funcao definida no inicio para preencher vetor carrega_tipos (pmin,pmax); // usando funcao definida no inicio para preencher vetor for(i=0;ix;i++){ //criando laco principal do codigo do{ // inicio do laco auxiliar que verifica se codigo digitado existe printf("\ncodigo do doce %d..........: ",d+1); scanf("%d",&doce); }while (doce>0&&busca(vdoce,4,doce)==-1); if (doce0) break; // condicional que verifica se o codigo e menor que zera (termina entrada de dados) d++; // adiciona 1 a variavel "d" em cada passagem do laco docedigitado[i]=busca(vdoce,4,doce); // vetor preenchido com cada posicao referente ao "i" da passagem do laco tipodigitado[i]=vtipo[busca(vdoce,4,doce)]; // idem printf("\npeso do doce %d..........: ",d+1); scanf("%f",&peso); pesodoce[i]=peso; } for (i=0;id;i++){ if ((pesodoce[i]pmin[tipodigitado[i]-1])||(pesodoce[i]>pmax[tipodigitado[i]-1])) vtot[docedigitado[i]]++; } for (i=0;i4;i++){ printf("\nquantidade de doces do tipo %d fora do padrão....: %d",vdoce[i],vtot[i]); } return 0; } adicionado 34 minutos depois Questão 1: #include <stdio.h> void encontraMinMax (float *valorMin, float *valorMax) { int i, j; float dolar,maior=0, menor=0; for (j=0;j<4;j++){ for (i=0;i<7;i++){ printf("\nDigite a cotacao do Dolar do dia %d da semana %d: ",i+1,j+1); scanf("%f",&dolar); if (dolar>=maior) maior=dolar; if (dolar<=menor||menor==0) menor=dolar; } } *valorMin=menor; *valorMax=maior; } int main(void){ float maior,menor; encontraMinMax (&menor,&maior); printf("\nMaior cotacao do Dolar no mes....: R$ %.2f",maior); printf("\nMenor cotacao do Dolar no mes....: R$ %.2f",menor); return 0; }
  19. do{ printf("\nCodigo do produto %d.............: ",d+1); scanf("%d",&produto); }while (produto>0&&busca(vPro,4,produto)==-1); if (produto<0) break; d++;
  20. #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 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 *codPro, float *valPro, int n){ codPro[0]=203;valPro[0]=10.0; codPro[1]=120;valPro[1]=03.0; codPro[2]=340;valPro[2]=25.0; codPro[3]=8 ;valPro[3]=70.0; return 4; } int carrega_lojas (int *codLoja, int *estadoLoja, int n){ codLoja[0]=20;estadoLoja[0]=1; codLoja[1]=8 ;estadoLoja[1]=2; codLoja[2]=34;estadoLoja[2]=2; codLoja[3]=22;estadoLoja[3]=5; codLoja[4]=14;estadoLoja[4]=3; codLoja[5]=52;estadoLoja[5]=4; codLoja[6]=16;estadoLoja[6]=6; codLoja[7]=55;estadoLoja[7]=4; codLoja[8]=41;estadoLoja[8]=5; codLoja[9]=28;estadoLoja[9]=6; } int carrega_est (float *impEstado){ impEstado[0]=2.0; impEstado[1]=1.2; impEstado[2]=3.4; impEstado[3]=9.3; impEstado[4]=6.0; impEstado[5]=3.1; } int main (void){ int i,d=0,cod=0,qtd=0,loj=0; int produto=0,quantidade=0; float imposto=0,valor=0; int vlojas [X],vPro[4],vLoj[10],vCod[10],lojaDigitada[X]; float vTot[X],vVal[4],vImp[6],valorSemImposto[X]; zeraI (vPro,4); zeraF (vVal,4); zeraI (vlojas,X); zeraF (vTot,X); zeraF (valorSemImposto,X); zeraI (lojaDigitada,X); 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<X;i++){ do{ printf("\nCodigo do produto %d.............: ",d+1); scanf("%d",&produto); }while (produto>0&&busca(vPro,4,produto)==-1); if (produto<0) break; d++; valor=vVal[busca(vPro,4,produto)]; printf("\nQuantidade......................:"); scanf("%d",&quantidade); do{ printf("\nLoja............................:"); scanf("%d",&lojaDigitada[i]); }while (busca(vLoj,10,lojaDigitada[i])==-1); imposto=vImp[vCod[busca(vLoj,10,lojaDigitada[i])]-1]; valorSemImposto[i]=(valor*quantidade)/(1+(imposto/100)); } for (i=0;i<d;i++){ vlojas [i]=busca(vLoj,10,lojaDigitada[i]); } for (i=0;i<d;i++){ vTot[vlojas[i]]+=valorSemImposto[i]; } for (i=0;i<10;i++){ printf("\nFaturamento liquido da loja %2d..: R$ %.2f",vLoj[i],vTot[i]); } return 0; }
  21. realmente estava errado com mais de 10 sua sugestão também não funcionou. resolvi adicionando um contador ("d") depois do "break". esse contador virou o indice: #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; } int carrega_prods (int *v1, float *v2, int n){ v1[0]=203;v2[0]=10.0; v1[1]=120;v2[1]=03.0; v1[2]=340;v2[2]=25.0; v1[3]=8;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 vlojas [10]; float vTot[10]; int produto=0,quantidade=0; float c=0, d=0, imposto=0, valor=0; int vPro[4], vLoj[10], vCod[10],lojaDigitada[X]; float vVal[4],vImp[6],fat[10],valorSemImposto[X]; zeraI (vPro,4); zeraF (vVal,4); zeraF (valorSemImposto,X); zeraI (lojaDigitada,X); 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); if (produto<0) break; // d++;//contador usado no final do codigo para totalizacoes // // 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",&lojaDigitada[i]); imposto=vImp[vCod[buscaI(vLoj,10,lojaDigitada[i])]-1]; printf("\nValor do Imposto no estado %d...: %.2f",vCod[buscaI(vLoj,10,lojaDigitada[i])],imposto); c=(valor*quantidade)/(1+(imposto/100)); printf("\nValor sem imposto...............: %.2f",c); valorSemImposto[i]=c; } for(i=0;i<d;i++){ printf("\nLoja: %d / Total: %.2f",lojaDigitada[i],valorSemImposto[i]); } for (i=0;i<10;i++) { vTot[i]=0; vlojas [i]=0; } for (i=0;i<d;i++){ vlojas [i]=buscaI(vLoj,10,lojaDigitada[i]); printf("\n%d - %d",i,vlojas[i]); } for (i=0;i<d;i++) { vTot[vlojas[i]]+=valorSemImposto[i]; } for (i=0;i<10;i++) { printf("\nFaturamento liquido da loja %2d..: R$ %.2f",vLoj[i],vTot[i]); } return 0; adicionado 31 minutos depois #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; } int carrega_prods (int *v1, float *v2, int n){ v1[0]=203;v2[0]=10.0; v1[1]=120;v2[1]=03.0; v1[2]=340;v2[2]=25.0; v1[3]=8;v2[3]=70.0; return 4; } int carrega_lojas (int *codLoja, int *estadoLoja, int n){ codLoja[0]=20; estadoLoja[0]=1; codLoja[1]=8; estadoLoja[1]=2; codLoja[2]=34; estadoLoja[2]=2; codLoja[3]=22; estadoLoja[3]=5; codLoja[4]=14; estadoLoja[4]=3; codLoja[5]=52; estadoLoja[5]=4; codLoja[6]=16; estadoLoja[6]=6; codLoja[7]=55; estadoLoja[7]=4; codLoja[8]=41; estadoLoja[8]=5; codLoja[9]=28; estadoLoja[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 vlojas [10]; float vTot[10]; int i,d=0,cod=0,qtd=0,loj=0; int produto,quantidade; float imposto,valor; int vPro[4], vLoj[10], vCod[10],lojaDigitada[X]; float vVal[4],vImp[6],valorSemImposto[X]; zeraI (vPro,4); zeraF (vVal,4); zeraF (valorSemImposto,X); zeraI (lojaDigitada,X); 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<X;i++){ printf("\n\n\nCodigo do produto...............: "); scanf("%d",&produto); if (produto<0) break; d++; valor=vVal[buscaI(vPro,4,produto)]; printf("\nQuantidade......................:"); scanf("%d",&quantidade); printf("\nLoja............................:"); scanf("%d",&lojaDigitada[i]); imposto=vImp[vCod[buscaI(vLoj,10,lojaDigitada[i])]-1]; valorSemImposto[i]=(valor*quantidade)/(1+(imposto/100)); } for (i=0;i<10;i++){ vTot[i]=0; vlojas [i]=0; } for (i=0;i<d;i++){ vlojas [i]=buscaI(vLoj,10,lojaDigitada[i]); } for (i=0;i<d;i++){ vTot[vlojas[i]]+=valorSemImposto[i]; } for (i=0;i<10;i++){ printf("\nFaturamento liquido da loja %2d..: R$ %.2f",vLoj[i],vTot[i]); } return 0; } Código que responde o enunciado (só falta a verificação da existência do código e loja digitada).
  22. @Flávio Pedroza #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; } int carrega_prods (int *v1, float *v2, int n){ v1[0]=203;v2[0]=10.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]=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,z; int produto,quantidade; float c, d, imposto, valor; int vPro[4], vLoj[10], vCod[10],lojaDigitada[X]; float vVal[4],vImp[6],fat[10],valorSemImposto[X]; zeraI (vPro,4); zeraF (vVal,4); zeraF (valorSemImposto,X); zeraI (lojaDigitada,X); 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<X;i++){ printf("\n\n\nCodigo do produto...............: "); scanf("%d",&produto); if (produto<0) break; valor=vVal[buscaI(vPro,4,produto)]; printf("\nQuantidade......................:"); scanf("%d",&quantidade); printf("\nLoja............................:"); scanf("%d",&lojaDigitada[i]); imposto=vImp[vCod[buscaI(vLoj,10,lojaDigitada[i])]-1]; valorSemImposto[i]=(valor*quantidade)/(1+(imposto/100)); } int vlojas [10]; float vTot[10]; for (i=0;i<10;i++){ vTot[i]=0; vlojas [i]=0; } for (i=0;i<10;i++){ vlojas [i]=buscaI(vLoj,10,lojaDigitada[i]); } for (i=0;i<10;i++){ vTot[vlojas[i]]+=valorSemImposto[i]; } for (i=0;i<10;i++){ printf("\nFaturamento liquido da loja %2d..: R$ %.2f",vLoj[i],vTot[i]); } return 0; } Se eu fosse levar esse tempo todo para resolver 1 questão dessa prova... quando eu fiz essa prova deixei essa em branco. adicionado 4 minutos depois @isrnick @Leonardo0308 Alguma dica?

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!