Ir al principioc | Ir al final
Home

Calcumat
Calcumat.ProgramacionCr1.9 - 29 May 2005 - 17:52 - JuanLopezabajo

Start of topic | Skip to actions

Programación en C

logoc.jpeg

Aunque la calculadora es una herramienta muy potente para casi todas las operaciones matemáticas que deseemos, a la hora de correr programas se ven condicionadas por dos factores: el lenguaje de programación que implementan (normalmente un intérprete de BASIC) y en segundo lugar el procesador que llevan que es bastante lento. Para ello, la solución es echar mano del ordenador y en este caso crearnos nuestras propias rutinas. Para mí, el lenguaje ideal para ello por su rapidez es C. Además tenemos la suerte de que viene implementado en Linux de serie, así como el compilador del mismo.

Voy a añadir una serie de programas simples por si los quieres probar y usar en Linux

Guadalinex trae un compilador de C instalado de serie el gcc

Para escribir un programa en C en Gualinex puedes utilizar un Editor simple de texto como Gedit y guardar el fichero con el nombre fichero.c (es decir el nombre que quieras seguido de un punto y la letra c).

Puedes utilizar la opción de Copiar y Pegar con el código de esta página CRTL+C (copia) y CRTL+V (Pega)

Para compilarlo y crear un ejecutable abres un xterm y escribes:

$gcc -o fichero fichero.c (fichero es el ejecutable que te va a crear el compilador)

Para hacer correr el ejecutable creado escribes en el xterm:

$./fichero


Programa para hallar todos los divisores de un número

/* Calcula todos los divisores de un número */
/* Juan López Sánchez (c) Jls-Soft'2003 */

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

main()
{
unsigned long int numero,mitad,retardo,x=1;

inicio:system ("clear"); /*si estuvieses programando en el lado oscuro system ("cls")*/
printf("Introduce un numero para calcularle todos sus divisores: ");
scanf ("%d",&numero);
mitad=numero/2;

for (x=1;x<=mitad;++x)

{

if (numero%x==0) printf ("%d, ",x);

}

printf ("%d\n\n",numero);
printf ("JuanLopez'2003. Powered C++\n\n");
printf ("\n\nPulsa 1 + Intro para otra vez, otro numero acaba ");
scanf ("%d",&retardo);
if (retardo==1) goto inicio;

}


Programa para calcular el factorial de un número

En realidad, el cálculo del factorial es una función implementada en la calculadora, pero incluyo esta rutina que por su simpleza puede ayudar a comprender la estructura de un programa en C.

/* Programa para Calcular el factorial de un número */
/* Juan López Sánchez (c) Jls-Soft'2003 */

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

main()
{

float numero,x=1,factorial;
int retardo;
inicio:system ("clear");//en el lado oscuro system ("cls");
printf("Introduce un numero para calcularle su factorial: ");
scanf ("%f",&numero);

factorial=numero; //inicializar variables//

for (x=1;x<=numero-1;++x)

{

factorial=factorial*x;

}

printf ("\n\nEl factorial de %f es %f ",numero,factorial);
printf ("\n\nJuanLopez'2003. Programado en C++\n\n");
printf ("\n\nPulsa 1 + Intro para otra vez. Otro numero acaba: ");
scanf("%d",&retardo);
if (retardo==1) goto inicio;

}


Divertido programa para trabajar el Cálculo mental.

Aplicable desde niños de 3º y 4º de Primaria.

/* Adivina un número del 1 al 100 */
/* Tienes 6 intentos */
/* Juan López Sánchez (c) Jls-Soft'2003 */

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

double rnd (long *prandom);

