• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

dario1133

[Resolvido] ler em ficheiros...

3 mensagens neste tópico

gostava de saber como num ficheiro posso verificar quantas vezes existe determinada informação, e sabendo que essa informação existe pelo menos, por exemplo 10 vezes como faxo para a enviar para outro ficheiro..

obrigado pela ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sabes como abrir um ficheiro para leitura? E para escrita? Sabes como ler e escrever em ficheiros?

Tens algum código feito? Encalhaste em alguma parte?

Resumindo, podes ser um pouco mais específico? ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenho o seguinte codigo feito:

#include <stdio.h>
typedef struct{
        
        char c1,c2,matri[20];
        int n1,n2,n3,n4,nvezes;
        }cliente;

void lerparacliente( cliente v[]){
     
     int i=0,j=0,c=0,cf=0;
     FILE *fp,*fc;
     fp=fopen("viatura.txt","r");
     fc=fopen("cliente.txt","w+");
     if((fp==NULL)||(fc==NULL)){
                   printf("ERRO na abertura ficheiro\n");
                   return;
                   }
     
     for(i=0;i!=feof(fp);i+3){
                         fscanf(fp,"%[^:];%c;%c;%[^-];%d;%d;%[^-]%d;%d\n",&v[i].matri,&v[i].c1,&v[i].c2,&v[i].n1,&v[i].n2,&v[i].n3,&v[i].n4);
                         c++;
                         }


     cliente vf[100];
   
     for(i=0;i<=c;i++){
                       if((v[i].c1=='.')&&(v[i].c2=='.'))

                                                          
                                                          
                 
				   vf[i].c1=v[i].c1;
				   vf[i].c2=v[i].c2;
				   vf[i].n1=v[i].n1;
				   vf[i].n2=v[i].n2;
				   vf[i].n3=v[i].n3;
				   vf[i].n4=v[i].n4;
                       for(j=i+1;j<=c;j++){
                                           if((vf[i].c1==v[j].c1)&&(vf[i].c2==v[j].c2)&&(vf[i].n1==v[j].n1)&&(vf[i].n2==v[j].n2)&&(vf[i].n3==v[j].n3)&&(vf[i].n4==v[j].n4)){
                                          
										vf[i].nvezes++;
                                           v[j].c1='.';
                                           v[j].c2='.';
                                           }
										}
                                           
                       }
     
     for(i=0;i<=100;i++){
                       if(vf[i].nvezes>=2){
                                           fprintf(fc,"Matricula: %c%c-%d%d-%d%d\n",vf[i].c1,vf[i].c2,vf[i].n1,vf[i].n2,vf[i].n3,vf[i].n4);
                                           }
                       }
     fclose(fc);
     fclose(fp);
     }

	void registoviatura ( int hi, int hf, int mi, int mf, int si, int sf){
     char c1, c2;
     int i,n1,n2,n3,n4,validar=0;
     FILE *fp,*fpa;
     fp=fopen("viatura.txt","a+");
     fpa=fopen("parque.txt","a+");
     if((fp==NULL)||(fpa==NULL)){
                  printf("ERRO NA ABERTURA DO FICHEIRO\n");
                  return;
                  }
     do{
     printf("Introduza a matricula da viatura:\nIntroduza o caracter 1 \n");
 scanf("%s",&c1);
printf("intrduza o caracter2\n");
  scanf("%s",&c2);
  printf("Introduza o numero 1\n");
 scanf("%d",&n1);
  printf("Introduza o numero 2\n");
 scanf("%d",&n2);
  printf("Introduza o numero 3\n");
 scanf("%d",&n3);
  printf("Introduza o numero 4\n");
 scanf("%d",&n4);
     if((n1<0||n1>9)||(n2<0||n2>9)||(n3<0||n3>9)||(n4<0||n4>9)){
                                                                printf("Erro na introducao da matricula, insira de novo\n");
                                                                validar=1;
                                                                }
 else validar=0;
     }while(validar!=0);
     fprintf(fp,"Mátricula:%c%c-%d%d-%d%d\n",c1,c2,n1,n2,n3,n4);
     fprintf(fp,"Entrada: %d:%d:%d\n",hi,mi,si);
     fprintf(fp,"Saida: %d:%d:%d\n",hf,mf,sf);
 fprintf(fp,"*************************\n");
     fclose(fp);
     fprintf(fpa,"Mátricula:%c%c-%d%d-%d%d\n",c1,c2,n1,n2,n3,n4);
     fprintf(fpa,"Entrada: %d:%d:%d\n",hi,mi,si);
     fprintf(fpa,"Saida: %d:%d:%d\n",hf,mf,sf);
     fclose(fpa);
     printf("Ficheiro criado com sucesso\n");
}

  
int main()
{
int hi,mi,si,ti,hf,mf,sf,tf,i,                
  moedas_a_dar[8]={0,0,0,0,0,0,0,0},
  notas_a_dar[7]={0,0,0,0,0,0,0},
  moedas_flag=0,     
  notas_flag=0;    
cliente v[100];

float custo,pagamento=0,troco_t,
    moedas[8]={2.0,1.0,0.5,0.2,0.1,0.05,0.02,0.01},
    notas[7]={500.0,200.0,100.0,50.0,20.0,10.0,5.0};

FILE *fpa;
fpa=fopen("parque.txt","a+");
if(fpa==NULL){
               printf("ERRO NA ABERTURA DO FICHEIRO\n");
              }

printf ("bem vindo estimado cliente\n");
printf ("o seu carro tem de abandonar o parque no mesmo dia em que e estacionado\n");
printf("o estacionamento do carro so pode ser efectuado depois das 00:00:00\n");
printf("o seu carro deve sair do parque ate as 24:00:00 do mesmo dia\n");

printf("introduza a hora de chegada (tipo hora:minuto:segundo): \n");
printf("(a hora introduzida tem de ser maior que 00:00:00)\n");
scanf("%d:%d:%d",&hi,&mi,&si);
printf("introduza a hora de saida (tipo hora:minuto:segundo): \n");
printf("(a hora introduzida tem de ser menor que 24:00:00)\n");
scanf("%d:%d:%d",&hf,&mf,&sf);
ti=(hi*60*60)+(mi*60)+(si); 
tf=(hf*60*60)+(mf*60)+(sf);
tf=tf-ti;
  

registoviatura (hi,hf,mi,mf,si,sf);
lerparacliente(v);

sf=tf%60; 
tf=tf/60; 
mf=tf%60; 
hf=tf/60; 
if (hf>2) custo=hf*2;
else if ((hf<=2) && (hf>1)) custo=3.5;
   else if ((hf>=1) && (mf<30)) custo=2.5;
      else if ((mf<=30) && (mf>0)) custo=1.5;
     else custo=0;

if (custo==0) printf("operacao invalida, por favor verifique os dados introduzidos\n");
if (custo==0) return 0;
printf("Caro Cliente\n");
printf("O seu veiculo esteve %d ",hf);
if (hf==1) printf("hora, %d ",mf);
else printf("horas, %d ",mf);
if (mf==1) printf("minuto e %d ",sf);
else printf("minutos e %d ",sf);
if (sf==1) printf("segundo\n");
else printf("segundos\n");


printf("o montante a pagar vai ser de %1.2f euros\nintroduza o montante(valor igual ou superior ao pedido):",custo);
scanf("%f",&pagamento);
if (pagamento<custo) printf("falta dinheiro\n");
printf("recomece a introducao dos dados desde o inicio\n");
if(pagamento<custo) return 0;
if (pagamento>custo)
{
  troco_t=pagamento-custo;
  pagamento=pagamento-custo;
  
  if (pagamento>=notas[6])
  for(i=0;i<7;i++)
   if (pagamento-notas[i]>=0)
   {
    notas_a_dar[i]++;
    pagamento=pagamento-notas[i];
    notas_flag=1;
    --i;
   }
  
  if (pagamento>=moedas[7])
  for(i=0;i<8;i++)
   if ((pagamento-moedas[i])>=0)
   {
    moedas_a_dar[i]++;
    pagamento=pagamento-moedas[i];
    moedas_flag=1;
    --i;
   }

  printf("Estimado cliente\n");
  printf("Ira receber o troco de %1.2f euros em:\n",troco_t);
  if (notas_flag)
  {
   for (i=0;i<7;i++)
   if ((notas_a_dar[i]==1) && (notas_a_dar[i]>0))  
   printf("%d nota de %1.2f euros\n",notas_a_dar[i],notas[i]);
    else if (notas_a_dar[i]>0) 
            printf("%d notas de %1.2f euros\n",notas_a_dar[i],notas[i]);
  }
    if (moedas_flag)
  {
   for (i=0;i<8;i++)
   if ((moedas_a_dar[i]>0) && (moedas_a_dar[i]==1)) 
    printf("%d moeda de %1.2f euros\n",moedas_a_dar[i],moedas[i]);
   else if (moedas_a_dar[i]>0) 
    printf("%d moedas de %1.2f euros\n",moedas_a_dar[i],moedas[i]);
  }
}

fprintf(fpa,"Custo: %1.2f\n",custo);
fprintf(fpa,"Tempo: %d:%d:%d\n",hf,mf,sf);
fprintf(fpa,"*************************\n");



fclose(fpa);
printf("Obrigado e volte sempre...\n");
return 0;
}

este é o codigo que ja fiz, mas que axo que tem erros. o objectivo é modelar o sistema de uma maquina de pagamento num parque de estacionamento.. ou seja regista todos os veiculos que estacionam num ficheiro chamado viatura. encalhei na parte que tenho de ir a esse ficheiro ver se existem viaturas que ja estacionaram mais que 10 vezes, caso isso seja verdade tenho de copiar os dados dessa viatura para outro ficheiro chamado cliente onde irei aplicar uma taxa de 25% de desconto.

gostaria que me ajudassem!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora