ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Programa en C para manejo de puntos en R2

TheTortillasTarea12 de Mayo de 2021

1.652 Palabras (7 Páginas)81 Visitas

Página 1 de 7

//Programa desarrollado por Sebastian Morales Palacios

//Grupo 1CV13

#include <stdio.h>

#include <math.h>

#include <locale.h>

#include <string.h>

#include <stdlib.h>

#include <time.h>

struct Distancias{

double X1, Y1, X2, Y2;

double tam;

}DISTA[100][100];

struct punto{

int ID;

double X;

double Y;

double modulo;

double angulo;

}coordenada[100];

int acum=0;

char PuntoX[100], PuntoY[100], identificador[100];

FILE * fp;

void Imprimir();

void Modulo();

void Angulo();

void DistanciaEntrePuntos();

void SumaDosPuntos();

void RestaDosPuntos();

void MultiplicacionDosPuntos();

void DivisionDosPuntos();

void Compendio();

void DistanciaMaxMin();

void DistanciaEntreDosPuntos();

int main(){

srand(time(NULL));

setlocale(LC_CTYPE, "Spanish");

int n, opc, opc1, detalles, detalles2, puntito, pmaxX, pminX, pmaxY, pminY, i, j;

int x;

double max, min, x1, y1, x2, y2, a1, b1, a2, b2;

FILE *archivo;

printf("\n\n ****Bienvenido a la Calculadora de puntos en R2****\n\n");

printf(" - Ingrese la cantidad de puntos a manejar: ");

scanf(" %d", &n);

printf("\n ¿De que forma desea llenar los puntos?:\n");

printf(" 1. Manualmente.\n");

printf(" 2. Pseudoaleatoria(Generado por Computadora).\n");

printf(" 3. Leer un documento de texto.\n");

scanf(" %d", &opc1);

switch (opc1) {

case 1:

for(x=0; x<n; x++){

acum++;

coordenada[x].ID = acum;

printf("\n");

printf("\n");

printf("****PUNTO [%d]****",x);

fflush(stdin);

printf("\n- Valor de X: ");

scanf("%lf", &coordenada[x].X);

fflush(stdin);

printf("- Valor de Y: ");

scanf("%lf", &coordenada[x].Y);

printf("\n");

}

system("cls");

Imprimir();

Modulo();

Angulo();

DistanciaEntrePuntos();

Compendio();

printf("\n\n¡Puntos leídos correctamente!\nPresione cuakquier tecla para avamzar al menú\n");

system("pause");

system("cls");

break;

case 2:

for(x=0; x<n; x++){

acum++;

fflush(stdin);

coordenada[x].X = rand () % (-200-200+1) - 200;

fflush(stdin);

coordenada[x].Y = rand () % (-200-200+1) - 200;

}

system("cls");

Imprimir();

Modulo();

Angulo();

DistanciaEntrePuntos();

Compendio();

printf("\n\n¡Puntos generados correctamente!\n Presione cualquier tecla para avamzar al menú\n");

system("pause");

system("cls");

break;

case 3:

fp = fopen("PUNTOS.txt", "r");

fclose(fp);

system("cls");

Imprimir();

Modulo();

Angulo();

DistanciaEntrePuntos();

printf("\n\n¡Puntos leidos correctamente! Presione cualquier tecla para avamzar al menú\n");

system("pause");

system("cls");

break;

default: puts("Error");

}

do

{

printf("\n\n ****Bienvenido a la Calculadora de puntos en R2****\n\n");

printf(" - ¿Qué desea hacer con los puntos que ingresó?\n\n ");

printf(" 1.- Sumar puntos\n");

printf(" 2.- Restar puntos\n");

printf(" 3.- Multiplicar puntos\n");

printf(" 4.- Dividir puntos\n");

printf(" 5.- Determinar distancia entre puntos\n");

printf(" 6.- Determinar la mayor y menor distancia entre puntos\n");

printf(" 7.- Imprimir detalles de puntos\n");

printf(" 8.- Salir\n");

scanf("%d",&opc);

switch (opc) {

case 1:

system("cls");

SumaDosPuntos();

system("pause");

system("cls");

break;

case 2:

system("cls");

RestaDosPuntos();

system("pause");

system("cls");

break;

case 3:

system("cls");

MultiplicacionDosPuntos();

system("pause");

system("cls");

break;

case 4:

system("cls");

DivisionDosPuntos();

system("pause");

system("cls");

break;

case 5:

system("cls");

printf("\n\n 1.- Calcular distancia entre todos los puntos");

printf("\n 2.- Calcular distancia entre dos puntos especificos\n\n ");

scanf(" %d", &detalles2);

if(detalles2 == 1){

system("cls");

DistanciaEntrePuntos();

system("pause");

system("cls");

}

else if(detalles2 == 2){

system("cls");

DistanciaEntreDosPuntos();

system("pause");

system("cls");

}

else{

printf("\n NO EXISTE ESTA OPCION\n\n");

}

break;

case 6:

system("cls");

max = 0;

min = 100000;

for(i=0;i<acum;i++){

for(j=0;j<acum;j++){

if (DISTA[i][j].tam > max){

x1 = DISTA[i][j].X1;

y1 = DISTA[i][j].Y1;

x2 = DISTA[i][j].X2;

y2 = DISTA[i][j].Y2;

max = DISTA[i][j].tam;

pmaxX = i;

pmaxY = j;

}

if (DISTA[i][j].tam < min && DISTA[i][j].tam != 0){

a1 = DISTA[i][j].X1;

b1 = DISTA[i][j].Y1;

a2 = DISTA[i][j].X2;

b2 = DISTA[i][j].Y2;

min = DISTA[i][j].tam;

pminX = i;

pminY = j;

}

}

}

printf("\n- Distancia Máxima es: %.2lf ", DISTA[pmaxX][pmaxY].tam);

printf("\n- Del punto: ( %.2lf , %.2lf ) al punto ( %.2lf , %.2lf ) ", x1, y1, x2, y2);

printf("\n\n- Distancia Mínima es: %.2lf ", DISTA[pminX][pminY].tam);

printf("\n- Del punto: ( %.2lf , %.2lf ) al punto ( %.2lf , %.2lf ) ", a1, b1, a2, b2);

archivo = fopen("resultadosDeDistancias.txt.","w+");

fprintf(archivo, " DISTANCIAS\n\n");

fprintf(archivo, "\n- Distancia Máxima es: %.2lf ", DISTA[pmaxX][pmaxY].tam);

fprintf(archivo, "\n- Del punto: ( %.2lf , %.2lf ) al punto ( %.2lf , %.2lf ) ", x1, y1, x2, y2);

fprintf(archivo, "\n\n- Distancia Mínima es: %.2lf ", DISTA[pminX][pminY].tam);

fprintf(archivo, "\n- Del punto: ( %.2lf , %.2lf ) al punto ( %.2lf , %.2lf ) ", a1, b1, a2, b2);

fprintf(archivo,"\n\n");

printf("\n");

printf("\n");

for(i=0;i<acum;i++){

for(j=0;j<acum;j++){

fprintf(archivo,"\n- Distancia entre [%.2lf , %.2lf] y [%.2lf , %.2lf] = %lf",coordenada[i].X, coordenada[i].Y, coordenada[j].X, coordenada[j].Y ,DISTA[i][j].tam);

}

}

rewind(archivo);

fclose(archivo);

system("pause");

system("cls");

break;

case 7:

system("cls");

printf("\n\n 1.- Imprimir detalles de todos los puntos");

printf("\n 2.- Imprimir detalles de un punto especifico\n\n ");

scanf(" %d", &detalles);

int i;

if(detalles == 1){

system("cls");

for(i=0;i<acum;i++) {

printf("\n\n");

printf(" ****PUNTO [%d]**** ",i);

printf("\n - X: %.2lf",coordenada[i].X);

printf("\n - Y: %.2lf",coordenada[i].Y);

printf("\n");

printf("\n - Módulo: %.2lf",coordenada[i].modulo);

printf("\n - Ángulo: %.2lf°",coordenada[i].angulo);

printf("\n");

}

...

Descargar como (para miembros actualizados) txt (14 Kb) pdf (61 Kb) docx (19 Kb)
Leer 6 páginas más »
Disponible sólo en Clubensayos.com