-" Si esto le parece japonés adivine que dice acá: あなたのお母さんは私のガールフレンドです =D "

Practica de funciones (ejercicio 1 practico 2)

| lunes, 6 de septiembre de 2010
Actualizando en caliente desde el gabinete de computacion!



/*

Realizar en C, un programa que incluya las siguientes funciones:
a)una funcion que lea numeros enteros y cargue un arreglo de 30 componentes
enteros positivos validando la entrada de datos. Cuando el arreglo se completa se termina la escritura
b) Una funcion que retorne los valores 0, -1 o 1 segun el arreglo antes cargado este desordenado
ordenado ascendentemente o descendentemente
c) Una funcion que devuelva el promedio de los valores de las componentes del arreglo que ocupan posiciones
pares y el promedio valores de las componentes del arreglo que ocupan posiciones impares. En el programa
principal indicar el mayor de los promedios.

*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define N 3

// validar numeros solamente enteros y practica de paso de valores por return
int validar_entero(int V)
{
scanf("%d",&V);
fflush(stdin);

while(V<0)
{
printf("\nERROR ingrese nuevamente un numero entero\n");
scanf("%d",&V);
fflush(stdin);
}

return V;
}

//para practicar traspaso por referencias
void validar_booleano(char &son)
{
scanf("%c",&son);
fflush(stdin);

son=tolower(son);

while((son!='s')&&(son!='n'))
{
printf("\nERROR ingrese nuevamente letra S para si y N para no\n");
scanf("%c",&son);
fflush(stdin);

son=tolower(son);
}

}

void carga(int A[])
{
int i=0, v;

for(i=0;i<N;i++)
{
printf("\nIngrese valor %d para arreglo de %d componentes\n",i+1,N);
A[i]=validar_entero(v);
}

}

void mostrar(int A[])
{
int i;
printf("\n");
for(i=0;i<N;i++) printf(" %d ",A[i]);
printf("\n");
}

int orden(int A[])
{
int i,j;

//comprobando ascendentemente
for(i=0;(i<N-1)&&(A[i]<=A[i+1]);i++);

//Comprobando descendentemente
for(j=N-1;(j>0)&&(A[j]<=A[j-1]);j--);

if(i==N-1) return 1;
if(j==0) return -1;

//Comprobar si esta desordenado
if((i!=N-1)&&(j!=0)) return 0;

}

float promedio(int cual, int A[])
{
int i,contador=0;
float que=0;

for(i=cual;i<N;i++)
{

que+=A[i];
contador++;
i++;
}

que=que/contador;

return que;
}

int main(int argc, char *argv[])
{
int A[N];
char c;
float PEPE;

do
{
carga(A);
printf("\nEl arreglo que usted a ingresado es el siguiente\n");
mostrar(A);
printf("\nDesea usted cambiarlo? S o N ?\nS o N->");
validar_booleano(c);
}while(c=='s');

switch(orden(A))
{
case -1: printf("\nEl arreglo esta ordenado descendentemente\n");
break;

case 0: printf("\nEl arreglo esta desordenado\n");
break;

case 1: printf("\nEl arreglo esta ordenado ascendentemente\n");
break;

default:printf("\nEsto no deberia suceder\n");
exit(-1);
getchar();
break;

}


if((promedio(0,A))>(promedio(1,A)))
{
printf("\nEs mayor el promedio de los pares con %f\n",promedio(0,A));
}
else
{
if ((promedio(0,A))<(promedio(1,A)))
{
printf("\nEs mayor el promedio de los impares con %f\n",promedio(1,A));
}
else
{
printf("\nSon iguales con promedio %f\n",promedio(0,A));
}
}

getchar();
}

0 comentarios:

Publicar un comentario

licencia

Licencia de Creative Commons
Ejercicios de programación by Iván Neira (ae) is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Based on a work at paraserlicenciado.blogspot.com.