Aquí dejo
un par de tutoriales de programación en lenguaje C muy útiles para problemas
concretos, no los encontraras en ningún lado porque yo mismo los hice en base a
mi propia experiencia a lo largo de los años que pasé, mientras estaba en la
universidad estudiando la carrera de informática. Suerte.
Tutorial 1.- Cómo
calcular millones de datos sin que la PC se vuelva loca en c/c++
Tutorial 2.- Cómo hacer que en operaciones el resultado me dé en números decimales y enteros según sea el caso, en la misma operación.
TUTORIAL 1
Para empezar las típicas funciones como int, float sólo permiten la entrada de datos enteros o reales, y aunque el resultado sea un número entero, de todos modos te lanza el valor con decimales, y por cierto no te permite manejar muchos datos, cantidades arriba de los 35,000 en enteros tiene problemas la pc trabajando con C/C++, y las operaciones con float[reales] sólo abarca cantidades menores de 10,000000 dígitos.
Ejemplo:
//programa que al introducir un número lo multiplique por 8
Tutorial 2.- Cómo hacer que en operaciones el resultado me dé en números decimales y enteros según sea el caso, en la misma operación.
TUTORIAL 1
Para empezar las típicas funciones como int, float sólo permiten la entrada de datos enteros o reales, y aunque el resultado sea un número entero, de todos modos te lanza el valor con decimales, y por cierto no te permite manejar muchos datos, cantidades arriba de los 35,000 en enteros tiene problemas la pc trabajando con C/C++, y las operaciones con float[reales] sólo abarca cantidades menores de 10,000000 dígitos.
Ejemplo:
//programa que al introducir un número lo multiplique por 8
#include<conio.h>
#include<stdio.h>
float a,b; //aquí declaro a las variables reales, pues
main() //son más precisas
{
clrscr();
printf("Dame un dato: ");
//para empezar aquí cualquier resultado
scanf("%f",&a); //me va a dar con decimales, aunque sea entero
b=a*8;
printf("\n\n Resultado=%f",b); //no puedo ponerle que sólo acepte enteros
getch(); //pues si alguien pone un número real todo
} //el resultado sería erróneo.
En este programa aunque el resultado sea entero me va a dar con decimales, por ejemplo si le meto 8 en el programa me va a dar 64.00000 como resultado, y en el caso que le meta el número 0.31 el resultado seria 2.480000, aunque es correcto me da muchos números decimales extras.
Pero acaso hay una manera en la cual yo pueda tratar números enteros y reales al mismo tiempo?, como por ejemplo que al hacer una división si el resultado es un número entero sólo me ponga el número sin decimales, y si en esta misma división el resultado sea un valor real, me ponga el resultado con decimales, tratándolas en la misma operación, y es más, números mayores a 10,000000????
Pues mi respuesta es Sí.
Con la función double puedes declarar variables de esta forma, ya sin preocuparte si son enteros o reales, o números muy largos, ejemplo:
double a,b,x1;
y la manera de asignarles valor en un programa es la siguiente:
printf("Dame un numero: ");
scanf("%lf",&a); //probablemente lf significa long float
Y para tratar esos datos o concatenarlos es la siguiente:
printf("El numero es: %g",a);
Veamos un ejemplo de cómo utilizar esta función:
//Programa que saca raíz cuadrada con resultado exacto
#include <conio.h>
#include <stdio.h>
#include <math.h> //para hacer algunas operaciones matemáticas
//complejas, la librería math.h es la solución
double c,raiz; //aquí declaro las variables con double
main()
{
clrscr();
printf("Dame un numero: ");
scanf("%lf",&c); //aquí se declaró la variable como tipo lf
raiz=sqrt(c); //operación para calcular la raíz
printf("\nEl resultado es: %g",raiz); //para concatenar el resultado se utiliza
//la funcion %g en vez de %i o %f
getch(); //que son las típicas.
}
Por ejemplo una vez que corramos el programa si metemos el número 5, el resultado
nos dará 2.236060, pero si metemos el numero 4 nos dará por resultado 2, y esto
sin decimales.....oralee!!!!!
TUTORIAL 2
1.1 CÓMO CONTROLAR EL NÚMERO DE DECIMALES QUE ME ARROJE UN RESULTADO
2.0 TIPS Y TRUCOS DE CÓMO ESCRIBIR EN C++, Y TÉCNICAS DE ESPACIADO
#include<stdio.h>
float a,b; //aquí declaro a las variables reales, pues
main() //son más precisas
{
clrscr();
printf("Dame un dato: ");
//para empezar aquí cualquier resultado
scanf("%f",&a); //me va a dar con decimales, aunque sea entero
b=a*8;
printf("\n\n Resultado=%f",b); //no puedo ponerle que sólo acepte enteros
getch(); //pues si alguien pone un número real todo
} //el resultado sería erróneo.
En este programa aunque el resultado sea entero me va a dar con decimales, por ejemplo si le meto 8 en el programa me va a dar 64.00000 como resultado, y en el caso que le meta el número 0.31 el resultado seria 2.480000, aunque es correcto me da muchos números decimales extras.
Pero acaso hay una manera en la cual yo pueda tratar números enteros y reales al mismo tiempo?, como por ejemplo que al hacer una división si el resultado es un número entero sólo me ponga el número sin decimales, y si en esta misma división el resultado sea un valor real, me ponga el resultado con decimales, tratándolas en la misma operación, y es más, números mayores a 10,000000????
Pues mi respuesta es Sí.
Con la función double puedes declarar variables de esta forma, ya sin preocuparte si son enteros o reales, o números muy largos, ejemplo:
double a,b,x1;
y la manera de asignarles valor en un programa es la siguiente:
printf("Dame un numero: ");
scanf("%lf",&a); //probablemente lf significa long float
Y para tratar esos datos o concatenarlos es la siguiente:
printf("El numero es: %g",a);
Veamos un ejemplo de cómo utilizar esta función:
//Programa que saca raíz cuadrada con resultado exacto
#include <conio.h>
#include <stdio.h>
#include <math.h> //para hacer algunas operaciones matemáticas
//complejas, la librería math.h es la solución
double c,raiz; //aquí declaro las variables con double
main()
{
clrscr();
printf("Dame un numero: ");
scanf("%lf",&c); //aquí se declaró la variable como tipo lf
raiz=sqrt(c); //operación para calcular la raíz
printf("\nEl resultado es: %g",raiz); //para concatenar el resultado se utiliza
//la funcion %g en vez de %i o %f
getch(); //que son las típicas.
}
Por ejemplo una vez que corramos el programa si metemos el número 5, el resultado
nos dará 2.236060, pero si metemos el numero 4 nos dará por resultado 2, y esto
sin decimales.....oralee!!!!!
TUTORIAL 2
1.1 CÓMO CONTROLAR EL NÚMERO DE DECIMALES QUE ME ARROJE UN RESULTADO
2.0 TIPS Y TRUCOS DE CÓMO ESCRIBIR EN C++, Y TÉCNICAS DE ESPACIADO
(1.0) controlar el número de decimales en un resultado
Para
empezar, hay ocasiones en que al realizar un programa el resultado de alguna
operación te da con muchísimos decimales(alrededor de 8), y en algunos casos
sólo necesitamos de cifras con pocos decimales de precisión para que nos
cuadre. Existen funciones en el lenguaje c/c++ que no puede tratar cantidades con
muchos decimales, por ejemplo ésta: x=a*x2*x2+b*x2+c; para resolver este
problema se utiliza esta función en el printf (%.4f)(%.4g), cual quiera de los
2 casos funciona si fueran cantidades reales float, o compuestas double. Lo que
está diciendo arriba es que nuestra operación tendrá 4 decimales de precisión en el resultado, ejemplo:
//Programa que realiza una división de 2 números cualquiera (enteros o reales)
// con 4 decimales de precisión.
#include <conio.h>
#include <stdio.h>
double a,b,resultado;
main()
{
clrscr();
printf("Dame numero uno y dos: ");
scanf("%lf %lf",&a,&b);
resultado=a/b;
printf("\n\nSolucion de A entre B es:%.4g",resultado);// el número .4 indica que el resultado sera
getch(); //con 4 decimales de precisión
return 0;
}
Por
alguna extraña razón, a veces cuando utilizas %.2g hay problemas, puede que no
reconozca bien las variables double, pero usando el resultado con variables
float %.2f ese problema se ve solucionado.
(2.0) TRUCOS PARA ESCRIBIR EN C++, Y TÉCNICAS DE ESPACIADO.
Bien es
sabido que a veces necesitamos escribir mucho texto y varias cosas en C/C++,
aquí les voy a dar algunos tips y ejemplos:
printf("Hola
como estan, yo me llamo esteban"
" me gusta mucho salir a caminar y "
"ademas me la estoy pasando bien");
" me gusta mucho salir a caminar y "
"ademas me la estoy pasando bien");
Esto que acabamos de escribir se imprimirá en pantalla de esta manera:
Hola como estan, yo me llamo esteban me gusta mucho salir a caminar y ademas
me la estoy pasando bien.
También
existen casos en que necesitamos espaciar un poco en el programa, para evitar
tener que dejar en blanco una gran parte del programa en la función printf, he
aquí algunos ejemplos:
printf("\t\t\tResultados:"); //Esto aparecerá de la siguiente forma:
Resultados:
chequen el gran espacio en blanco, otra forma es la que sigue:
printf("%35s Valores",""); //esto imprimirá en pantalla lo que sigue:
valores
Vean
cuanto espacio avanzó "valores" sin necesidad de dejarlo en blanco en
el código fuente, esto se debe a que %35s es que avanzará 35 espacios hacia
adelante y luego imprimirá la palabra "valores". En esta función
printf("%35s Valores",""); después de la coma pusimos
"", esto significa que nuestro cursor avanzara 35 espacios y al final
imprimirá el dato que encuentre bajo comillas, en este ejemplo no hay
nada("") y sólo avanza.
Veamos otro ejemplo con esta función:
printf("1.%30s\n2.%30s\n3.%30s","nombre","edad","ocupacion");
Esta función imprimirá en pantalla lo siguiente:
1.
nombre
2. edad
3. ocupacion
2. edad
3. ocupacion
Vemos en
este ejemplo que cada vez que el programa encuentra %30s avanza hacia adelante
y luego antes de que se acaben los 30 espacios, escribe la primera palabra que
encuentra y luego se va así sucesivamente, como si se tratara de un programa x
que concatena variables, sólo que en este caso son palabras o datos.
Como en
el caso visto arriba, si %30s hace que avance 30 espacios, toma en cuenta la
palabra que va a concatenar, si es hola sólo avanzará 26 espacios pues los
otros 4 espacios son para la palabra hola y así a completen 30 espacios.
veamos este otro ejemplo:
printf("%s %15s %12s %32s","Nombre","Apellido","Edad"," Fecha de nacimiento"
"\n\nEsteban\t\tAngeles\t\t20\t10 de febrero de 1984");
Esto imprimirá en pantalla lo siguiente:
Nombre Apellido Edad Fecha de nacimiento
Esteban Angeles 20 10 de febrero de 1984
Otro
ejemplo de concatenar mensajes es la siguiente manera:
#include <conio.h>
#include <stdio.h>
char *mensaje1="Te estaba esperando";
char *mensaje2="Esteban";
char *mensaje3="Jamas vuelvas a dejarnos";
main()
{
clrscr();
printf("%s\n%19s\n%s",mensaje1,mensaje2,mensaje3);
getch();
}
Este programa imprimirá lo siguiente:
Te estaba esperando
Esteban
Jamas vuelvas a dejarnos
#include <conio.h>
#include <stdio.h>
char *mensaje1="Te estaba esperando";
char *mensaje2="Esteban";
char *mensaje3="Jamas vuelvas a dejarnos";
main()
{
clrscr();
printf("%s\n%19s\n%s",mensaje1,mensaje2,mensaje3);
getch();
}
Este programa imprimirá lo siguiente:
Te estaba esperando
Esteban
Jamas vuelvas a dejarnos
Espero te
hayan servido estos breves pero útiles tutoriales de lenguaje C. En otro post
de este blog pondré los códigos fuentes de pequeños pero potentes programas de
C/C++ que hice a lo largo de toda la carrera que estoy seguro te servirán, por
ejemplo contraseñas, contadores, relojes, menús y algunas otras curiosidades.
Saludos desde México.
No hay comentarios:
Publicar un comentario