Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[APORTE] ejercicio resuelto de un primer parcial de info1
Autor Mensaje
poincare15 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 2
Agradecimientos dados: 0
Agradecimientos: 1 en 1 posts
Registro en: Apr 2015
Mensaje: #1
[APORTE] ejercicio resuelto de un primer parcial de info1 Ejercicios Informática I (Electrónica)
La consigna del ejercicio era crear un programa que simulara un torneo de tiro al blanco, en el cual se ingresaba:
_el nombre de cada participante (el programa dejaba de pedir nombres de jugadores cuando se ingresaba ZZZ como nombre de un participante)
_las coordenadas en el eje x e y de cada tiro (cada jugador tenia la posibilidad de dar tres tiros).

Te daban dos funciones obligatorias para usar.
float dist(float ,float). Función que calcula la mejor distancia.
void menu(struct datos*,int ,int). Función que recibe un puntero a estructura, la cantidad de participantes y 1 o 2.
Siendo 1 para que imprima los resultados ordenados por la distancia de menor a mayor y 2 para ordenarlos alfabeticamente.




/*programa que simula el tiro al blanco de varios jugadores(para dejar de
ingresar jugadores se introduce ZZZ). Cada jugador
tiene la posibilidad de dar tres tiros(se ingresa por teclado cada tiro),se
calcula la mejor distancia y se elije como se desea ver los resultados*/
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define ARG 3

struct datos{
char nombre[20];
float ejex;
float ejey;
float distancia;
};

void menu(struct datos*,int ,int);
void ordenar(float *,int); //prototipos obligatorios a usar
float dist(float ,float);

int main(void)
{
int x,a,b,comparacion,contador=0,cont,op;
float arrayx[ARG];
float arrayy[ARG];
char vec[]="ZZZ";
struct datos vector[100]; //vector de estructuras
struct datos *p; //puntero a estructura
p=vector;
for(x=0;x<=100;x++)
{
printf("ingrese el nombre del participante num %d\n",x+1);
gets(vector[x].nombre);
fflush(stdin); //vaciado de buffer
comparacion=strcmp(vec,vector[x].nombre); //comparamos el nombre introducido
if(comparacion!=0)
{
printf("ingrese las tres coordenadas del eje x\n");
for(a=0;a<=ARG-1;a++)
{
scanf("%f",&arrayx[a]);
fflush(stdin);
}
ordenar(arrayx,ARG);
vector[x].ejex=arrayx[0];
printf("ingrese las tres coordenadas del eje y\n");
for(b=0;b<=ARG-1;b++)
{
scanf("%f",&arrayy[b]);
fflush(stdin);
}
ordenar(arrayy,ARG);
vector[x].ejey=arrayy[0];
contador++; //cuenta la cantidad de participantes
}
else
{
break;
}
}
for(cont=0;cont<=contador-1;cont++)
{
vector[cont].distancia=dist(vector[cont].ejex,vector[cont].ejey);
}
printf("\nmejores distancias calculadas\n");
printf("1.ver resultados odenados por mejor distancia\n");
printf("2.ver resultados ordenados alfabeticamente\n");
ETIQUETA:
printf("ingrese:\t");
scanf("%d",&op);
switch(op)
{
case 1:
menu(p,contador,1);
break;
case 2:
menu(p,contador,2);
break;
default:
printf("no es una opcion correcta..\nvuelva a ingresar\n");
goto ETIQUETA;
}
return 0;
}

void ordenar(float *p,int c)
{
float temp;
int x,y;
for(x=0;x<=c-1;x++)
{
for(y=0;y<=c-2;y++)
{
if(p[y]>p[y+1])
{
temp=p[y];
p[y]=p[y+1];
p[y+1]=temp;
}
}
}
}

float dist(float a,float b)
{
float res;
res=sqrt((a*a)+(b*b));
return res;
}

void menu(struct datos *p,int a, int b)
{
int c=a;
struct datos f;
int x,y,z,k,comp;
if(b==1)
{
for(x=0;x<=a-1;x++)
{
for(y=0;y<=a-2;y++)
{
if((p[y].distancia)>(p[y+1].distancia))
{
f=p[y];
p[y]=p[y+1];
p[y+1]=f;
}
}
}
for(k=0;k<=c-1;k++)
{
printf("\nnombre: %s\n",p[k].nombre);
printf("mejor distancia eje x : %.2f\n",p[k].ejex);
printf("mejor distancia eje y : %.2f\n",p[k].ejey);
printf("distancia: %.2f\n",p[k].distancia);
}
}
else
{
for(x=0;x<=a-1;x++)
{
for(y=0;y<=a-2;y++)
{
comp=strcmp(p[y].nombre,p[y+1].nombre);
if(comp>0)
{
f=p[y];
p[y]=p[y+1];
p[y+1]=f;
}
}
}
for(k=0;k<=c-1;k++)
{
printf("\nnombre: %s\n",p[k].nombre);
printf("mejor distancia eje x : %.2f\n",p[k].ejex);
printf("mejor distancia eje y : %.2f\n",p[k].ejey);
printf("distancia: %.2f\n",p[k].distancia);
}
}


}
29-07-2015 18:31
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] poincare15 recibio 1 Gracias por este post
1600175 (06-12-2017)
inrockuptible Sin conexión
Campeon del cubo Rubik
Game over
****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 178
Agradecimientos dados: 29
Agradecimientos: 20 en 19 posts
Registro en: Jun 2012
Mensaje: #2
RE: [APORTE] ejercicio resuelto de un primer parcial de info1
de que profesor es ese parcial?
01-08-2015 21:45
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
poincare15 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 2
Agradecimientos dados: 0
Agradecimientos: 1 en 1 posts
Registro en: Apr 2015
Mensaje: #3
RE: [APORTE] ejercicio resuelto de un primer parcial de info1
PELLETIERI
07-08-2015 13:08
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 2 invitado(s)