Danielc escribió:Por que no tratas de user Dev c++??
Trollazo escribió:Danielc escribió:Por que no tratas de user Dev c++??
Gracias tio, este si me deja compilar y la verdad me dan muy buen royo los programas open source. De todas formas ya que tengo el otro instalado si alguien le ha dado alguna vez el mismo error que avise.
pinopop escribió:Una duda con C.... tengo algo de conocimiento, pero mis programas no se muestran.......Tengo(por ejemplo) el hello world ,pero al ejecutarlo solo parpade y se cierra rapido
a k se deve?
system("PAUSE");
getch("PAUSE");
#include <windows.h>
almeria27 escribió:pinopop escribió:Una duda con C.... tengo algo de conocimiento, pero mis programas no se muestran.......Tengo(por ejemplo) el hello world ,pero al ejecutarlo solo parpade y se cierra rapido
a k se deve?
Eso en algunos tutos que he leido lo comentan, debes poner esta linea, antes del return, si no te funcionara, prueba a poner esta otra en vez de esasystem("PAUSE");
.getch("PAUSE");
Un saludo.
Editado:
Por cierto , si loq ue estas utilizando es un compilador en windows , para que te funcione la linea de System debes incluir al principio tambien esto otro#include <windows.h>
Trollazo escribió:hola, tengo un problema con el compilador, antes me iva de puta madre pero ahora no deja de salirme este error:
LINK : fatal error LNK1561: se debe definir el punto de entrada
Uso visual c++ 2008, pero esque el error no es mio, ocurre con cualquier codigo, este bien o mal ¿alguien sabe que opccion tengo que toketear para correjirlo?
technik escribió:Trollazo escribió:hola, tengo un problema con el compilador, antes me iva de puta madre pero ahora no deja de salirme este error:
LINK : fatal error LNK1561: se debe definir el punto de entrada
Uso visual c++ 2008, pero esque el error no es mio, ocurre con cualquier codigo, este bien o mal ¿alguien sabe que opccion tengo que toketear para correjirlo?
Los errores de entry point estan muy bien solucionados en la documentacion on-line del visual C++
Lo que ocurre (si no recuerdo mal) es que no encuentra la function main porque no esta buscandola como debe. Cuando creas un nuevo proyecto, que tipo seleccionas? Porque no todos funcionan igual. Fijate sobre todo en la diferencia entre forms apliccation y console aplication y luego en lo de empty aplication.
Edit: Sobre lo del parpadeo, prueba a ejecutar los programas desde el simbolo del sistema (ejecurar->cmd). O programa con Visual C++ y te ahorras el problema. Visual C++ es puñetero al principio para el enlazado (Linking) pero cuando te haces con el es genial, y la intellisense...buf, te hace la vida sencilla jaja
#include <iostream>
int A ()
{
std::cout << " OOOOOO " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO OO O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO O " << std::endl ;
std::cout << "OO OOO" << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OOOO O " << std::endl ;
std::cout << " O O O " << std::endl ;
std::cout << " O " << std::endl ;
return 0;
}
int B ()
{
std::cout << " OOOOOO " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO OO O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO O " << std::endl ;
std::cout << "OOO OO" << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OOOO O " << std::endl ;
std::cout << " O O O " << std::endl ;
std::cout << " O " << std::endl ;
return 0;
}
int X ()
{
using std::cout;
using std::endl;
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
A();
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
B();
return 0;
}
int Y ()
{
using std::cout;
using std::endl;
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
A();
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
B();
if (X()<2)
Y ();
return 0;
}
int main()
{
X ();
if (X()<2)
Y ();
Y ();
if (Y()<2)
X ();
return 0;
}
int main()
{
float time = 0;
while(1){
X ();
time %= 1000;
while(time < 1000){time += timeGetTime();}
Y ();
time %= 1000;
while(time < 1000){time += timeGetTime();}
}
return 0;
}
Trollazo escribió:technik escribió:Trollazo escribió:hola, tengo un problema con el compilador, antes me iva de puta madre pero ahora no deja de salirme este error:
LINK : fatal error LNK1561: se debe definir el punto de entrada
Uso visual c++ 2008, pero esque el error no es mio, ocurre con cualquier codigo, este bien o mal ¿alguien sabe que opccion tengo que toketear para correjirlo?
Los errores de entry point estan muy bien solucionados en la documentacion on-line del visual C++
Lo que ocurre (si no recuerdo mal) es que no encuentra la function main porque no esta buscandola como debe. Cuando creas un nuevo proyecto, que tipo seleccionas? Porque no todos funcionan igual. Fijate sobre todo en la diferencia entre forms apliccation y console aplication y luego en lo de empty aplication.
Edit: Sobre lo del parpadeo, prueba a ejecutar los programas desde el simbolo del sistema (ejecurar->cmd). O programa con Visual C++ y te ahorras el problema. Visual C++ es puñetero al principio para el enlazado (Linking) pero cuando te haces con el es genial, y la intellisense...buf, te hace la vida sencilla jaja
Debes tener razon, lo empiezo como proyecto vacio y luego creo un cpp. ahora ahondare.
Lo del parpadeo no es lo que dizes, ya lo tengo to controlao, me muevo en la consola. Mira, te pongo el codigo que me estoy currando para que veas lo que quiero hacer. Aviso que solo le habre echado 3 horitas en total para aprender C desde 0:#include <iostream>
int A ()
{
std::cout << " OOOOOO " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO OO O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO O " << std::endl ;
std::cout << "OO OOO" << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OOOO O " << std::endl ;
std::cout << " O O O " << std::endl ;
std::cout << " O " << std::endl ;
return 0;
}
int B ()
{
std::cout << " OOOOOO " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO OO O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO O " << std::endl ;
std::cout << "OOO OO" << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OOOO O " << std::endl ;
std::cout << " O O O " << std::endl ;
std::cout << " O " << std::endl ;
return 0;
}
int X ()
{
using std::cout;
using std::endl;
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
A();
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
B();
return 0;
}
int Y ()
{
using std::cout;
using std::endl;
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
A();
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
B();
if (X()<2)
Y ();
return 0;
}
int main()
{
X ();
if (X()<2)
Y ();
Y ();
if (Y()<2)
X ();
return 0;
}
al final de main hay una redundancia que ya eliminare, pero si compilas veras lo que pretendo hacer, crear un loop con las variables A y B, pero salen to follas en pantalla y necesito una pausa.
Me alaga que el creador de RevEngine me eche una mano
#include <iostream>
#include <windows.h>
int A ()
{
std::cout << " OOOOOO " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO OO O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO O " << std::endl ;
std::cout << "OO OOO" << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OOOO O " << std::endl ;
std::cout << " O O O " << std::endl ;
std::cout << " O " << std::endl ;
system("PAUSE");
return 0;
}
int B ()
{
std::cout << " OOOOOO " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO OO O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO O " << std::endl ;
std::cout << "OOO OO" << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OOOO O " << std::endl ;
std::cout << " O O O " << std::endl ;
std::cout << " O " << std::endl ;
system("PAUSE");
return 0;
}
int X ()
{
using std::cout;
using std::endl;
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
A();
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
B();
return 0;
}
int Y ()
{
using std::cout;
using std::endl;
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
A();
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
B();
if (X()<2)
Y ();
return 0;
}
int main()
{
X ();
if (X()<2)
Y ();
Y ();
if (Y()<2)
X ();
return 0;
}
almeria27 escribió:Trollazo escribió:technik escribió:
Los errores de entry point estan muy bien solucionados en la documentacion on-line del visual C++
Lo que ocurre (si no recuerdo mal) es que no encuentra la function main porque no esta buscandola como debe. Cuando creas un nuevo proyecto, que tipo seleccionas? Porque no todos funcionan igual. Fijate sobre todo en la diferencia entre forms apliccation y console aplication y luego en lo de empty aplication.
Edit: Sobre lo del parpadeo, prueba a ejecutar los programas desde el simbolo del sistema (ejecurar->cmd). O programa con Visual C++ y te ahorras el problema. Visual C++ es puñetero al principio para el enlazado (Linking) pero cuando te haces con el es genial, y la intellisense...buf, te hace la vida sencilla jaja
Debes tener razon, lo empiezo como proyecto vacio y luego creo un cpp. ahora ahondare.
Lo del parpadeo no es lo que dizes, ya lo tengo to controlao, me muevo en la consola. Mira, te pongo el codigo que me estoy currando para que veas lo que quiero hacer. Aviso que solo le habre echado 3 horitas en total para aprender C desde 0:#include <iostream>
int A ()
{
std::cout << " OOOOOO " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO OO O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO O " << std::endl ;
std::cout << "OO OOO" << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OOOO O " << std::endl ;
std::cout << " O O O " << std::endl ;
std::cout << " O " << std::endl ;
return 0;
}
int B ()
{
std::cout << " OOOOOO " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO OO O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO O " << std::endl ;
std::cout << "OOO OO" << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OOOO O " << std::endl ;
std::cout << " O O O " << std::endl ;
std::cout << " O " << std::endl ;
return 0;
}
int X ()
{
using std::cout;
using std::endl;
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
A();
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
B();
return 0;
}
int Y ()
{
using std::cout;
using std::endl;
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
A();
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
B();
if (X()<2)
Y ();
return 0;
}
int main()
{
X ();
if (X()<2)
Y ();
Y ();
if (Y()<2)
X ();
return 0;
}
al final de main hay una redundancia que ya eliminare, pero si compilas veras lo que pretendo hacer, crear un loop con las variables A y B, pero salen to follas en pantalla y necesito una pausa.
Me alaga que el creador de RevEngine me eche una mano
Con tu permiso te he modificado loq ue has puesto , para que tenga una pausa, y debas de pulsar una tecla para continuar:#include <iostream>
#include <windows.h>
int A ()
{
std::cout << " OOOOOO " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO OO O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO O " << std::endl ;
std::cout << "OO OOO" << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OOOO O " << std::endl ;
std::cout << " O O O " << std::endl ;
std::cout << " O " << std::endl ;
system("PAUSE");
return 0;
}
int B ()
{
std::cout << " OOOOOO " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO OO O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO O " << std::endl ;
std::cout << "OOO OO" << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OOOO O " << std::endl ;
std::cout << " O O O " << std::endl ;
std::cout << " O " << std::endl ;
system("PAUSE");
return 0;
}
int X ()
{
using std::cout;
using std::endl;
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
A();
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
B();
return 0;
}
int Y ()
{
using std::cout;
using std::endl;
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
A();
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
B();
if (X()<2)
Y ();
return 0;
}
int main()
{
X ();
if (X()<2)
Y ();
Y ();
if (Y()<2)
X ();
return 0;
}
Espero que sea lo que quieres hacer.
#include <stdio.h>
int main()
{
int a = 121, b = 132, resultado;
int parte;
long int c,d,rmlong;
int hex, octal;
resultado = a*b;
printf("Holaaaaa Danielc!!!\nIntroduzca la parte que quiere ver.\n");
scanf("%", &parte);
switch (parte)
{
case 1:
printf("Siguiente ejercicio: La suma de 118 y 56 es %d\n", 118+56);
break;
case 2:
printf("Next.. 12 por 13 es %d\n", 12*13);
break;
case 3:
printf("Next... Multiplicacion con variables.. 121 * 132 es igual a %d \n", resultado);
break;
case 4:
printf("Next.. Uso de scanf.. Introduzca el valor de a y b separados por un espacio. Luego realizo una multiplicacion, luego una division, y de esa division calculo el resto.\n Luego hare la operacion (a+b)*(a-b) y luego elevare los dos terminos a la 2\n");
scanf("%d %d", &a, &b);
resultado = a*b;
printf("Multiplicacion = %d \n", resultado);
resultado = a/b;
printf("Division = %d \n", resultado);
resultado = (a/b)%
printf("Resto de dicha division = %d \n", resultado);
resultado = (a+b)*(a-b);
printf("Operacion (a+b)*(a-b) = %d \n", resultado);
resultado = (a*a)-(b*b);
printf("a2 - b2 = %d \n\n", resultado);
break;
case 5:
printf("Nexttt... Uso de long... Multiplicacion de dos numeros de cuatro cifras\n");
printf("Introduzca dos numeros de 4 cifras, separados por un *:\n");
scanf("%d*%d", &c,&d);
rmlong=c*d;
printf("El resultado de la multiplicacion es %d\n", rmlong);
break;
case 6:
printf("Uso de hexadecimales y octales en c. Agregue un 0 para indicar que el numero es octal, y un 0x para indicar que es hexadecimal\n");
printf("Haremos una prueba, introduzca un numero hexadecimal y yo dare el valor en decimal\n");
scanf("%d", &hex);
hex= 0x hex;
printf("El numero en decimal es %d\n", hex);
break;
default:
printf("No he llegado hasta alli xD jejej\n");
}
system("PAUSE");
return 0;
}
#include <time.h>
void sleep(int segundos)
{
time_t tiempo;
tiempo = time(0);
segundos+=time(0);
while(tiempo!=segundos) tiempo = time(0);
}
gobo26 escribió:Para el paron tienes la funcion sleep() q te para la ejecucion un tiempo determinado por el parametro. Tienes que incluir la cabecera "windows.h". Si no estas programando en windows creo q existe la funcion delay que hace lo mismo pero no se q .h tienes que incluir. Una manera muy rapida de poner un retardo (y muy cutre por supuesto y solo recomendado para pruebas o bobadas de estas) es un bucle for como el siguiente
for(i=0;i<10000;i++)
{
}
Esto te hara un retardo. Lo malo es q dependiendo de las optimizaciones del compilador es posible que no funcione por q detectaria que ese codigo no sirve para nada y no compilaria. Si lo vas a usar desactiva las optimizaciones.
#include <iostream>
#include <windows.h>
int A ()
{
std::cout << " OOOOOO " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO OO O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO O " << std::endl ;
std::cout << "OO OOO" << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OOOO O " << std::endl ;
std::cout << " O O O " << std::endl ;
std::cout << " O " << std::endl ;
int sleep(300);
return 0;
}
int B ()
{
std::cout << " OOOOOO " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO OO O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OO O " << std::endl ;
std::cout << "OOO OO" << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O O " << std::endl ;
std::cout << " O OOOO O " << std::endl ;
std::cout << " O O O " << std::endl ;
std::cout << " O " << std::endl ;
int sleep(300);
return 0;
int main()
{
for(int i = 0; i< 100; i++)
{
using std::cout;
using std::endl;
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
A();
cout << "Narcogochi ASCII v1.0"<< endl;
cout << endl;
B();
}
return 0;
}
APOCa escribió:Osea, lo que quieres es que muestre delante del número 0x simplemente? Si es asi, me da a mi que tienes que ponerlo tu en el printf (0x%d). Si lo que tratas de hacer es un comversión del número, me da a mi que así no es xD. Yo no he trabajado con conversiones de hexa y octal en lo que a programación se refiere.
#include <windows.h>
#include <stdio.h>
int main() {
printf("Hola mundo\n");
printf("Me gustan los caramelos de colorines\n");
system("Pause");
return 0;
}
#include <windows.h>
#include <stdio.h>
#include <conio.h>
int main()
{
gotoxy( 20, 10 );
printf("Hola mundo\n");
printf("Me gustan los caramelos de colorines\n");
system("Pause");
return 0;
}
Denbrough escribió:El caso es que lo añado, voy a dejar una copia del codigo antes de irme a dormir.#include <windows.h>
#include <stdio.h>
#include <conio.h>
int main()
{
gotoxy( 20, 10 );
printf("Hola mundo\n");
printf("Me gustan los caramelos de colorines\n");
system("Pause");
return 0;
}
Incluso copiando y pegando directamente del curso da error. Muchas gracias por la ayuda
Denbrough escribió:yo acabo de empezar con un tuto.
http://www.elrincondelc.com/cursoc/cursoc.html
de momento poco se, se las funcion de printf y poco mas, para compilar descargue el programa que recomiendan dev-C++, el primer programa que he hecho es el "hola mundo".#include <windows.h>
#include <stdio.h>
int main() {
printf("Hola mundo\n");
printf("Me gustan los caramelos de colorines\n");
system("Pause");
return 0;
}
Lo de los caramelos de colorines lo puse como prueba xD, para ver si lo hacia todo bien sin tener que copiar, lo que no entiendo es porque hay que añadir , #include <windows.h>, cuando se programa bajo windows, sin esa linea el programa no arranca.
Tengo otro problema y es que al incluir, gotoxy, este me da un error la linea es asi, gotoxy( 30, 10 ); , y me da error
#include <stdio.h>
int main()
{
int a = 121, b = 132, resultado;
int parte;
long int c,d,rmlong;
int hex_octal;
int x,y;
unsigned int z;
float f,f2;
char letra1,letra2,letra3,letra4;
resultado = a*b;
printf("Holaaaaa Danielc!!!\nIntroduzca la parte que quiere ver.\n");
scanf("%d", &parte);
switch (parte)
{
case 1:
printf("Siguiente ejercicio: La suma de 118 y 56 es %d\n", 118+56);
break;
case 2:
printf("Next.. 12 por 13 es %d\n", 12*13);
break;
case 3:
printf("Next... Multiplicacion con variables.. 121 * 132 es igual a %d \n", resultado);
break;
case 4:
printf("Next.. Uso de scanf.. Introduzca el valor de a y b separados por un espacio. Luego realizo una multiplicacion, luego una division, y de esa division calculo el resto.\n Luego hare la operacion (a+b)*(a-b) y luego elevare los dos terminos a la 2\n");
scanf("%d %d", &a, &b);
resultado = a*b;
printf("Multiplicacion = %d \n", resultado);
resultado = a/b;
printf("Division = %d \n", resultado);
resultado = (a/b)%
printf("Resto de dicha division = %d \n", resultado);
resultado = (a+b)*(a-b);
printf("Operacion (a+b)*(a-b) = %d \n", resultado);
resultado = (a*a)-(b*b);
printf("a2 - b2 = %d \n\n", resultado);
break;
case 5:
printf("Nexttt... Uso de long... Multiplicacion de dos numeros de cuatro cifras\n");
printf("Introduzca dos numeros de 4 cifras, separados por un *:\n");
scanf("%d*%d", &c,&d);
rmlong=c*d;
printf("El resultado de la multiplicacion es %d\n", rmlong);
break;
case 6:
printf("Uso de hexadecimales y octales en c. Agregue un 0 para indicar que el numero es octal, y un 0x para indicar que es hexadecimal\n");
printf("Haremos una prueba, introduzca un numero hexadecimal y yo dare el valor en decimal.\n Agregue 0x para que el sistema reconozca que el numero de origen es hexadecimal.\n");
scanf("%i", &hex_octal);
printf("El numero en decimal es %d\n", hex_octal);
printf("Ahora agregue un numero en octal. Para ello agregue 0 al principio\n");
scanf("%i", &hex_octal);
printf("El numero en decimal es %d\n" , hex_octal);
break;
case 7:
x=15;
y=-10;
z=2147483647;
x++;
y++;
z++;
printf("El valor de x es %d, el de y es %d, y el de z es %d\n", x, y, z);
break;
case 8:
x=15;
y=-10;
z=214;
x+=12;
y+=12;
z+=12;
printf("x=%d, y=%d, z=%d\n", x, y, z);
break;
case 9:
f=12.56;
printf("El valor de f es %f", f);
printf(" pero lo podemos escribir con 2 decimales %5.2f", f);
printf(" o solo con uno %5.1f", f);
printf(" o con 7 cifras %7.1f", f);
printf(" o alineado a la izquierda %-7.1f", f);
printf(" o sin decimales %2.0f", f);
printf(" o solo con una cifra %1.0f\n", f);
break;
case 10:
printf("Introduzca dos numeros decimales separados por un /. Los numeros pueden tener hasta 8 cifras significativas\n");
scanf("%f/%f", &f, &f2);
printf("Los dividi y el resultado fue (utilizando tres cifras decimales): %6.3f \n", f/f2);
break;
case 11:
printf("Uso de el operador sizeof....");
printf("El tamaño de mi variable z es %d, y lo normal es %d . Wiiii\n", sizeof z, sizeof(int) );
break;
case 12:
printf("Piiiiiiiiiii \a \a\n");
printf("Aqui vi algunos comandos nuevos para printf xD..\n");
printf("Por ejemplo, escriba una palabra al reves (4 digitos) y yo la pongo a la inversa (usando comandos)\n");
printf("Introduzca las palabras separadas por un espacio\n");
scanf("%c %c %c %c", &letra1, &letra2, &letra3, &letra4);
printf("Modo de prueba, c4 = %c\n El valor de c3 es %c\nEl valor de c2 es %c \n Y el de c1 es %c", letra4, letra3, letra2, letra1);
printf("Como no sirvio el uso de \\r , pues entonces lo hare a lo Danielc\n");
printf("La palabra es \"%c%c%c%c\"\n",letra4,letra3,letra2,letra1);
break;
default:
printf("No he llegado hasta alli xD jejej\n");
}
system("PAUSE");
return 0;
}
Denbrough escribió:Lo de los caramelos de colorines lo puse como prueba xD, para ver si lo hacia todo bien sin tener que copiar, lo que no entiendo es porque hay que añadir , #include <windows.h>, cuando se programa bajo windows, sin esa linea el programa no arranca.
Tengo otro problema y es que al incluir, gotoxy, este me da un error la linea es asi, gotoxy( 30, 10 ); , y me da error
textbackground(BLACK);
textcolor(YELLOW);
clrscr();
if (sel=0) { gotoxy(4,3); cprintf(">>"); }
if (sel!=0) { gotoxy(4,6); cprintf(">>"); }
gotoxy(1,1);
cprintf("Coloca la opcion (1,2)........");
gotoxy(10,3);
cprintf("Salir del programa");
gotoxy(10,6);
cprintf("Crear el fichero\n");
scanf("\n%d", &sel);
system("PAUSE");
cprintf("\nBien");
gotoxy(1,10);
system("PAUSE");
return 0;
Danielc escribió:Denbrough escribió:yo acabo de empezar con un tuto.
http://www.elrincondelc.com/cursoc/cursoc.html
de momento poco se, se las funcion de printf y poco mas, para compilar descargue el programa que recomiendan dev-C++, el primer programa que he hecho es el "hola mundo".#include <windows.h>
#include <stdio.h>
int main() {
printf("Hola mundo\n");
printf("Me gustan los caramelos de colorines\n");
system("Pause");
return 0;
}
Lo de los caramelos de colorines lo puse como prueba xD, para ver si lo hacia todo bien sin tener que copiar, lo que no entiendo es porque hay que añadir , #include <windows.h>, cuando se programa bajo windows, sin esa linea el programa no arranca.
Tengo otro problema y es que al incluir, gotoxy, este me da un error la linea es asi, gotoxy( 30, 10 ); , y me da error
Te recomiendo ademas, que apenas termines ese curso, empieces este:
http://www.nachocabanes.com/c/index.php#cursos
Es lo que estoy haciendo yo ahorita. El curso del rincondelc es bastante bueno, pero muchas veces hay cosas que se escapan, y ese curso de c que te digo te pone ejercicios un poco mas complicados, y ademas te enseña a manejar los diferentes sistemas numericos... Es mas extenso, pero seguro que ayudara a resolver las dudas que antes tenias...
Salu2
Edito:
Ahora necesito ayuda... xD De nuevo, lo se jejeje.. Lo que pasa es que cada vez que voy avanzando en el curso este que dije, hay ejercicios propuestos xD, y yo hago la mayoria, o a veces simplemente agrego al programa cosas que voy entendiendo..
Bueno, el hecho... He hecho este programa, el problema especificamente es en el case 12.. Me imprime y todo bien, pero no me guarda el valor de una variable, y en vez de eso, mete un salto de linea alli... A qué se debe???..
Aqui va el codigo, creo que todo esta bien, no c que falla...:#include <stdio.h>
int main()
{
int a = 121, b = 132, resultado;
int parte;
long int c,d,rmlong;
int hex_octal;
int x,y;
unsigned int z;
float f,f2;
char letra1,letra2,letra3,letra4;
resultado = a*b;
printf("Holaaaaa Danielc!!!\nIntroduzca la parte que quiere ver.\n");
scanf("%d", &parte);
switch (parte)
{
case 1:
printf("Siguiente ejercicio: La suma de 118 y 56 es %d\n", 118+56);
break;
case 2:
printf("Next.. 12 por 13 es %d\n", 12*13);
break;
case 3:
printf("Next... Multiplicacion con variables.. 121 * 132 es igual a %d \n", resultado);
break;
case 4:
printf("Next.. Uso de scanf.. Introduzca el valor de a y b separados por un espacio. Luego realizo una multiplicacion, luego una division, y de esa division calculo el resto.\n Luego hare la operacion (a+b)*(a-b) y luego elevare los dos terminos a la 2\n");
scanf("%d %d", &a, &b);
resultado = a*b;
printf("Multiplicacion = %d \n", resultado);
resultado = a/b;
printf("Division = %d \n", resultado);
resultado = (a/b)%
printf("Resto de dicha division = %d \n", resultado);
resultado = (a+b)*(a-b);
printf("Operacion (a+b)*(a-b) = %d \n", resultado);
resultado = (a*a)-(b*b);
printf("a2 - b2 = %d \n\n", resultado);
break;
case 5:
printf("Nexttt... Uso de long... Multiplicacion de dos numeros de cuatro cifras\n");
printf("Introduzca dos numeros de 4 cifras, separados por un *:\n");
scanf("%d*%d", &c,&d);
rmlong=c*d;
printf("El resultado de la multiplicacion es %d\n", rmlong);
break;
case 6:
printf("Uso de hexadecimales y octales en c. Agregue un 0 para indicar que el numero es octal, y un 0x para indicar que es hexadecimal\n");
printf("Haremos una prueba, introduzca un numero hexadecimal y yo dare el valor en decimal.\n Agregue 0x para que el sistema reconozca que el numero de origen es hexadecimal.\n");
scanf("%i", &hex_octal);
printf("El numero en decimal es %d\n", hex_octal);
printf("Ahora agregue un numero en octal. Para ello agregue 0 al principio\n");
scanf("%i", &hex_octal);
printf("El numero en decimal es %d\n" , hex_octal);
break;
case 7:
x=15;
y=-10;
z=2147483647;
x++;
y++;
z++;
printf("El valor de x es %d, el de y es %d, y el de z es %d\n", x, y, z);
break;
case 8:
x=15;
y=-10;
z=214;
x+=12;
y+=12;
z+=12;
printf("x=%d, y=%d, z=%d\n", x, y, z);
break;
case 9:
f=12.56;
printf("El valor de f es %f", f);
printf(" pero lo podemos escribir con 2 decimales %5.2f", f);
printf(" o solo con uno %5.1f", f);
printf(" o con 7 cifras %7.1f", f);
printf(" o alineado a la izquierda %-7.1f", f);
printf(" o sin decimales %2.0f", f);
printf(" o solo con una cifra %1.0f\n", f);
break;
case 10:
printf("Introduzca dos numeros decimales separados por un /. Los numeros pueden tener hasta 8 cifras significativas\n");
scanf("%f/%f", &f, &f2);
printf("Los dividi y el resultado fue (utilizando tres cifras decimales): %6.3f \n", f/f2);
break;
case 11:
printf("Uso de el operador sizeof....");
printf("El tamaño de mi variable z es %d, y lo normal es %d . Wiiii\n", sizeof z, sizeof(int) );
break;
case 12:
printf("Piiiiiiiiiii \a \a\n");
printf("Aqui vi algunos comandos nuevos para printf xD..\n");
printf("Por ejemplo, escriba una palabra al reves (4 digitos) y yo la pongo a la inversa (usando comandos)\n");
printf("Introduzca las palabras separadas por un espacio\n");
scanf("%c %c %c %c", &letra1, &letra2, &letra3, &letra4);
printf("Modo de prueba, c4 = %c\n El valor de c3 es %c\nEl valor de c2 es %c \n Y el de c1 es %c", letra4, letra3, letra2, letra1);
printf("Como no sirvio el uso de \\r , pues entonces lo hare a lo Danielc\n");
printf("La palabra es \"%c%c%c%c\"\n",letra4,letra3,letra2,letra1);
break;
default:
printf("No he llegado hasta alli xD jejej\n");
}
system("PAUSE");
return 0;
}
Salu2
GameZelda escribió:Danielc escribió:Denbrough escribió:yo acabo de empezar con un tuto.
http://www.elrincondelc.com/cursoc/cursoc.html
de momento poco se, se las funcion de printf y poco mas, para compilar descargue el programa que recomiendan dev-C++, el primer programa que he hecho es el "hola mundo".#include <windows.h>
#include <stdio.h>
int main() {
printf("Hola mundo\n");
printf("Me gustan los caramelos de colorines\n");
system("Pause");
return 0;
}
Lo de los caramelos de colorines lo puse como prueba xD, para ver si lo hacia todo bien sin tener que copiar, lo que no entiendo es porque hay que añadir , #include <windows.h>, cuando se programa bajo windows, sin esa linea el programa no arranca.
Tengo otro problema y es que al incluir, gotoxy, este me da un error la linea es asi, gotoxy( 30, 10 ); , y me da error
Te recomiendo ademas, que apenas termines ese curso, empieces este:
http://www.nachocabanes.com/c/index.php#cursos
Es lo que estoy haciendo yo ahorita. El curso del rincondelc es bastante bueno, pero muchas veces hay cosas que se escapan, y ese curso de c que te digo te pone ejercicios un poco mas complicados, y ademas te enseña a manejar los diferentes sistemas numericos... Es mas extenso, pero seguro que ayudara a resolver las dudas que antes tenias...
Salu2
Edito:
Ahora necesito ayuda... xD De nuevo, lo se jejeje.. Lo que pasa es que cada vez que voy avanzando en el curso este que dije, hay ejercicios propuestos xD, y yo hago la mayoria, o a veces simplemente agrego al programa cosas que voy entendiendo..
Bueno, el hecho... He hecho este programa, el problema especificamente es en el case 12.. Me imprime y todo bien, pero no me guarda el valor de una variable, y en vez de eso, mete un salto de linea alli... A qué se debe???..
Aqui va el codigo, creo que todo esta bien, no c que falla...:#include <stdio.h>
int main()
{
int a = 121, b = 132, resultado;
int parte;
long int c,d,rmlong;
int hex_octal;
int x,y;
unsigned int z;
float f,f2;
char letra1,letra2,letra3,letra4;
resultado = a*b;
printf("Holaaaaa Danielc!!!\nIntroduzca la parte que quiere ver.\n");
scanf("%d", &parte);
switch (parte)
{
case 1:
printf("Siguiente ejercicio: La suma de 118 y 56 es %d\n", 118+56);
break;
case 2:
printf("Next.. 12 por 13 es %d\n", 12*13);
break;
case 3:
printf("Next... Multiplicacion con variables.. 121 * 132 es igual a %d \n", resultado);
break;
case 4:
printf("Next.. Uso de scanf.. Introduzca el valor de a y b separados por un espacio. Luego realizo una multiplicacion, luego una division, y de esa division calculo el resto.\n Luego hare la operacion (a+b)*(a-b) y luego elevare los dos terminos a la 2\n");
scanf("%d %d", &a, &b);
resultado = a*b;
printf("Multiplicacion = %d \n", resultado);
resultado = a/b;
printf("Division = %d \n", resultado);
resultado = (a/b)%
printf("Resto de dicha division = %d \n", resultado);
resultado = (a+b)*(a-b);
printf("Operacion (a+b)*(a-b) = %d \n", resultado);
resultado = (a*a)-(b*b);
printf("a2 - b2 = %d \n\n", resultado);
break;
case 5:
printf("Nexttt... Uso de long... Multiplicacion de dos numeros de cuatro cifras\n");
printf("Introduzca dos numeros de 4 cifras, separados por un *:\n");
scanf("%d*%d", &c,&d);
rmlong=c*d;
printf("El resultado de la multiplicacion es %d\n", rmlong);
break;
case 6:
printf("Uso de hexadecimales y octales en c. Agregue un 0 para indicar que el numero es octal, y un 0x para indicar que es hexadecimal\n");
printf("Haremos una prueba, introduzca un numero hexadecimal y yo dare el valor en decimal.\n Agregue 0x para que el sistema reconozca que el numero de origen es hexadecimal.\n");
scanf("%i", &hex_octal);
printf("El numero en decimal es %d\n", hex_octal);
printf("Ahora agregue un numero en octal. Para ello agregue 0 al principio\n");
scanf("%i", &hex_octal);
printf("El numero en decimal es %d\n" , hex_octal);
break;
case 7:
x=15;
y=-10;
z=2147483647;
x++;
y++;
z++;
printf("El valor de x es %d, el de y es %d, y el de z es %d\n", x, y, z);
break;
case 8:
x=15;
y=-10;
z=214;
x+=12;
y+=12;
z+=12;
printf("x=%d, y=%d, z=%d\n", x, y, z);
break;
case 9:
f=12.56;
printf("El valor de f es %f", f);
printf(" pero lo podemos escribir con 2 decimales %5.2f", f);
printf(" o solo con uno %5.1f", f);
printf(" o con 7 cifras %7.1f", f);
printf(" o alineado a la izquierda %-7.1f", f);
printf(" o sin decimales %2.0f", f);
printf(" o solo con una cifra %1.0f\n", f);
break;
case 10:
printf("Introduzca dos numeros decimales separados por un /. Los numeros pueden tener hasta 8 cifras significativas\n");
scanf("%f/%f", &f, &f2);
printf("Los dividi y el resultado fue (utilizando tres cifras decimales): %6.3f \n", f/f2);
break;
case 11:
printf("Uso de el operador sizeof....");
printf("El tamaño de mi variable z es %d, y lo normal es %d . Wiiii\n", sizeof z, sizeof(int) );
break;
case 12:
printf("Piiiiiiiiiii \a \a\n");
printf("Aqui vi algunos comandos nuevos para printf xD..\n");
printf("Por ejemplo, escriba una palabra al reves (4 digitos) y yo la pongo a la inversa (usando comandos)\n");
printf("Introduzca las palabras separadas por un espacio\n");
scanf("%c %c %c %c", &letra1, &letra2, &letra3, &letra4);
printf("Modo de prueba, c4 = %c\n El valor de c3 es %c\nEl valor de c2 es %c \n Y el de c1 es %c", letra4, letra3, letra2, letra1);
printf("Como no sirvio el uso de \\r , pues entonces lo hare a lo Danielc\n");
printf("La palabra es \"%c%c%c%c\"\n",letra4,letra3,letra2,letra1);
break;
default:
printf("No he llegado hasta alli xD jejej\n");
}
system("PAUSE");
return 0;
}
Salu2
Añade un "fflush(stdin);" después de cada vez que uses alguna función de entrada con el teclado.
Explicación: Primero has preguntado por un número. Todos los contenidos que se introducen por el teclado se quedan guardados en un buffer. Cuando preguntas el número, no solo queda guardado en él el número, sino también la nueva línea (cuando pulsas el enter).
Entonces, la próxima vez que quieras datos del teclado, los primeros que obtienes son los que "sobraron" de la última vez que usaste alguna función de entrada con teclado (no se si me explico).
"fflush(stdin);" borra todo lo que hay en el buffer del teclado.
Por cierto, si usas system() deberías incluir <stdlib.h>
pinopop escribió:Denbrough escribió:Lo de los caramelos de colorines lo puse como prueba xD, para ver si lo hacia todo bien sin tener que copiar, lo que no entiendo es porque hay que añadir , #include <windows.h>, cuando se programa bajo windows, sin esa linea el programa no arranca.
Tengo otro problema y es que al incluir, gotoxy, este me da un error la linea es asi, gotoxy( 30, 10 ); , y me da error
Buscando en la Red encontré la solución al problema :
http://www.elrincondelc.com/nuevorincon ... .php?t=789
#include <windows.h>
#include <stdio.h>
#include "conio.C"
int main()
{
gotoxy( 33, 9 );
printf("Hola mundo\n");
gotoxy( 20, 10 );
printf("Me gustan los caramelos de colorines\n");
gotoxy( 20, 11 );
system("Pause");
clrscr();
gotoxy( 20, 10 );
printf("Pepito tenia un burro");
gotoxy( 20, 11 );
system("Pause");
return 0;
}
/*Programa hecho por Danielc. Es un programa con fines unicamente de aprendizaje
y esta hecho a base de esto.. Lo he hecho a lo largo del curso de c de Nacho
Cabanes y hasta el momento voy por la mitad..*/
#include <stdio.h>
int main()
{
int a = 121, b = 132, resultado;
int parte;
long int c,d,rmlong;
int hex_octal;
int x,y;
unsigned int z;
float f,f2;
char letra1,letra2,letra3,letra4;
char letra;
int adivina, intentos, num;
int cifras;
int cont;
int tblnumero[4];
int diasmes[13] = {0, 31, 29, 31, 30, 31, 30, 31, 30, 31, 30, 31};
resultado = a*b;
inicio:
printf("Holaaaaa Danielc!!!\nIntroduzca la parte que quiere ver.\n");
scanf("%d", &parte);
switch (parte)
{
case 1:
printf("Siguiente ejercicio: La suma de 118 y 56 es %d\n", 118+56);
break;
case 2:
printf("Next.. 12 por 13 es %d\n", 12*13);
break;
case 3:
printf("Next... Multiplicacion con variables.. 121 * 132 es igual a %d \n", resultado);
break;
case 4:
printf("Next.. Uso de scanf.. Introduzca el valor de a y b separados por un espacio. Luego realizo una multiplicacion, luego una division, y de esa division calculo el resto.\n Luego hare la operacion (a+b)*(a-b) y luego elevare los dos terminos a la 2\n");
scanf("%d %d", &a, &b);
resultado = a*b;
printf("Multiplicacion = %d \n", resultado);
resultado = a/b;
printf("Division = %d \n", resultado);
resultado = (a/b)%
printf("Resto de dicha division = %d \n", resultado);
resultado = (a+b)*(a-b);
printf("Operacion (a+b)*(a-b) = %d \n", resultado);
resultado = (a*a)-(b*b);
printf("a2 - b2 = %d \n\n", resultado);
break;
case 5:
printf("Nexttt... Uso de long... Multiplicacion de dos numeros de cuatro cifras\n");
printf("Introduzca dos numeros de 4 cifras, separados por un *:\n");
scanf("%d*%d", &c,&d);
rmlong=c*d;
printf("El resultado de la multiplicacion es %d\n", rmlong);
break;
case 6:
printf("Uso de hexadecimales y octales en c. Agregue un 0 para indicar que el numero es octal, y un 0x para indicar que es hexadecimal\n");
printf("Haremos una prueba, introduzca un numero hexadecimal y yo dare el valor en decimal.\n Agregue 0x para que el sistema reconozca que el numero de origen es hexadecimal.\n");
scanf("%i", &hex_octal);
printf("El numero en decimal es %d\n", hex_octal);
printf("Ahora agregue un numero en octal. Para ello agregue 0 al principio\n");
scanf("%i", &hex_octal);
printf("El numero en decimal es %d\n" , hex_octal);
break;
case 7:
x=15;
y=-10;
z=2147483647;
x++;
y++;
z++;
printf("El valor de x es %d, el de y es %d, y el de z es %d\n", x, y, z);
break;
case 8:
x=15;
y=-10;
z=214;
x+=12;
y+=12;
z+=12;
printf("x=%d, y=%d, z=%d\n", x, y, z);
break;
case 9:
f=12.56;
printf("El valor de f es %f", f);
printf(" pero lo podemos escribir con 2 decimales %5.2f", f);
printf(" o solo con uno %5.1f", f);
printf(" o con 7 cifras %7.1f", f);
printf(" o alineado a la izquierda %-7.1f", f);
printf(" o sin decimales %2.0f", f);
printf(" o solo con una cifra %1.0f\n", f);
break;
case 10:
printf("Introduzca dos numeros decimales separados por un /. Los numeros pueden tener hasta 8 cifras significativas\n");
scanf("%f/%f", &f, &f2);
printf("Los dividi y el resultado fue (utilizando tres cifras decimales): %6.3f \n", f/f2);
break;
case 11:
printf("Uso de el operador sizeof....");
printf("El tamaño de mi variable z es %d, y lo normal es %d . Wiiii\n", sizeof z, sizeof(int) );
break;
case 12:
printf("Piiiiiiiiiii \a \a\n");
printf("Aqui vi algunos comandos nuevos para printf xD..\n");
printf("Por ejemplo, escriba una palabra al reves (4 digitos) y yo la pongo a la inversa (usando comandos)\n");
printf("Introduzca las palabras separadas por un espacio\n");
fflush(stdin);
scanf("%c %c %c %c", &letra1, &letra2, &letra3, &letra4);
//printf("Modo de prueba, c4 = %c\n El valor de c3 es %c\nEl valor de c2 es %c \n Y el de c1 es %c\n", letra4, letra3, letra2, letra1);
printf("Como no sirvio el uso de \\r , pues entonces lo hare a lo Danielc\n");
printf("La palabra es \"%c%c%c%c\"\n",letra4,letra3,letra2,letra1);
break;
case 13:
printf("Escriba un numero. Partiendo del resto de division de este entre 2, definire si es par o no\n");
scanf("%d", &a);
if( a % 2 ==0) printf("El numero es par\n");
if( a % 2 !=0) printf("El numero no es par\n");
printf("Ahora introduzca dos numeros, separados por un espacio. Le dire cual es el mayor\n");
scanf("%d %d", &a, &b);
if(a>b) printf("%d es mayor que %d\n", a, b);
if(b>a) printf("%d es mayor que %d\n", b, a);
printf("De nuevo introduzca dos numeros separados por un espacio, le dire si el primero es multiplo del segundo\n");
scanf("%d %d", &a, &b);
if(a%b==0) printf("%d es multiplo de %d\n", a, b);
if(a%b!=0) printf("%d no es un multiplo de %d\n", a, b);
break;
case 14:
printf("Escriba un numero entero. Luego le pedire otro numero entero si el valor del primero es diferente de 0 \n");
scanf("%d", &a);
if(a==0) printf("El producto de 0 por cualquier numero es 0\n");
if(a!=0)
{
printf("Ahora introduzca el segundo numero \n");
scanf("%d", &b);
resultado=a*b;
printf("El producto de %d por %d es %d\n", a, b, resultado);
}
break;
case 15:
printf("Introduzca una letra. Le dire si es una vocal\n");
letra = getch();
printf("La letra es %c y\n", letra);
if(letra=='a' || letra=='e' || letra=='i' || letra=='o' || letra=='u')
{
printf("La letra es una vocal\n");
}
else
{
printf("La letra es una consonante\n");
}
break;
case 16:
printf("Introduzca dos numeros enteros separados por un espacio\n");
scanf("%d %d", &a, &b);
if(a>0 && b>0) printf("Los dos numeros son positivos\n");
else if((a>0 && b<=0) || (b>0 && a<=0)) printf("Uno de los dos numeros es positivo\n");
else printf("Ninguno de los dos numeros es positivo\n");
break;
case 17:
printf("Diagramas de flujo:\n");
printf("Esta es la version en c de un programa que da 3 oportunidades para que el usuario acierte a un numero del 1 al 10\n");
adivina = 7;
intentos = 1;
do
{
printf("Introduce un numero del 1 al 10. Su objetivo es adivinar el numero ya asignado en 3 intentos como maximo\n");
scanf("%d", &num);
if(num>0 && num<=10)
{
if(intentos<=3)
{
if(num==adivina)
{
printf("Adivinaste el numero en tu intento #%d \n", intentos);
}
else
{
printf("No era ese numero. Intentalo otra vez\n");
intentos++;
}
}
}
else
{
printf("Debe ser un numero mayor o igual a 1 y menor o igual que 10\n");
}
}
while (num != adivina && intentos <=3);
if(intentos>3) printf("Ya hiciste tus 3 intentos\n");
break;
case 18:
printf("Uso del operador condicional ? para dar valor a una variable\n");
printf("Introduzca un numero y yo le dare el valor absoluto. Si es negativo, le dare el valor absoluto en negativo\n");
scanf("%d", &num);
resultado = (num<0) ? -num : num;
printf("El valor absoluto de %d es %d\n", num, resultado);
break;
case 19:
printf("Uso de switch (por fin jeje)\n");
printf("Introduzca un caracter:\n");
//letra = getch();
fflush(stdin);
scanf("%c", &letra);
switch(letra)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf("El caracter %c es una vocal\n", letra);
break;
case 'b':
case 'c':
case 'd':
case 'f':
case 'g':
case 'h':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z':
printf("El caracter %c es una consonante\n", letra);
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
printf("El caracter %c es un numero\n", letra);
break;
default:
printf("El caracter %c no es ni vocal, ni numero ni consonante\n", letra);
}
break;
case 20:
cifras = 1;
printf("Uso de while xD. Calculare cuantas cifras tiene un numero dividiendo este entre 10 las veces que sea necesario\n");
fflush(stdin);
scanf("%d", &num);
resultado = num;
while(resultado>=10)
{
resultado/=10;
cifras++;
}
printf("El numero de cifras de %d es %d\n", num, cifras);
break;
case 21:
printf("Aplicacion do while, suma de numeros hasta que un numero sea negativo o sea 0\n");
printf("Introduzca los dos primeros numeros separados por un +:\n");
scanf("%d+%d", &a, &b);
resultado =a+b;
printf("De ahora en adelante, se tomara valor por valor y se le dara el resultado:\n");
printf("Introduzca cada numero asi : +numero\n");
do
{
b=0;
fflush(stdin);
scanf("+%d", &b);
resultado += b;
printf("= %d\n", resultado);
}
while (b!=0 || b<0);
printf("Finalizado. El resultado total es %d\n", resultado);
break;
case 22:
printf("Uso del bucle for:\n");
printf("El valor inicial de una variable sera 15, y los disminuire hasta 5 usando for\n");
for(cont=15; cont>=5; cont--)
{
printf("%d\n", cont);
}
printf("Ahora mostrare los primeros 8 numeros pares\n");
for(cont=2; cont<=16; cont+=2)
{
printf("%d\n",cont);
}
printf("Ahora mostrare las letras de la Z a la A descendiendo\n");
fflush(stdin);
for(letra='Z';letra>='A';letra--)
{
printf("%c \n", letra);
}
printf("Ahora escribiré la tabla de multiplicar del 5:\n");
for(num=0;num<=9;num++)
{
resultado = 5*num;
printf("5 * %d = %d\n", num, resultado);
}
printf("Ahora mostraré los numeros del 1 al 50 que sean multiplos de 3\n");
fflush(stdin);
for(num=1;num<=50;num++)
{
if(num%3==0)
{
printf("%d es multiplo de 3\n", num);
}
}
break;
case 23:
printf("Voy a hacer un agujero negro con goto jajajajajaj \a\n");
goto inicio;
break;
case 24:
adivina = 69;
printf("Adivina un numero entre 1 y 100 en un maximo de 6 intentos. Yo te dare pistas\n");
for(intentos=1;intentos<=6;intentos++)
{
printf("Escribe el numero:\n");
scanf("%d", &num);
if(num<1 || num>100)
printf("El numero no cumple con los requisitos propuestos\n");
if(adivina==num)
{
printf("Adivinaste jejeje\n");
goto fincase24;
}
else if(num>69)
printf("Muy alto\n");
else
printf("Muy bajo\n");
}
fincase24:
printf("Fin del programa\n");
break;
case 25:
printf("Aunque esto fue de antes, nunca esta de mas nombrarlo:\n");
printf("Puede usar break; para parar completamente cualquier bucle como el for\n");
printf("Ademas existe el comando continue, que sirve para saltarse la sentencia de una parte del bucle for\n");
printf("Aqui pongo un ejemplo sacado del tutorial de nacho cabanes\n");
printf("Uso de break;\n");
for (num=0; num<=10; num++)
{
if (num==5) break;
printf("%d ", num);
}
printf("En este caso, aunque se siga cumpliendo la condicion del bucle, ");
printf("i no llegara a ser 10, pues hay una condicion de por medio que dice ");
printf("que cuando num==5 se ejecutara un comando break, que para totalmente el bucle");
printf("\n\nAhora vamos con el uso de continue:\n");
for (num=0; num<=10; num++)
{
if (num==5) continue;
printf("%d ", num);
}
printf("En este caso, simplemente cuando num==5 se salta la sentencia, pero continua con el bucle normalmente\n");
break;
case 26:
printf("Descomposicion de un numero en factores primos\n");
printf("Introduzca el valor que quiere descomponer\n");
fflush(stdin);
scanf("%d", &c);
num = 2;
while(num<=c)//Ejecuta el bucle mientras el factor primo no sea mayor al numero escrito
{
if(c%num==0)//Usamos la operacion resto de la divison para encontrar los factores primos, basandonos primero en el primer factor primo (2)
{
printf("%d ", num);//Escribe en pantalla los factores primos que encuentre
c/=num;//Divide entre el factor primo encontrado y le da este valor a la variable.
}
else
num++;//En caso de que la division entre 2 no de 0, aumenta en uno al divisor
}
printf("\n\n");
break;
case 27:
printf("Antes que nada, si buscas la parte de comandos para printf y scanf estan a partir de la pag 67 del curso de nacho cabanes\n");
printf("Ahora, esto es muy simple. Voy a usar un nuevo comando: putchar . Es usado para imprimir un unico caracter en pantalla\n");
printf("Aqui pongo un ejemplo:\n");
putchar('D');
break;
case 28:
printf("Introduzca 4 numeros separados por un +. Los agrupare en una sola variable usando tablas.\n");
printf("Luego calcularé la media aritmetica\n");
scanf("%d+%d+%d+%d", &tblnumero[0], &tblnumero[1], &tblnumero[2], &tblnumero[3]);
resultado = tblnumero[0] + tblnumero[1] + tblnumero[2] + tblnumero[3];
resultado /=4;
printf("La media aritmética es %d\n", resultado);
break;
case 29:
printf("Dias de cada mes del año\n");
printf("Usando un array, almaceno el numero de dias que tiene cada mes este año (2008)");
printf("Introduzca un mes (en numero) para ver cuantos dias tiene. El valor debe ser mayor a 1 y menor que 13\n");
fflush(stdin);
scanf("%d", &num);
printf("El mes %d tiene %d dias\n", num, diasmes[num]);
break;
default:
printf("No he llegado hasta alli xD jejej\n");
}
system("PAUSE");
return 0;
}
nintendo520 escribió:para crear una aplicacion para el homebre channel que se necesita tengo entedido que se necesita el devkitpro.1.4.7 el cvs.exe mas la carpeta y un servidor cvs y ya se puede trabajar eso es cierto
/*Programa hecho por Danielc. Es un programa con fines unicamente de aprendizaje
y esta hecho a base de esto.. Lo he hecho a lo largo del curso de c de Nacho
Cabanes y hasta el momento voy por la mitad..*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
struct
{
char nombre[20];
char apellido[20];
int edad;
}datospersona;
struct
{
char nombre[20];
int dia;
int mes;
int anio;
//struct fecha nacimiento;
}persona[8];
struct
{
char nombre[31];
char direccion[31];
unsigned long numero;
int edad;
}datos[50];
struct
{
char nombre[100];
char direccion[100];
unsigned long movil;
char email[100];
short dia;
short mes;
short anio;
}agenda[100];
int a = 121, b = 132, resultado;
int parte;
int adivina, intentos, num;
int cifras;
int cont;
int tblnumero[4];
int diasmes[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int dia,mes,resul_fecha;
int hex_octal;
int x,y;
long int c,d,rmlong;
unsigned int z;
float f,f2;
char letra1,letra2,letra3,letra4;
char letra;
char cadena[100];
char texto[81];
char texto1[10];
char bd[100][81];
resultado = a*b;
FILE* fichero;
inicio:
do
{
printf("Holaaaaa Danielc!!!\nIntroduzca la parte que quiere ver.\n");
scanf("%d", &parte);
switch (parte)
{
case 0:
printf("Adiooooooooooooooooooooooooooooooooooooooooooooooooooooooos!!!\n");
break;
case 1:
printf("Siguiente ejercicio: La suma de 118 y 56 es %d\n", 118+56);
break;
case 2:
printf("Next.. 12 por 13 es %d\n", 12*13);
break;
case 3:
printf("Next... Multiplicacion con variables.. 121 * 132 es igual a %d \n", resultado);
break;
case 4:
printf("Next.. Uso de scanf.. Introduzca el valor de a y b separados por un espacio. Luego realizo una multiplicacion, luego una division, y de esa division calculo el resto.\n Luego hare la operacion (a+b)*(a-b) y luego elevare los dos terminos a la 2\n");
scanf("%d %d", &a, &b);
resultado = a*b;
printf("Multiplicacion = %d \n", resultado);
resultado = a/b;
printf("Division = %d \n", resultado);
resultado = (a/b)%
printf("Resto de dicha division = %d \n", resultado);
resultado = (a+b)*(a-b);
printf("Operacion (a+b)*(a-b) = %d \n", resultado);
resultado = (a*a)-(b*b);
printf("a2 - b2 = %d \n\n", resultado);
break;
case 5:
printf("Nexttt... Uso de long... Multiplicacion de dos numeros de cuatro cifras\n");
printf("Introduzca dos numeros de 4 cifras, separados por un *:\n");
scanf("%d*%d", &c,&d);
rmlong=c*d;
printf("El resultado de la multiplicacion es %d\n", rmlong);
break;
case 6:
printf("Uso de hexadecimales y octales en c. Agregue un 0 para indicar que el numero es octal, y un 0x para indicar que es hexadecimal\n");
printf("Haremos una prueba, introduzca un numero hexadecimal y yo dare el valor en decimal.\n Agregue 0x para que el sistema reconozca que el numero de origen es hexadecimal.\n");
scanf("%i", &hex_octal);
printf("El numero en decimal es %d\n", hex_octal);
printf("Ahora agregue un numero en octal. Para ello agregue 0 al principio\n");
scanf("%i", &hex_octal);
printf("El numero en decimal es %d\n" , hex_octal);
break;
case 7:
x=15;
y=-10;
z=2147483647;
x++;
y++;
z++;
printf("El valor de x es %d, el de y es %d, y el de z es %d\n", x, y, z);
break;
case 8:
x=15;
y=-10;
z=214;
x+=12;
y+=12;
z+=12;
printf("x=%d, y=%d, z=%d\n", x, y, z);
break;
case 9:
f=12.56;
printf("El valor de f es %f", f);
printf(" pero lo podemos escribir con 2 decimales %5.2f", f);
printf(" o solo con uno %5.1f", f);
printf(" o con 7 cifras %7.1f", f);
printf(" o alineado a la izquierda %-7.1f", f);
printf(" o sin decimales %2.0f", f);
printf(" o solo con una cifra %1.0f\n", f);
break;
case 10:
printf("Introduzca dos numeros decimales separados por un /. Los numeros pueden tener hasta 8 cifras significativas\n");
scanf("%f/%f", &f, &f2);
printf("Los dividi y el resultado fue (utilizando tres cifras decimales): %6.3f \n", f/f2);
break;
case 11:
printf("Uso de el operador sizeof....");
printf("El tamaño de mi variable z es %d, y lo normal es %d . Wiiii\n", sizeof z, sizeof(int) );
break;
case 12:
printf("Piiiiiiiiiii \a \a\n");
printf("Aqui vi algunos comandos nuevos para printf xD..\n");
printf("Por ejemplo, escriba una palabra al reves (4 digitos) y yo la pongo a la inversa (usando comandos)\n");
printf("Introduzca las palabras separadas por un espacio\n");
fflush(stdin);
scanf("%c %c %c %c", &letra1, &letra2, &letra3, &letra4);
//printf("Modo de prueba, c4 = %c\n El valor de c3 es %c\nEl valor de c2 es %c \n Y el de c1 es %c\n", letra4, letra3, letra2, letra1);
printf("Como no sirvio el uso de \\r , pues entonces lo hare a lo Danielc\n");
printf("La palabra es \"%c%c%c%c\"\n",letra4,letra3,letra2,letra1);
break;
case 13:
printf("Escriba un numero. Partiendo del resto de division de este entre 2, definire si es par o no\n");
scanf("%d", &a);
if( a % 2 ==0) printf("El numero es par\n");
if( a % 2 !=0) printf("El numero no es par\n");
printf("Ahora introduzca dos numeros, separados por un espacio. Le dire cual es el mayor\n");
scanf("%d %d", &a, &b);
if(a>b) printf("%d es mayor que %d\n", a, b);
if(b>a) printf("%d es mayor que %d\n", b, a);
printf("De nuevo introduzca dos numeros separados por un espacio, le dire si el primero es multiplo del segundo\n");
scanf("%d %d", &a, &b);
if(a%b==0) printf("%d es multiplo de %d\n", a, b);
if(a%b!=0) printf("%d no es un multiplo de %d\n", a, b);
break;
case 14:
printf("Escriba un numero entero. Luego le pedire otro numero entero si el valor del primero es diferente de 0 \n");
scanf("%d", &a);
if(a==0) printf("El producto de 0 por cualquier numero es 0\n");
if(a!=0)
{
printf("Ahora introduzca el segundo numero \n");
scanf("%d", &b);
resultado=a*b;
printf("El producto de %d por %d es %d\n", a, b, resultado);
}
break;
case 15:
printf("Introduzca una letra. Le dire si es una vocal\n");
letra = getch();
printf("La letra es %c y\n", letra);
if(letra=='a' || letra=='e' || letra=='i' || letra=='o' || letra=='u')
{
printf("La letra es una vocal\n");
}
else
{
printf("La letra es una consonante\n");
}
break;
case 16:
printf("Introduzca dos numeros enteros separados por un espacio\n");
scanf("%d %d", &a, &b);
if(a>0 && b>0) printf("Los dos numeros son positivos\n");
else if((a>0 && b<=0) || (b>0 && a<=0)) printf("Uno de los dos numeros es positivo\n");
else printf("Ninguno de los dos numeros es positivo\n");
break;
case 17:
printf("Diagramas de flujo:\n");
printf("Esta es la version en c de un programa que da 3 oportunidades para que el usuario acierte a un numero del 1 al 10\n");
adivina = 7;
intentos = 1;
do
{
printf("Introduce un numero del 1 al 10. Su objetivo es adivinar el numero ya asignado en 3 intentos como maximo\n");
scanf("%d", &num);
if(num>0 && num<=10)
{
if(intentos<=3)
{
if(num==adivina)
{
printf("Adivinaste el numero en tu intento #%d \n", intentos);
}
else
{
printf("No era ese numero. Intentalo otra vez\n");
intentos++;
}
}
}
else
{
printf("Debe ser un numero mayor o igual a 1 y menor o igual que 10\n");
}
}
while (num != adivina && intentos <=3);
if(intentos>3) printf("Ya hiciste tus 3 intentos\n");
break;
case 18:
printf("Uso del operador condicional ? para dar valor a una variable\n");
printf("Introduzca un numero y yo le dare el valor absoluto. Si es negativo, le dare el valor absoluto en negativo\n");
scanf("%d", &num);
resultado = (num<0) ? -num : num;
printf("El valor absoluto de %d es %d\n", num, resultado);
break;
case 19:
printf("Uso de switch (por fin jeje)\n");
printf("Introduzca un caracter:\n");
//letra = getch();
fflush(stdin);
scanf("%c", &letra);
switch(letra)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf("El caracter %c es una vocal\n", letra);
break;
case 'b':
case 'c':
case 'd':
case 'f':
case 'g':
case 'h':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z':
printf("El caracter %c es una consonante\n", letra);
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
printf("El caracter %c es un numero\n", letra);
break;
default:
printf("El caracter %c no es ni vocal, ni numero ni consonante\n", letra);
}
break;
case 20:
cifras = 1;
printf("Uso de while xD. Calculare cuantas cifras tiene un numero dividiendo este entre 10 las veces que sea necesario\n");
fflush(stdin);
scanf("%d", &num);
resultado = num;
while(resultado>=10)
{
resultado/=10;
cifras++;
}
printf("El numero de cifras de %d es %d\n", num, cifras);
break;
case 21:
printf("Aplicacion do while, suma de numeros hasta que un numero sea negativo o sea 0\n");
printf("Introduzca los dos primeros numeros separados por un +:\n");
scanf("%d+%d", &a, &b);
resultado =a+b;
printf("De ahora en adelante, se tomara valor por valor y se le dara el resultado:\n");
printf("Introduzca cada numero asi : +numero\n");
do
{
b=0;
fflush(stdin);
scanf("+%d", &b);
resultado += b;
printf("= %d\n", resultado);
}
while (b!=0 || b<0);
printf("Finalizado. El resultado total es %d\n", resultado);
break;
case 22:
printf("Uso del bucle for:\n");
printf("El valor inicial de una variable sera 15, y los disminuire hasta 5 usando for\n");
for(cont=15; cont>=5; cont--)
{
printf("%d\n", cont);
}
printf("Ahora mostrare los primeros 8 numeros pares\n");
for(cont=2; cont<=16; cont+=2)
{
printf("%d\n",cont);
}
printf("Ahora mostrare las letras de la Z a la A descendiendo\n");
fflush(stdin);
for(letra='Z';letra>='A';letra--)
{
printf("%c \n", letra);
}
printf("Ahora escribiré la tabla de multiplicar del 5:\n");
for(num=0;num<=9;num++)
{
resultado = 5*num;
printf("5 * %d = %d\n", num, resultado);
}
printf("Ahora mostraré los numeros del 1 al 50 que sean multiplos de 3\n");
fflush(stdin);
for(num=1;num<=50;num++)
{
if(num%3==0)
{
printf("%d es multiplo de 3\n", num);
}
}
break;
case 23:
printf("Voy a hacer un agujero negro con goto jajajajajaj \a\n");
goto inicio;
break;
case 24:
adivina = 69;
printf("Adivina un numero entre 1 y 100 en un maximo de 6 intentos. Yo te dare pistas\n");
for(intentos=1;intentos<=6;intentos++)
{
printf("Escribe el numero:\n");
scanf("%d", &num);
if(num<1 || num>100)
printf("El numero no cumple con los requisitos propuestos\n");
if(adivina==num)
{
printf("Adivinaste jejeje\n");
goto fincase24;
}
else if(num>69)
printf("Muy alto\n");
else
printf("Muy bajo\n");
}
fincase24:
printf("Fin del programa\n");
break;
case 25:
printf("Aunque esto fue de antes, nunca esta de mas nombrarlo:\n");
printf("Puede usar break; para parar completamente cualquier bucle como el for\n");
printf("Ademas existe el comando continue, que sirve para saltarse la sentencia de una parte del bucle for\n");
printf("Aqui pongo un ejemplo sacado del tutorial de nacho cabanes\n");
printf("Uso de break;\n");
for (num=0; num<=10; num++)
{
if (num==5) break;
printf("%d ", num);
}
printf("En este caso, aunque se siga cumpliendo la condicion del bucle, ");
printf("i no llegara a ser 10, pues hay una condicion de por medio que dice ");
printf("que cuando num==5 se ejecutara un comando break, que para totalmente el bucle");
printf("\n\nAhora vamos con el uso de continue:\n");
for (num=0; num<=10; num++)
{
if (num==5) continue;
printf("%d ", num);
}
printf("En este caso, simplemente cuando num==5 se salta la sentencia, pero continua con el bucle normalmente\n");
break;
case 26:
printf("Descomposicion de un numero en factores primos\n");
printf("Introduzca el valor que quiere descomponer\n");
fflush(stdin);
scanf("%d", &c);
num = 2;
while(num<=c)//Ejecuta el bucle mientras el factor primo no sea mayor al numero escrito
{
if(c%num==0)//Usamos la operacion resto de la divison para encontrar los factores primos, basandonos primero en el primer factor primo (2)
{
printf("%d ", num);//Escribe en pantalla los factores primos que encuentre
c/=num;//Divide entre el factor primo encontrado y le da este valor a la variable.
}
else
num++;//En caso de que la division entre 2 no de 0, aumenta en uno al divisor
}
printf("\n\n");
break;
case 27:
printf("Antes que nada, si buscas la parte de comandos para printf y scanf estan a partir de la pag 67 del curso de nacho cabanes\n");
printf("Ahora, esto es muy simple. Voy a usar un nuevo comando: putchar . Es usado para imprimir un unico caracter en pantalla\n");
printf("Aqui pongo un ejemplo:\n");
putchar('D');
break;
case 28:
printf("Introduzca 4 numeros separados por un +. Los agrupare en una sola variable usando tablas.\n");
printf("Luego calcularé la media aritmetica\n");
scanf("%d+%d+%d+%d", &tblnumero[0], &tblnumero[1], &tblnumero[2], &tblnumero[3]);
resultado = tblnumero[0] + tblnumero[1] + tblnumero[2] + tblnumero[3];
resultado /=4;
printf("La media aritmética es %d\n", resultado);
break;
case 29:
//int diasmes[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf("Dias de cada mes del año\n");
printf("Usando un array, almaceno el numero de dias que tiene cada mes este año (2008)");
printf("Introduzca un mes (en numero) para ver cuantos dias tiene. El valor debe ser mayor a 1 y menor que 13\n");
fflush(stdin);
scanf("%d", &num);
printf("El mes %d tiene %d dias\n", num, diasmes[num]);
resultado = 0;
for (a=1; a<=12; a++)
{
resultado +=diasmes[a];
}
printf("Los dias totales de este año son %d\n", resultado);
printf("Ahora le dire cuantos dias le quedan para que se finalice el año.\n");
printf("Para ello escriba su fecha de la sig forma: dia,mes (los dos en numero)\n");
scanf("%d,%d", &dia, &mes);
resul_fecha=0;
for(a=1;a<mes;a++)
{
resul_fecha+=diasmes[a];
}
resul_fecha+= dia;
resultado-=resul_fecha;
printf("Quedan %d dias para que se termine este año\n", resultado);
break;
case 30:
printf("Uso de cadenas. Introduzca su nombre y yo separaré cada letra:\n");
fflush(stdin);
gets(cadena);
printf("Bienvenido %s. Su nombre con espacios es: ", cadena);
for(a=0;cadena[a]!='\0';a++)
{
printf("%c ",cadena[a]);
}
printf("\nLa cantidad de caracteres de su nombre es %d", a);
fflush(stdin);
printf("\n Fin..\n");
break;
case 31:
fflush(stdin);
printf("Funciones con cadenas usando libreria string.h\n");
printf("Introduce tu nombre:\n");
gets(cadena);
printf("Introduce tu dia de nacimiento:\n");
gets(texto);
printf("Introduce tu mes de nacimiento:\n");
gets(texto1);
strcat(cadena, ", nacido el ");
strcat(cadena, texto);
strcat(cadena, "/");
strcat(cadena, texto1);
//puts(cadena);
printf("Tu eres %s \n", cadena);
break;
case 32:
fflush(stdin);
printf("Vamos a hacer uso de las cadenas para imprimir en pantalla, tambien para dar valor a una variable a partir de ellas, entre otros\n");
printf("Este texto se imprimio con printf, pero tambien se puede meter en una cadena\n");
sprintf(cadena,"Este es un ejemplo de uso de sprintf\n");
puts(cadena);
sprintf(cadena,"Uso de strcmp. Introduzca el mismo texto dos veces, o cambielo");
puts(cadena);
sprintf(cadena,"y yo comparare y le dire si son iguales o son diferentes\n");
puts(cadena);
sprintf(cadena,"Los dos textos van separados por un salto de linea, y deben ser menores a 10 digitos\n");
gets(texto);
gets(texto1);
if(strcmp(texto,texto1)==0)
{
sprintf(cadena,"Los dos textos son iguales\n");
puts(cadena);
}
else
{
sprintf(cadena,"Son diferentes\n");
puts(cadena);
}
break;
case 33:
fflush(stdin);
printf("Bienvenido a la base de datos de nombres.\nLe pedire 10 nombres y los memorizare.\n");
printf("Luego, usted podra preguntarme por alguno y yo le dire si esta en la base de datos\n");
printf("Los nombres pueden tener hasta 80 caracteres\n\n");
for(a=0;a<10;a++)
{
printf("Nombre y apellido: ");
//gets(bd[a]);
gets(cadena);
strncpy(bd[a],cadena,80);
printf("Almacenado %s\n\n", bd[a]);
}
printf("Ya se han almacenado los 10 nombres.\n\n");
do
{
printf("Pregunteme por cualquiera de los que ya escribio. Escriba fin para finalizar el programa\n");
fflush(stdin);
gets(cadena);
if(strstr(bd[0],cadena)==NULL)
{
if(strcmp(cadena,"fin")==0)
printf("\n\nFin del programa\n\n");
else
printf("%s no esta en la base de datos\n",cadena);
}
else
printf("\n%s esta almacenado en la base de datos\n\n",cadena);
}
while(strcmp(cadena,"fin")!=0);
break;
case 34:
printf("Base de datos #2. Puede almacenar hasta 100 nombres de un maximo de 80 caracteres cada uno\n");
printf("Para terminar de almacenar nombres, pulse enter sin escribir nada\n");
fflush(stdin);
for(a=0;a<=100;a++)
{
printf("Nombre: ");
gets(cadena);
if(strcmp(cadena,"")==0)
break;
else
strncpy(bd[a],cadena,80);
printf("\n");
}
printf("Se han terminado de guardar los nombres\n");
printf("A continuacion voy a listar los nombres almacenados\n\n");
for(a=0;strcmp(bd[a],"")!=0;a++)
{
puts(bd[a]);
}
break;
case 35:
fflush(stdin);
printf("Uso de struct... Datos de personas...\n");
printf("Le preguntare datos de una persona, y luego los mostrare en pantalla\n");
printf("Introduzca su nombre: ");
gets(datospersona.nombre);
printf("\nIntroduzca su apellido: ");
gets(datospersona.apellido);
printf("\nIntroduzca su edad: ");
/*Debido a que la combinacion de gets y scanf puede dar problemas,
aqui hago una especie de conversion usando sscanf*/
gets(texto);
sscanf(texto,"%d",&datospersona.edad);
printf("%s, %s, %d años\n", datospersona.apellido, datospersona.nombre, datospersona.edad);
break;
case 36:
fflush(stdin);
printf("Uso de struct#2. Datos de 8 personas y busqueda de datos con for\n");
printf("Bienvenido. En este programa le pedire datos de 8 personas\n");
printf("Luego, pedire un mes (en numero) y le dire que personas cumplen años en ese mes\n");
printf("Empecemos....\n\n");
for(a=0;a<8;a++)
{
printf("Nombre: ");
gets(persona[a].nombre);
printf("\nDia de nacimiento: ");
gets(cadena);
sscanf(cadena,"%d",&persona[a].dia);
printf("\nMes de nacimiento: ");
gets(cadena);
sscanf(cadena,"%d",&persona[a].mes);
printf("\nAño de nacimiento: ");
gets(cadena);
sscanf(cadena,"%d",&persona[a].anio);
printf("\n\n");
}
do
{
printf("Ahora, escriba un numero de mes y le dire quienes cumplen en dicho mes\n");
printf("Escriba 0 para salir del programa\n");
gets(cadena);
sscanf(cadena,"%d",&num);
if(num==0)
{
printf("Fin del programa\n");
}
for(a=0;a<8;a++)
{
if(num==persona[a].mes)
{
printf("%s cumple en el mes %d\n",persona[a].nombre,num);
}
}
}
while(num!=0);
break;
case 37:
fflush(stdin);
printf("Aqui usamos una estructura mas compleja y hacemos un menu con opciones utiles al hacer uso de una estructura\n");
printf("Puedo almacenar hasta 50 nombres. Si quiere parar de almacenar, solo introduzca una linea vacia\n");
cont=0;
for(a=0;a<=50;a++)
{
printf("Nombre: ");
gets(cadena);
if(strcmp(cadena,"")==0)
break;
strncpy(datos[a].nombre,cadena,30);
printf("\nDireccion: ");
gets(datos[a].direccion);
printf("\nNumero: ");
gets(cadena);
sscanf(cadena,"%ld",&datos[a].numero);
printf("\nEdad: ");
gets(cadena);
sscanf(cadena,"%d",&datos[a].edad);
printf("\n\n");
cont++;
}
printf("Fin de almacenamiento de nombres\n\n");
do
{
printf("Elija una opcion:\n");
printf("1. Listar nombres almacenados\n");
printf("2. Mostrar personas de x edad\n");
printf("3. Mostrar personas de x inicial\n");
printf("4. Salir del programa\n");
gets(cadena);
sscanf(cadena,"%d",&num);
switch(num)
{
case 1:
for(a=0;a<cont;a++)
{
printf("%s, %d años, %s, %ld\n",datos[a].nombre,datos[a].edad,datos[a].direccion,datos[a].numero);
}
break;
case 2:
printf("Introduzca la edad: ");
gets(cadena);
sscanf(cadena,"%d", &b);
printf("\n");
for(a=0;a<50;a++)
{
if(datos[a].edad==b)
printf("%s, %d años, %s, %ld\n",datos[a].nombre,datos[a].edad,datos[a].direccion,datos[a].numero);
}
break;
case 3:
printf("Introduzca la inicial: ");
gets(cadena);
sscanf(cadena,"%c",&letra);
printf("\n");
for(a=0;a<50;a++)
{
if(datos[a].nombre[0]==letra)
printf("%s, %d años, %s, %ld\n",datos[a].nombre,datos[a].edad,datos[a].direccion,datos[a].numero);
}
break;
case 4:
printf("Fin..\n");
break;
default:
printf("Comando no valido\n");
}
}
while(num!=4);
break;
case 38:
fflush(stdin);
printf("Manejo de ficheros. Se usa fopen y fclose. En este caso, vamos a hacer");
printf(" un programa pida frases y las almacene en un fichero frases.txt\n");
printf("El programa terminara cuando se pulse intro sin escribir nada\n\n");
printf("Empecemos..\n\n");
fichero = fopen("frases.txt","wt");
do
{
printf("Introduzca la frase que quiere almacenar (maximo 99 caracteres):\n");
gets(cadena);
fputs(cadena,fichero);
fputs("\n",fichero);
}
while(strcmp(cadena,"")!=0);
fclose(fichero);
break;
case 39:
fflush(stdin);
printf("Lectura de ficheros. Le pedire un nombre de un fichero y mostrare en pantalla");
printf(" el contenido de este. Hare una pausa cada 25 lineas y hasta que se pulse");
printf(" intro continuare.\n\n");
printf("Escriba el nombre del fichero: ");
gets(texto);
fichero = fopen(texto,"rt");
printf("\n\n");
if(fichero == NULL)
{
printf("Fichero no encontrado\n");
exit(1);
}
for(a=0;! feof(fichero);a++)
{
if(a==25)
{
gets(texto1);
if(strcmp(texto1,""))
{
fgets(cadena,80,fichero);
puts(cadena);
a=0;
}
}
else
{
fgets(cadena,80,fichero);
puts(cadena);
}
}
printf("\n---------Fin del fichero---------\n");
fclose(fichero);
break;
case 40:
fflush(stdin);
printf("Bienvenido a Agenda V1. Almacenare una base de datos de datos de personas.\n");
printf("Luego, la guardare en un archivo, y si es posible la leere en una proxima ejecucion ");
printf("del programa. Siga el menu para realizar cada funcion\n");
printf("\nIntentando leer datos desde agenda.dat\n\n");
fichero = fopen("agenda.dat","rt");
if(fichero==NULL)
printf("Fichero agenda.dat no encontrado, continuando ejecucion\n");
else
{
printf("Agenda.dat encontrado. Leyendo datos....\n");
fscanf(fichero,"datos_almacenados=%d\n",&cont);
for(a=0;a<cont;a++);
{
fscanf(fichero,"[%d]\n",&b);
fgets(agenda[b].nombre,99,fichero);
fgets(agenda[b].direccion,99,fichero);
fscanf(fichero,"movil=%ld\n",&agenda[b].movil);
fscanf(fichero,"email=%s\n",agenda[b].email);
fscanf(fichero,"dia=%hd\n",&agenda[b].dia);
fscanf(fichero,"mes=%hd\n",&agenda[b].mes);
fscanf(fichero,"year=%hd\n",&agenda[b].anio);
}
fclose(fichero);
}
do
{
printf("Elija una opcion del menu:\n");
printf("1. Añadir nuevos datos a la agenda\n");
printf("2. Visualizar todos los datos almacenados\n");
printf("3. Mostrar datos de una persona\n");
printf("4. Salir\n");
gets(cadena);
sscanf(cadena,"%d",&num);
switch(num)
{
case 1:
if(cont<100)
{
printf("Introduzca el nombre: ");
gets(agenda[cont].nombre);
printf("\nIntroduzca la direccion: ");
gets(agenda[cont].direccion);
printf("\nIntroduzca el numero telefonico: ");
gets(cadena);
sscanf(cadena,"%ld",&agenda[cont].movil);
printf("\nIntroduzca el correo electronico: ");
gets(agenda[cont].email);
printf("\nIntroduzca el dia de nacimiento: ");
gets(cadena);
sscanf(cadena,"%hd",&agenda[cont].dia);
printf("\nIntroduzca el mes de nacimiento: ");
gets(cadena);
sscanf(cadena,"%hd",&agenda[cont].mes);
printf("\nIntroduzca el año de nacimiento: ");
gets(cadena);
sscanf(cadena,"%hd",&agenda[cont].anio);
cont++;
}
else
printf("Limite excedido. No hay espacio para mas nombres\n");
break;
case 2:
for(a=0;a<cont;a++)
printf("%s %s %ld, %s, %hd/%hd/%hd\n",agenda[a].nombre,agenda[a].direccion,agenda[a].movil,agenda[a].email,agenda[a].dia,agenda[a].mes,agenda[a].anio);
break;
case 3:
printf("Introduzca el nombre de la persona:\n");
gets(cadena);
for(a=0;a<cont;a++)
{
if(strcmp(cadena,agenda[a].nombre)==0)
printf("%s, %s, %ld, %s, %hd/%hd/%hd\n",agenda[a].nombre,agenda[a].direccion,agenda[a].movil,agenda[a].email,agenda[a].dia,agenda[a].mes,agenda[a].anio);
}
break;
case 4:
printf("Guardando datos...\n");
fichero=fopen("agenda.dat","wt");
fprintf(fichero,"datos_almacenados=%d\n",cont);
for(a=0;a<cont;a++)
{
fprintf(fichero,"[%d]\n",a);
fputs(agenda[a].nombre,fichero);
fprintf(fichero,"\n");
fputs(agenda[a].direccion,fichero);
fprintf(fichero,"\n");
fprintf(fichero,"movil=%ld\n",agenda[a].movil);
fprintf(fichero,"email=%s\n",agenda[a].email);
fprintf(fichero,"dia=%hd\n",agenda[a].dia);
fprintf(fichero,"mes=%hd\n",agenda[a].mes);
fprintf(fichero,"year=%hd\n",agenda[a].anio);
}
printf("Datos almacenados con exito.\n");
printf("Cerrando archivo..\n");
fclose(fichero);
break;
default:
printf("Comando no encontrado\n");
}
}
while(num!=4);
printf("Fin del programa\n\n");
break;
default:
printf("No he llegado hasta alli xD jejej\n");
}
}
while(parte!=0);
system("PAUSE");
return 0;
}