Programa en C para manejo de puntos en R2
Enviado por TheTortillas • 12 de Mayo de 2021 • Tarea • 1.652 Palabras (7 Páginas) • 58 Visitas
//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;
...