main ()
{

principio:system ("clear");

long inicio = time (NULL) % 65536; //semilla
long random = inicio; //random=numero entre 0 y 65535
unsigned short pensado, mayor, diferencia, otravez, n_intentos=6,x = 1;
float numero1;

numero1 = rnd (&random);
unsigned short numero = numero1 * 101;
printf ("*** Este juego trata de acertar un número del 1 al 100 ***\n");
printf("*** Primero tienes que elegir en cuántos intentos lo vas a acertar ***\n");
printf(" ¡¡¡ Con 6 intentos te garantizas casi el éxito !!!\n\n");
printf("Teclea el número de intentos y da Intro: ");
scanf("%d",&n_intentos);

printf ("*** Tienes %d intentos para acertar un número del 1 al 100 ***\n\n",n_intentos);

printf("*****************************************************************\n");

for (x = 1; x <= n_intentos; ++x)

{

printf ("\nIntento %d Introduce un número: ", x);
scanf ("%d", &pensado);

if (pensado == numero)

{
printf ("Estupendo, lo has adivinado en %d intentos", x);
goto salir;

}

mayor = (numero > pensado) ? numero : pensado;
if (mayor == numero)
{

diferencia = numero - pensado;
if (diferencia < 10)
printf ("\nTe faltan menos de 10 unidades\n");
else
printf ("\nTe faltan más de 10 unidades\n");
}
else
{
diferencia = pensado - numero;
if (diferencia < 10)
printf ("\nTe has pasado en menos de 10 unidades\n");
else
printf ("\nTe has pasado en más de 10 unidades\n");
}

}

salir:printf ("\n\nEl número era el: %d ", numero);

printf ("\nPulsa 1 más Intro para otra vez, otro número acaba ");
scanf ("%d", &otravez);
if (otravez == 1)
goto principio;

printf("\n**** Adivina ver 2.0 *****\n");
printf ("\nJuanLopez'2003. Adict to Linux\n\n");

}

double
rnd (long *prandom)
{
*prandom = (25173 * *prandom + 13849) % 65536;
return ((double) *prandom / 65535);
}


Programa para calcular el máximo común divisor de tres números

Es interesante el uso de la recursividad. La función mcd se llama a sí misma

/**************** Maximo Comun divisor ***********/
// utilizando el algoritmo de Euclides
// (c) Juan Lopez Sanchez 2003

#include<stdio.h> //libreria de entrada y salida

#include<stdlib.h> //libreria para las llamadas al sistema

unsigned long int divisor;

unsigned long int mcd(unsigned long int numero1,unsigned long int numero2);

main ()

{ unsigned long int numero_1,numero_2,numero_3;

system("clear"); // llamada al sistema, limpia la pantalla

printf("Programa para calcular el mcd de tres numeros\n");
printf(" ** Utiliza el algoritmo de Euclides **\n\n\n");
printf("Introduce primer numero: ");
scanf("%d",&numero_1);
printf("\nIntroduce segundo numero: ");
scanf("%d",&numero_2);
printf("\nIntroduce segundo numero: ");
scanf("%d",&numero_3);
mcd(numero_1,numero_2);
mcd(numero_3,divisor);
printf("\nEl maximo comun divisor es %d\n ",divisor);

printf ("\n\nFIN. (C) Jls-Soft'2003. Adict to Linux\n\n\n");

}

unsigned long int mcd(unsigned long int numero1,unsigned long int numero2)

{ unsigned long int resto,dividendo;
long int contador;

contador=1;
dividendo=numero1;
divisor=numero2;
resto=numero1%numero2;

while (contador>=0)

{

if (dividendo%divisor==0){

//printf("\nEl maximo comun divisor es %d\n ",divisor);
return (divisor);
contador=-1;

}

else{

resto=dividendo%divisor;
dividendo=divisor;
divisor=resto;

} }

}

Programa para averiguar máximo común divisor y mínimo común múltiplo usando congruencias

// Programa para calcular el máximo común divisor y mcm de dos números usando congruencias
// (c) Juan López Sánchez ' 2005
#include <iostream>

int main (int argc, char * const argv[]) {
// insert code here...
system ("clear");
unsigned long n1,n2,n3,n4;
printf("Introduce primer número: ");
scanf("%d",&n1);
n3=n1;
printf("Introduce segundo número: ");
scanf("%d",&n2);
n4=n2;
while (n1!=n2)
{
if (n1>n2)
n1=n1-n2;
else
n2=n2-n1;
}
printf ("\n\nEl máximo común divisor es: %d\n\n",n1);
printf ("El mínimo común múltiplo es: %d",n3*n4/n1);

return 0;
}


-- JuanLopez - 17 Sep 2004

El pingüino ya no tiene frío


arriba

I Fichero sort Acción Tamaño Fecha Por Comentario
logoc.jpeg gestionar 9.6 K 16 Sep 2004 - 19:55 JuanLopez  
programasc.tar gestionar 60.0 K 20 Sep 2004 - 12:02 JuanLopez Ejecutables de los programas anteriores

Estás aquí: Calcumat > ProgramacionC

arriba

Copyright © 2004 por los autores que han contribuido al desarrollo de esta web. Todos los materiales son propiedad de sus respectivos autores.
Para cualquier consulta o sugerencia contactar con TWiki.WebMaster