Ir ao conteúdo
  • Cadastre-se

yDuba

Membro Pleno
  • Posts

    34
  • Cadastrado em

  • Última visita

Reputação

11
  1. Olá, irei deixar trechos sobre este codigo, entretanto o objetivo do codigo é,verificar a existencia do da string telefone e variável tempo igual em dois arquivos, se existir igualdade, deve-se somar o tempo dos dois arquivos no primeiro, e o segundo receber o valor 0. O código esta funcionando, entretanto me encontro com o seguinte problema, após a receber mais de duas linhas em cada registro, sendo uma que contem a igualdade e outra não, as proximas linhas nao funcionam a verificação. Exemplo: Registro 1 tel:99 tempo:4 tel:55 tempo:1 tel:22 tempo:4 Registro 2: tel:99 tempo:4 tel:14 tempo:1 tel:22 tempo:4 Isto teria de resultar em : REGISTRO 1: tel:99 tempo8 tel:55 tempo:1 tel:22 tempo:8 Registro 2: tel:99 tempo:0 tel:14 tempo:1 tel:22 tempo:0 entretanto o que acontece como resultado é que o terceiro registro que contem a igualdade não esta somando nem zerando. Codigo: // aqui verifica a igualdade while(!feof(agenda1)){ fread(&chamada1,sizeof(dados1),1,agenda1); if(feof(agenda1)){ break; } while(!feof(agenda2)){ fread(&chamada2,sizeof(dados2),1,agenda2); if(feof(agenda2)){ break; } if(strcmp(chamada1.telefone,chamada2.telefone)==0 ){ if(chamada1.tempo == chamada2.tempo){ temp=chamada1.tempo; chamada1.tempo= chamada1.tempo+chamada2.tempo; fwrite(&chamada1,sizeof(dados1),1,agenda1); chamada2.tempo= 0; fwrite(&chamada2,sizeof(dados2),1,agenda2); strcpy(tel,chamada1.telefone); // abaixo a parte que exclui a linha que contem os valores iguais while(!feof(agenda1)){ fread(&chamada1,sizeof(dados1),1,agenda1); if(feof(agenda1)){ break; } if(strcmp(chamada1.telefone,tel) !=0 || chamada1.tempo != temp){ fwrite(&chamada1,sizeof(dados1),1,backup); } } fclose(backup); fclose(agenda1); } remove("ligacao1.txt"); rename("backup.txt","ligacao1.txt");
  2. Olá, gostaria de verificasse onde esta o erro na logica cujo o objetivo é, ler um vetor e os valores que forem maiores que 0(positivo) receber o valor 0. Exemplo {-5,-4,6,7}, usando recursividade deve retornar {-5,-4,0,0}.Lembrando, deve-se utilizar recursividade. #include <stdio.h> #include <stdlib.h> #include <math.h> recur(int vet[] ,int tamvet); int main() { int vet[100],tamvet,i,tamanho; printf("=======Tamanho do vetor========\n"); scanf("%d",&tamvet); printf("==================================\n"); printf("Entre com os dados do vetor \n"); for(i=0;i<tamvet;i++){ scanf("%d",&vet[i]); } printf("=================VETO LIDO======================\n\n"); for(i=0;i<tamvet;i++){ printf(" %d",vet[i]); } tamanho=tamvet-1; recur(vet,tamanho); printf("\n\n\n VETOR RECEBENDO 0 EM ENTRADA MAIOR QUE 0:\n"); for(i=0;i<tamvet;i++){ printf(" %d",vet[i]); } } recur(int vet[] ,int tamanho){ int i; if(vet[tamanho]>0){ return vet[tamanho]=0; } else{ return recur(vet,tamanho-1); } if(tamanho>0){ return recur(vet,tamanho); } }
  3. yDuba

    C Array struct e registro

    @devair1010 mas em que isto implica? pois tipo, o tamanho da minha placa serve apenas para dizer a quantidade de numeros que quero guardar nela, logo se estou fazendo placa de 'carros', devo usar um tamanho menor. Ou não? adicionado 2 minutos depois @devair1010 deixarei o enunciado aqui :listar todas as placas e os proprietários dos veículos que comecem com a letra 'A' e terminem com '0', '2' ou '7'. DICA: faça com que a placa seja um vetor de caracteres!
  4. yDuba

    C Array struct e registro

    @devair1010 Só que assim, independente dela ser maiuscula ou minuscula, essa sintaxe esta dando errado ;-; typedef struct{ char nome[200]; int chassi; int modelo; char marca[30]; char cor[20]; int combustivel; int ano; char placa[3]; }CAD;
  5. yDuba

    C Array struct e registro

    Mas nao é para verificar se é maiusculo, e sim se a letra A inicia na primeira posição da placa, e 2 ou 0 ou7 fincaliza o final de uma placa, se sim imprimir o propietario desta placa.
  6. Olá, estou tentando realizar a seguinte tarefa: Listar propietarios das placas dos carros que iniciam em A e finalizam em 0,2,7. Entretanto não esta funcionando, a variavel responsavel pela impressao apenas o ultimo valor lido. //leitura da vairavel que eu queria colocar em fgets mas a mesma não funcioana scanf("%s",&reg[i].placa); . . . . CAD listaB(CAD reg[], int nreg){ int j; for(j=0;j<nreg; j++){ if(reg[j].placa[0]== 'a'){ if(reg[j].placa[5]==0 || reg[j].placa[5]=='2' || reg[j].placa[5]=='7'){ printf(">>%s PLACA %s\n",reg[j].nome,reg[j].placa); } } } }
  7. Muito obrigada, me ajudou muito !!
  8. Olá, boa tarde.Gostaria de ajuda para excluir um registro. Já encontrei em outros tópicos algumas soluções, porém não consigo aplica-las pois não tenho o conhecimento de funções tipo, realloc , fread, fclose,free, entre outros. Então gostaria também da explicação de como se usa cada função que utilizarem para solucionar o problema. O codigo da parte onde tenho duvida: typedef struct { int nconta; char nome[200]; float saldo; }CONTA; //Definição da variavel global CONTA cad[15]; int n,op; //Declaração da subrotina CONTA cadastro(); CONTA exclui(); CONTA visu(); . . . //Subrotina para excluir a conta com o menor saldo CONTA exclui(){ //Declracao de variaveis int i,menor,num,ex; menor=0; for(i=0;i<n; i++){ if(menor<cad[i].saldo){ menor=cad[i].saldo; num=i; } } //parte que exclui o registro com o menor saldo ?? }
  9. Olá, tenho uma questão que se pede para descobrir os valores do coeficiente A e B, entretanto, na formula os valores de A e B não resultam corretamente. Ajuda? Enunciado da questão: Faça um programa que use uma subrotina para receber como parâmetro dois vetores, contendo valores da coordenada x e valores da coordenada y de pontos no plano cartesiano. A subrotina deve calcular os coeficientes a e b (conforme equações abaixo) de uma reta y=ax+b que é a regressão linear dos pontos. a=(nΣxy-Σx*Σy)/(nΣx2-(Σx)2 b=(Σy*Σx2-Σx*Σxy)/(nΣx2-(Σx)2) #include <stdio.h> #include <math.h> #define tam 2 void funcaoaeb( int va[], int vb[], int i); int main(){ //declaração de variaveis int va[tam],vb[tam], xa,ya,xb,yb,i; //Leitura de x e y para vetor a e b printf("Digite valores das cordenadas x e y do vetor A: \n"); for(i=0; i<tam; i++){ scanf("%d",&va[i]); } printf("\n Digite valores das coordenadas x e y do vetor B: \n"); for(i=0; i<tam; i++){ scanf("%d",&vb[i]); } funcaoaeb( va, vb, i ); } void funcaoaeb( int va[], int vb[], int i){ float n,a,b,somax,somay; // Solicita um valor n, pois o mesmo se encontra na formula de regressão linear, entretanto no algoritmo não especifica sua função. printf("Digite um valor N \n"); scanf("%d",&n); somax=(va[0]+vb[0]); somay=(va[1]+vb[1]); //descobrir valor de A e B a=((((n*(somax*somay)))-((somax)*(somay))) - ((somax*somay)) )/((n*(somax*somax))-((somax*somax)*(somax*somax))); b=(((somay)*(somax*somax))-((somax)*(somax*somay))) /((n*(somax*somax))-((somax*somax)*(somax*somax))); printf("valor de A: %.2f \n", a); printf("Valord de B: %.2f",b); }
  10. yDuba

    C Contagem de valores em C

    Sim, descobri apos criar o post, ai n tinha como excluir rs. Mas muito obrigado.
  11. Olá, neste codigo tenho que demostrar qual é a quantidade de vezes em que a prova 1 obteve a menor nota, além das menores nota de cada aluno. Entretanto a logica que imaginei para verificar a quantidade de menores notas em cada prova não funciona. Gostaria de ajuda. #include <stdio.h> #define lin 4 #define col 3 void exibirresultado(int provNot[][col]); int main(){ int provNot [lin][col]; int i,j; printf("\n #########################################\n"); for(i=0; i<lin; i++){ printf("Digite a nota do %d aluno:\n",i+1); for(j=0; j<col; j++){ printf("Prova %d :\n",j+1); scanf("%d",&provNot[i][j]); } } exibirresultado(provNot); } //SUBPROGRAMA// void exibirresultado( int provNot[][col]){ //DECLARAÇÃP DE VARIAVEIS int i,j,menor[lin*col],provMnot,p1,p2,p3 ; //TESTE DE VERIFICAÇÃO DE QUAL É A MENOR NOTA DE CADA ALUNO p1=p2=p3=0; provMnot=0; for(i=0; i<lin; i++){ menor[i]=99999999; for(j=0;j<col;j++){ if(provNot[i][j]<menor[i]){ menor[i]=provNot[i][j]; provMnot=j; // provMnot recebe a coluna do menor valor?? } } if(provMnot==1){ /// se o valor de provNot =1 p1 recebe ele +1, assim contabilando quantidade de notas menores na p1.???? p1=p1+1; } if(provMnot==2){ p2=p2+1; } if (provMnot==3){ p3=p3+1; } provMnot=0; } // IMPRESSÃO DO RELATORIO COM A MENOR NOTA DA CADA ALUNO printf(" \n*************** RELATORIO DE MENOR NOTA POR ALUNO *************** \n\n"); for(i=0;i<lin;i++){ printf(" ALUNO %d , MENOR NOTA = * %d * \n\n",i+1,menor[i]); } printf(" **************************************************************\n"); //IMPRESSÃO DO RESULTADO DE QUANTIDADE DE MENORES NOTA NAS P1 P2 E P3 printf("Prova %d ,quantidade de menor nota : %d \n", 1, p1); printf("Prova %d ,quantidade de menor nota : %d \n", 2, p2); printf("Prova %d ,quantidade de menor nota : %d \n", 3, p3); }
  12. Certo, tenho outra pergunta, é possivel um vetor de v[4] ou v[4][1] receber os dados de uma matriz [4][3]. Neste caso eu so quero receber os dados da primeira linha da matriz e exibi-los. Ex. void exibirresultado( int provNot[][col]){ int i,j,menor[4][1],aux ; for(i=0; i<lin; i++){ menor[i][0]=99999999; for(j=0;j<col;j++){ if(provNot[i][j]<menor[i][j]){ menor[i][j]=provNot[i][j]; } } } for(i=0;i<lin;i++){ printf("%d ",i+1); for(j=0;j<1;j++){ printf(" = %d \n",menor[i][j]); } } }
  13. Muito obrigado deu certo, queria entender que alem da mudança que você fez na parte do i e j iniciando com 0(algo que entendi),porque teve de utilizar tam e vez de numeros para definindo o tamanho do vetor? poís percebi que só funciona se utilizar TAM.;-;

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