(AYUDA)Programacion desde 0

Hacer un cast es usar un tipo de var como otra, en ese caso usar una de tipo entero como decimal. Te recomiendo que te pilles el pdf de nacho cabanes que esta muy bien, lo tienes en su web. :p
Muchas gracias, ya lo baje, me pongo a leerlo en estos dias...
Trollazo está baneado por "Troll"
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?
Por que no tratas de user Dev c++??
Trollazo está baneado por "Troll"
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.
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.

De nada xD... Te lo recomende porque aparte de ser open source es muy bueno xD, lo recomiendan por todo lado y fue el que usé y estoy usando para aprender c ...
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?
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
system("PAUSE");
, antes del return, si no te funcionara, prueba a poner esta otra en vez de esa
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>
Supongo que tendras el printf al final del main o similar. Lo que te pasa es q la ejecucion acaba y windows cierra la ventana. Tienes dos opciones: ejectar el programa desde modo consola o añadir un scanf o similar despues para que se quede parado hasta q pulses una tecla.
Trollazo está baneado por "Troll"
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
system("PAUSE");
, antes del return, si no te funcionara, prueba a poner esta otra en vez de esa
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>


No me va ninguno, de todas formas como hago para crear un paron temporizado entre funcion y funcion. Necesito que se pause solo unas decimas de segundo.
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
Yo para recomendar recomendaría el Code::Blocks con GCC, bajo mi opinion mi el mejor IDE.

El Dev-C++ no me gusta el editor que tiene (añade tabuladores donde no debe).
El Visual C++ está bastante bien, pero está un poco obsoleto respecto a C, además de que no funciona en Linux (que es el mejor sistema para desarollar aplicaciones, por mucho).
Trollazo está baneado por "Troll"
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 [ayay]
Ok, a ver si recuerdo como iba el tema. Creo que en C++ para usar el tiempo habia que llamar timeGetTime() (habiendo incluido previamente <mmsystem.h>) Esa funcion te devuelve un float que es la hora actual en milisegundos (o algo por el estilo). Entonces el funcionamiento seria el siguiente:
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;
}


Algo asi es lo que te deberia quedar si quieres un bucle infinito. Si no quieres que el bucle sea infinito cambia el while principal po un bucle for. Coneso deberia solucionarse. Por cierto, cuando usas "if(X()<2)" esa comprobacion nunca sera falsa porque no mide las veces que has ejecutado X() sino el valor que devuelve, y X() siempre devuelve 0 porque el unico return que tiene devuelve un 0, y 0 siempre es menor que 2.

Espero que te halla servido de ayuda. De todas formas espero no haberme equivocado porque tengo algo oxidado el C++ ya que con el RevEngine solo estoy usando C.

Edit: Acabo de ver un fallo en el codigo que he posteado. No puedes sumarle a time directamente timeGetTime, sino que tienes que sumarle la diferencia entre el timeGetTime actual y el anterior que hallas realizado. Para ello guarda siempre el ultimo valor de timeGetTime en una variable y trabaja con la diferencia entre el valor actual y el acumulado.
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 [ayay]


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.
Trollazo está baneado por "Troll"
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 [ayay]


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.


Gracias por ayudar tio, no me importa que le metas mano. El problema es que ya he llegado a este punto, pero lo desechee porque lo que necesito es que el loop sea automatico, y necesito poder cambiar de loop (para que tamagochi coma cage y eso), el comando para pedir el tiempo que me ha pasado tecnik me va a ser muy util, pero lo que si que me vendria bien es un ejemplo practico del "for".

Estoy haciendo un tamagochi porque considero que para aprender a programar es idoneo, es relativamente facil y me obligara a aprender mucho.
El for es un bucle bastante comun en programacion, en C++ se usa asi:
for(int i = 0; i< 2; i++)
{
//Aqui el codigo que se debe repetir
}

