[C con Clase] Consulta sobre ejemplo en C de promedios

Santiago Tabarez santiago230792 en gmail.com
Mar Oct 2 17:06:33 CEST 2012


Yo había encontrado el siguiente ejemplo escrito en C en internet:

------------------------------------------------------------------------------------------
/* Código creado por pax 2012 */

#include <stdio.h>
#include <conio.h>

int main(){
	
	int not1, not2, not3, opt;
	float prom;
	
	a: /*Inicio*/
	
	printf("Ingrese la nota del primer trimestre\n");
	scanf("%d", &not1);
	
	if(not1 > 10)
	
		{
		printf("\nLa nota del trimestre tiene que ser igual o menor a 10\n\n");
		goto a;
		}
	
	b:
	
	printf("Ingrese la nota del segundo trimestre\n");
	scanf("%d", &not2);
	
	if(not2 > 10)
	
		{
		printf("\nLa nota del trimestre tiene que ser igual o menor a 10\n\n");
		goto b;
		}
	
	c:
	
	printf("Ingrese la nota del tercer trimestre\n");
	scanf("%d", &not3);
	
	if(not3 > 10)
	
		{
		printf("\nLa nota del trimestre tiene que ser igual o menor a 10\n\n");
		goto c;
		}
	
	prom = (float) (not1 + not2 + not3) / 3;
	
	printf("\n La nota final es: %.2f\n", prom);
	
	
	if(prom >= 6)
		{
		printf("\nAPROBADO\n");						
		}
		
	if(prom < 6 && prom >= 4)
		{
		printf("\nDICIEMBRE\n");
		}

	if(prom < 4)
		{
		printf("\nMARZO\n");
		}
	
	
	
	/* Continuar - Finalizar */
	
	printf("\n\n¿Desea volver a operar?");
	printf("\n1. Si");
	printf("\n2. No\n");

	scanf("%i",&opt);

	if(opt == 1)goto a;

	printf("\n\nPresione una tecla para cerrar el programa");

	

	getch();

	return 0;
}


------------------------------------------------------------------------------------------

pero algo no me había convencido de este ejemplo, así que lo modifiqué un poco:

------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

#if defined (linux)
#define TERM_CLEAN "clear"

#else
#define TERM_CLEAN "cls"
#endif

int resolver_promedio (void);

int main (void)
{
	int init = resolver_promedio ();

	system (TERM_CLEAN);

	if (init == 1)
	{
		resolver_promedio ();

	}

	printf("\n\nPresione una tecla para cerrar el programa");
	getchar ();
	getchar ();
	return 0;
}

int resolver_promedio (void)
{
	unsigned int nota1 = NULL, nota2 = NULL, nota3 = NULL, opcion, promedio;

	do {
		system (TERM_CLEAN);
		printf ("Ingrese la nota del primer trimestre\nEl rango de notas es
0 - 10\n");
		scanf ("%d", &nota1);
	} while (nota1 > 10);
	
	do {
		system (TERM_CLEAN);

		printf ("Ingrese la nota del segundo trimestre\nEl rango de notas es
0 - 10\n");
		scanf ("%d", &nota2);
	} while (nota2 > 10);

	do {
		system (TERM_CLEAN);
		printf ("Ingrese la nota del tercer trimestre\nEl rango de notas es
0 - 10\n");

		scanf ("%d", &nota3);
	} while (nota3 > 10);

	system (TERM_CLEAN);
	promedio = ((nota1 + nota2 + nota3) / (3));

	if (promedio >= 6)
		printf ("\nPromedio anual %d\tAPROBADO\n", promedio);

	else if ((promedio < 6) && (promedio >= 4))
		printf ("\nPromedio anual %d\tEXAMEN DICIEMBRE\n", promedio);
	else if (promedio < 4)
		printf ("\nPromedio anual %d\tEXAMEN MARZO\n", promedio);

	printf("\n\n¿Desea calcular otros promedios anuales?"
		   "\n1. Si"
		   "\n0. No\n");
	scanf("%i", &opcion);
	if (opcion == 1)
		return 1;
	
	return 0;

}


------------------------------------------------------------------------------------------

¿Qué les parece? ¿En qué podría estar fallando el ejemplo original y
el ejemplo modificado por mí? ¿Tienen alguna recomendacion que quieran
hacerme?
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20121002/eba196fb/attachment.html>


Más información sobre la lista de distribución Cconclase