Ir ao conteúdo
  • Cadastre-se

Manipulando Arquivos


ThiagoThoz
Ir à solução Resolvido por ThiagoThoz,

Posts recomendados

Eu preciso fazer um programa em C que vai receber dados de um arquivo de entrada, fazer um calculo e escrever a saida em um arquivo de saida

 

 

Ex de entrada:

5  // quantidade de cidades
0 0 100 2 9 // coordenadas x de cada cidade
0 1 45 3 9  // coordenadas y de cada cidade
3 // quantidade de cidades
30 10 20 // coordenadas x de cada cidade
20 10 20 //  coordenadas y de cada cidade
0 // 0 indica final da entrada
 
Saída:
1 2 1.000000 // cidades com menor distancia (primeira entrada) e a distancia entre elas 
1 3 10.000000 //cidades com menor distancia (segunda entrada) e a distancia entre elas
 
A parte de leitura do arquivo e escrita eu sei as funcoes a serem usadas, porém como eu faria para esses dados serem escritos em vetor de inteiros e ele comparar por exemplo posicao x[1] com y[1].(colocando nos vetores a comparacao e o resultado é mais fácil )
 
 
Link para o comentário
Compartilhar em outros sites

  • Solução

Eu consegui fazer já ...

 

Segue codigo ...

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
 
int main()
{
    int tamanho;
    FILE *fp;
    fp = fopen("trembala.dat","r");
    if (fp == NULL){
        printf("\nError.");
        system("PAUSE");
    }else{
        printf("\nO arquivo trembala.dat foi aberto.");
        printf("\n");
        do{
        fscanf(fp, "%d", &tamanho);
        int coorX[tamanho];
        int coorY[tamanho];
        int i, k;
        printf("\n");
        for(i = 0; i< tamanho; i++){
            fscanf(fp, "%d", &coorX);
        }
        for(k = 0; k< tamanho; k++){
            fscanf(fp, "%d", &coorY[k]);
        }
        double aux = 199999;
        int auxA = 0;
        int auxB = 0;
        double valor;
        for(i = 0; i < tamanho; i++){
            for(k = i+1; k< tamanho; k++){
                int a,b,c,d;
                a = coorX;
                b = coorX[k];
                c = coorY[k];
                d = coorY;
                valor = sqrt(pow(b-a,2)+pow(c-d,2));
                if(valor<aux){
                    aux = valor;
                    auxA = i+1;
                    auxB = k+1;
                }
            }
        }
        if(tamanho!=0){
        printf("%d %d %.2f", auxA, auxB, aux);
        }
        }while(tamanho!=0);
    }
    printf("\n\nFechando o arquivo trembala.dat\n\n");
    fclose(fp);
    return 0;
}
 
Obrigado
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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