i es la variable que usaras como contador. dentro del parentesis hay 3 apartados separados por punto y coma (No por comas solas, como suele ser). En el primero inicializas el contador, en el segundo pones la condicion, mientras la condicion sea cierta el bucle se volvera a ejecutar. La tercera parte es la actualizacion. El funcionamiento es algo asi como que tras cada pasada del bucle, se ejecuta la actualizacion (en este caso se le suma 1 a i), se comprueba la condicion(en este caso, si i es menor que 2), y en caso afirmativo se vuelve a realizar el bucle.
Respecto a las librerías propias de WII y GC, ¿sabéis de algún sitio que tenga documentación sobre las mismas?, los parámetros de las funciones y eso.
Holaaa!!...
Bueno, otra vez yo..
Queria pedirles ayuda... Resulta que estoy haciendo el curso de nacho cabanes y pues ya se como se transforman numeros entre los diversos sistemas... Luego me enseñan a declarar variables que usen por ejemplo sistema hexadecimal o sistema octal...
Bueno, lo que quiero hacer es que el usuario introduzca un numero y a ese numero se le agregue el 0x al principio para indicar que es hexadecimal.
Mi codigo es el siguiente (contiene cosas que vi anteriormente xD, es como un programa de practica):
#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;
}


Como está actualmente no compila debido a la linea donde intento hacer lo que ya explique (hex= 0x hex;) pero si no es asi, entonces como??? usando un +??? Y si es asi, cuando quiera poner la parte de octal, como le agrego un 0 a la izquierda??..
Muchas gracias...
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.
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.
A mi nunca me funciono el sleep no se porque xD. Al final me hize un sleep muy simple.

#include <time.h>

void sleep(int segundos)
{
  time_t tiempo;
  tiempo = time(0);
  segundos+=time(0);

  while(tiempo!=segundos) tiempo = time(0);
}
Trollazo está baneado por "Troll"
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.


wow, gracias tio, ayer estube con el for, ya hize que me rulara (gracias technik!), y de echo ya trate de hacer la "burrada" que me has expuesto, pero la descarte, pense que el tiempo de espera dependeria de la potencia del ordenador y eso me descoloca todo. El sleep ese lo veo mu pancho, en mis tiempos hize mis pinitos en SLS y se usaba el comando delay de forma parecida, es posible que me solucione todo el problema de la impresion en pantalla.

APOCa, si no rula acabare probando el tullo, parece mas espeso pero si no me va el sleep tendre que darte las gracias XD

EDITO: no me va el ni el sleep ni el delay, retardan la ejecucion pero el tiempo que les da la gana, no el que yo le indico como parametro. Otra es ¿alguien sabe porque los tengo que invocar con int y no con void para que me compile?

Otra muestra de mi "experimento" para que veais que puedo hacer mal:

#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;
}


Si, el sleep a acabado en 300 segundos pero ni puto caso; voy a mirar ahora el sleep de APOCa.
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.

Primero que nada gracias por tu interes ..
Lo que quiero hacer es que el usuario introduzca un valor, y luego, a ese valor yo le agregue un 0x por detras...
Si no hay manera tendre que desistir por poner que el usuario agregue el valor por delante manualmente haciendo uso de scanf....
Bien, teniendo en cuenta los conocimientos basicos del C (abrir ficheros,crear directorios,printf,scanf,bucles,arrays,punteros......etc XD ) he decidido aprender el C pero para desarrollo de juegos.....Asi k he aqui mi duda......¿Cual es la mejor libreria para esto.....(videojuegos)?...
¿Cual es el mejor compilador(yo uso Devc++)?
Bueno grasias.....
PD:Hasta cuando podre crear aplicaciones para wii :( ?
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
Muy buen curso tomaste........Veamos gotoxy(x,y) es una funcion (creo recordar) de la libreria conio.h
asi que la deves de incluir tambien (#include <conio.h>) y asi te va ha funcionar, en el mismo manual te lo dicen........Y windows siempre lo deves incluir para usar funciones propias de la libreria tales como system("PAUSE") k es para pausar el programa hasta que se oprima una tecla
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 :)
Ya lo probe y a mi tambien me da error.....
k puede ser?
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 :)


La librería conio.h no es estándar, era un librería que venia con Borland C, y muchos compiladores la incluyeron, si Dev-C++ incluye algunas de las funciones no sé porque estas dos no funcionan, pero de todos modos yo no me preocuparía mucho [+risas]

