lunes, 8 de junio de 2009

Clases del Jueves

Estimados Alumnos:

No habra clases el jueves practicas el jueves, espero que entiendan que dichas practicas son un esfuerzo extra de mi parte, y en estos momentos estoy con certamenes, asi que intentare subirles algun ejemplo durante la semana en lugar de la practica.

sábado, 30 de mayo de 2009

Ayuyadigital

Un número es "Ayuyadigital" si todos sus digitos son distintos, esta es una variación del programa esPandigital que se paso en el laboratorio 6, en esta ocacion se usan punteros de una forma basica.
____________________________________________________
#include <stdio.h>
#include <stdlib.h>

int cuentadigitos(long long unsigned int);
int esAyuyadigital(long long unsigned int);

int main(void){
long long unsigned int numero;
printf("Ingrese su numero: ");
scanf("%I64u", &numero);
if (esAyuyadigital(numero)==-1){
printf("no se pudo asignar memoria\n");
system("pause"); return 0;}
/*esto de arriba es solo formalidad, es raro que con un programa como este se
acabe la memoria del computador*/
else if (esAyuyadigital(numero)==1) printf("%I64u es ayuyadigital\n", numero);
else printf("%I64u no es ayuyadigital\n", numero);
system("pause");
return 0;
}
int esAyuyadigital(long long unsigned int argumento){
short int* puntero,i,j; /*short porque solo almacenaremos los digitos que
son números pequeños, y contadores que no llegaran a numeros muy grandes*/
int n=cuentadigitos(argumento);/*Aca llamamos a una funcion simple que
cuenta los digitos del número*/
puntero=(short int*)malloc(n*sizeof(short int));//Asignamos memoria
if (puntero==NULL)
return -1;//retorna -1 para decir que hubo error en memoria
for(i=0;n>i;i+++){
*(puntero+i)=argumento%10;/*Guardamos cada digito en la
i-esima posicion del puntero*/
argumento/=10;
}
for(i=0;n>i;i++)/*ahora revisamos si tiene dos digitos iguales, si es asi,
se sale inmediatamente del programa, se debe considerar la salvedad de que i
y j deben ser distintos*/
for(j=0;n>j;j++){
if ((*(puntero+i)==*(puntero+j))&&(i!=j))
return 0;
}
}
return 1;
}

int cuentadigitos(long long unsigned int argumento){
/*Esto ya se a explicado bastante por lo cual no lo comentare*/
int contador=0;
while (argumento>0){
argumento/=10;
contador++;
}
return contador;
}
________________________________________________________

jueves, 28 de mayo de 2009

Aquí les entrego el programa para calcular raices cuadradas por el metodo de Newton Rapson que vimos en la practica de hoy.
__________________________________________________________
#include <stdio.h>
#include <stdlib.h>

double newton(double, double); /*Declaramos un prototipo de
funcion que recibe dos argumentos de tipo double*/
int main(void){
double x, e; //esta x no es necesariamente igual que la x
//de la funcion, ya que no es de alcance global
printf("Ingrese x: ");scanf("%lf", &x);//los datos deben ser de tipo flotante
printf("Ingrese e: ");scanf("%lf", &e);//y de doble presición
printf("La raiz de x es %lf, con una tolerancia de %.10lf\n", newton(x,e), e);
//en la linea superior llamamos a la funcion dentro del printf.
system("pause");
return 0;
}
double newton(double x,double epsilon){
double a=1; //La aproximación inicial es 1
int i=0, max_iter=100000000;//iteraciones maximas, si sobrepasa dichas iteraciones
//El programa se cierra, es opcional
if (x<0) //si calculamos la raiz de un número negativo
return -1; //el programa retorna un -1
while (((a*a-x)>=epsilon)||((a*a-x)<=(-1*epsilon))) //mientras el error sea
{a=(x/a+a)/2;i++; //Mayor que la tolerancia
//Siga realizando el ciclo
if (i>max_iter){
printf("Warning: Maximo numero de iteraciones excedidas\n");
return a;}}
return a;
} //luego retorne el valor
________________________________________________________
La comente bastante, pero si hay dudas posteenlas en los comentarios o a mi correo

sábado, 16 de mayo de 2009

Laboratorios Resueltos

Aca les entrego una copia de mis resoluciones de los laboratorios, les recuerdo que a pesar de que las resuelvo yo, no estan revisadas por el profesor y podrían tener uno que otro error  ya que los realizo rapido solo para ver si tiene la dificultad adecuada(Aunque de verdad no creo que haya error alguno).

Ademas les ruego a todos que se pongan de acuerdo deprisa en cuando al horario que les acomoda para la hora extra de practica, ya que mientras mas esperamos mas se perderan en la materia.

jueves, 7 de mayo de 2009

Ciclos y funciones

Aca les entrego un ejemplo más de ciclos, para los que estan perdidos todavia, en esta oportunidad es un programa que calcula el factorial de un número, y tambien entrego su equivalente en funciones, para que vayan adelantando algo de materia.
Si no entienden el ciclo todavia.... PONGANSE A ESTUDIAR.
Pueden descargar los códigos aqui

domingo, 26 de abril de 2009

Consultas.

Esta semana solo atendere consultas el dia lunes, el martes tengo clases todo el dia y el miercoles voy a estudiar para un certamen del jueves, asi que aprovechen para hacer todas las consultas que tengo el lunes, estare practicamente todo el dia en la sala de estudio del DIE, el resto de los dias solo atendere consultas via E-mail a alejandrowolf@udec.cl con asunto en el mensaje ALP2009, y no les garantizo que les responda el mismo día

Como bonus les entrego un programita que tal vez los ilumine un poco ;-)
___________________________________________________
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main(void){
    /*Este programa imprime el valor maximo de cada tipo de dato y la forma
    que se debe usar para imprimirlo*/
   printf("Short int max=\t\t%i\n", SHRT_MAX);
    printf("int max=\t\t%d\n", INT_MAX);
    printf("Unsigned int max=\t%u\n", UINT_MAX);
    printf("Long Max=\t\t%I64d\n", LONG_MAX);
    printf("Long Long Max=\t\t%I64d\n", LLONG_MAX);
    system("pause");
    return 0;
    }


miércoles, 22 de abril de 2009

Tarea 1:
Con respecto a la tarea 1, me ha llegado varias veces la misma duda:
lo que le piden calcular es la sumatoria de fiboncacci(n) con fibonacci(n) par,no con n par.
Por ejemplo, la serie de fibonacci comienza asi:
Fibonacci(0)=0
Fibonacci(1)=1
Fibonacci(2)=1
Fibonacci(3)=2
Fibonacci(4)=3
Fibonacci(5)=5
Fibonacci(6)=8
Fibonacci(7)=13
etc etc...
entonces la suma de los terminos pares de la serie de fibonacci sería:
0+2+8+..... etc etc


Atendere consultas a travez de mi correo alejandrowolf@udec.cl, Favor de poner en el asunto ALP2009.
Es recomendable que hagan la tarea desde ya