Respecto a lo del "#include <windows.h>", solo lo tienes que incluir cuando uses funciones del API de Windows (de momento no tendrías que preocuparte de esto, primero aprende el estándar). Si lo dices por el system("pause"), es parte de la librería estándar (aunque los comandos de consola no lo son), y está definido en stdlib "#include <stdlib.h>"
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
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


Una duda, tengo una variable de tipo int ; .......int sel; el caso es k pido el valor de esa variable por teclado...scanf("%i", &sel) o scanf("%d", &sel) luego, depende del valor k tome, 0, o mas de 0;
se va a ecribir en pantalla: cprintf(">>") en una posicion de la pantalla, buno a lo que voy,nunca se escribe ese >> en la pantalla,por mas k lo modifico no da nada.

el codigo es este
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;     


ya definida la variable y los includes .Espero su ayuda Gracias.
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>
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>

Vale, ahora lo pruebo xD...
Lo del stdlib pues xD, el dev c++ no me lo pide, aunque igual ahorita lo incluyo...
EDIT:
Muchas gracias por el comando, lo del case 12 ya quedó solucionado..
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


Muchas gracias!!!!!!!!
Ya funciona, solo que ahora ya no hay que poner "#include <conio.h>" sino que tengo que poner, #include "conio.C" .
Creo k nadamas deves de poner #include <conio.h>
#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;
}

Lo tengo asi, si no no funciona.
Hola... No se si a alguien le sirve de ejemplo.. Pero ya casi voy por la mitad del curso de c de nacho cabanes y he agrupado todo en un solo programa... El programa se puede limpiar un poco, pero eso lo haré al final..
Aqui dejo el code...
/*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;
}
Muy bien tu programa.......Tengo una dudilla:

Por k me sale error en la siguiente linea: if ( sel=1 ) { printf("Hola"); }........ Es todo
Alguien sabe cual es mi error
Tiene que ser if (sel==1)
Y eso por k?
Con las variables se pone == en vez de = ?
Eso es porque para asignar un valor a una variable usas el =

pero en un if tu necesitas comparar no asignar, por eso tienes que usar el ==

Esque no me quiero meter en liarte más pero el == tiene una expliacion
Gracias, el == si conosco su significado
Gracias este post me a sido de mucha ayuda para empezar.
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
Si es cierto, Ya cree mi primera prueba de aplicacion de wii!!!!!
Consiste en acceder al IR y mover una imagen (puntero) por la pantalla, ademas cuenta con 2 botones, uno para ir al HC y otro para resetear la wii .....
Si quieren k cuelgue el codigo diganme y en unos momentos lo subo
la verdad esta ya metido desde hace 20 dias en un proyecto de la wii que seria activar el freeloader desde el canal homebrew sin tener que hacer el dowgrade lo tenia ya todo listo hasta que salio la aplicacion y ahora no se si continuar o seguir que opinais
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

No estan facil , o yo soy muy torpe, he leido ya muchos tutoriales de como echar a andar , todo lo necesario para programar en Wii , y te puedo asegurar que es muy DIFICIL, con decirte que aun no he podido hacerlo funcionar y llevo una semana entera detras de esto. He pedido varias veces ayuda, pero na de na, no la he obtenido y sigo lo mismo, me he bajado codigos de ejemplos , solo para hacer un copy-paste , al programa y cuando compilo, para sacar el .dol o .elf, nada siempre el mismo error :
make": *** No targets specified and no makefile found.  Stop.
Y ahi se queda el tema.

Un saludo y seguire investigando.
almeria 27 ese error que te da es porque donde vas hacer make no hay un makefile asociado ten siempre que hagas make un makefile en la misma carpeta espero haberte ayudado
Hola...
Bueno, la verdad he estado haceindo el curso, y me han pedido hacer una agenda.
En la agenda se debe poder almacenar todo en un archivo... Al principio del programa lo leo, y al final lo guardo...
El problema es que cuando intento imprimir los valores de una segunda persona, no me imprime lo que quiero. La agenda esta en el case 40... No he podido hacerlo funcionar y desconozco la razon.. Me gustaria que alguien fuera tan amable de colaborarme en esta parte:
/*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;
}


Gracias de antemano
99 respuestas
1, 2