Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - leosansan

#1261
Programación C/C++ / Re: RETOS C++
2 Octubre 2012, 14:46 PM
Tienes el problema que si introduzco cuatro números negativos el mayor es, como no, el cero ... que no forma parte de los cuatro números. Tendrías que usar la libreria limits y asignarle a menorel valor de entero que es int_MIN o algo así.
Pero insisto en algo que postee anteriormente, no se está haciendo lo que dice textualmente el enunciado:
3- Un programa que diga el numero mas grande. El usuario ha de insertar 4 numeros separados por un espacio.
Este código sí hace lo que se pide:
Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdio>
using namespace std;
main()
{
    int a,b,c,d,mayor;
    char ch,cad[100]/*= "17 32 15 27"*/;
    cout <<"Introduzca cuatro numeros separados por un espacio:"<< endl;
    gets (cad);
    sscanf(cad, "%d%c%d%c%d%c%d",&a, &ch ,&b,&ch, &c,&ch, &d  );
    if ((a= a>b ? a:b)>(c= c>d ? c:d))
        cout << a << endl;
    else
        cout << "mayor = " << c << endl;
    return 0;
}

#1262
Cita de: ivanel93 en  2 Octubre 2012, 04:59 AM
el código original( el primero que postee) al ingresar todos los datos en cero( eso incluye la distancia) que al ser dividido entre cero, si daba el rotulo de que no se podía realizar, pero en el resultado mostraba un valor algo de "x10e9..." ó "x10e-9..." 
Lo que sucede es que la variable no está inicializada, por lo que contendrá basura. Prueba a inicializar con un valor cocreto, por ejemplo "d=0" y veras la diferencia.
#1263
Programación C/C++ / Re: duda c++
2 Octubre 2012, 13:47 PM
Cita de: ankora45 en  2 Octubre 2012, 11:58 AM
hacer que cuando se le pida un numero al usuario para acceder a un menu no tenga que escribirlo, si no solo pulsarlo
Una forma es mediante el uso de la función getch de la librería coni.h, incluida ya en Cod::Blocks o Dev.C++ -no hablo de la de borland-. NO es la mejor o más portable para otros compiladores, pero hace lo que quieres
Código (cpp) [Seleccionar]
#include <iostream>
#include<conio.h>
using namespace std;

int main()
{
    cout<<"pulse 1 para acceder a menu1"<<endl;
    cout<<"pulse 2 para acceder a menu2"<<endl;
    switch(getch ())
        {
            case '1': cout<<"ha accedido al menu 1"<<endl;
            break;
            case '2': cout<<"ha accedido al menu 2"<<endl;
            break;
        }
    return 0;
}

Yo también quedo a la espera de otras soluciones sin getch.
Saludos!
#1264
Programación C/C++ / Re: Ayuda con un problema.
1 Octubre 2012, 22:56 PM
Cita de: Onigiri en  1 Octubre 2012, 18:57 PM
Se lee de una fecha el numero del día (1 a 31) y el numero del mes (1 a 12). Informar la fecha del día siguiente del modo: numero del día y nombre del mes. Suponiendo Febrero siempre con 28 días.

Como no es plan de dártelo todo hecho, aquí tienes un código básico que hace lo que quieres. No creo que tengas mayor problema en pasarlo a C++, printf y scanf por cout y cin, y poco más. Deberías "enriquecerlo" para cuando entren número de día o de mes fuera de rango. Es lo que me ha salido a bote pronto, supongo que si lo piensas un poco más podrás abreviarlo:
#include <stdio.h>

int main()
{
   int i,dia,mes_;
   char mes [12][10]={"ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO","JULIO","AGOSTO","SEPTIEMBRE","OCTUBRE","NOVIEMBRE","DICIEMBRE"};

   printf("DIA =   ");scanf ("%d%*c",&dia);
   printf("MES =   ");scanf ("%d%*c",&i);
   if (dia==31 && (i == 1 ||  i ==3 || i ==5 || i ==7 || i ==8 || i ==10 ) )
       printf("1 / %s\n" ,mes [i]);
   else if (dia==30 && (i == 4 || i ==6 || i ==9 || i ==11  ) )
       printf("1 / %s\n" ,mes [i]);
   else if (dia==31 && i == 12  )
       printf("1 / %s\n" ,mes [0]);
   else if (dia==28 && i == 2  )
       printf("1 / %s\n" ,mes [2]);
   else
       printf("%d / %s\n",dia+1,mes [i-1]);
   return 0;
}
#1265
Programación C/C++ / Re: RETOS C++
1 Octubre 2012, 20:33 PM
Cita de: Stakewinner00 en  1 Octubre 2012, 16:23 PM
Sin usar  max con un solo if basta para comparar los 4 numeros, seguramente hay otras formas pero esta es una:
#include <iostream>
    using namespace std;

int main ()
{
    int a,b,c,d;
    cin >> a >> b >> c >> d;
    if ((a= a>b ? a:b)>(c= c>d ? c:d))
        cout << a << endl;
    else
        cout << c << endl;
}
#1266
Cita de: soyloqbuskas link=topic=372382.msg1788640#msg1788640
Y otra cosa mas, ¿como puedo calcular el tamaño del fichero? porque he puesto fileSize=100 porque no sabia calcularlo xD
CitarPrueba con:
fseek(fichero, 0L, SEEK_END);
   printf("prueba.txt ocupa %d bytes", ftell(fichero));
Saludos!.
#1267
Programación C/C++ / Re: ayuda
1 Octubre 2012, 14:37 PM
Cita de: aneudys en  1 Octubre 2012, 09:34 AM
escribir un programa que que cifre un mensaje usando rot13
Como pareces que andas muy perdido -SIEMPRE HAY QUE SUBIR ALGO DEL CÓDIGO PARA AYUDAR-, por esta vez te echo una mano con un código, para que tengas por dónde empezar::
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
int main (void)
{
    int i;
    char cadena []="Como se puede distinguir a un extrovertido de un "
    "introvertido en la NSA? Ra ybf nfprafberf,"
    "ry rkgebiregvqb zven ybf mncngbf qr ybf BGEBF gvcbf.";
    for (i=0;i<=strlen (cadena);i++)
        printf ("%c",cadena[i]);
    puts("\n");
    for (i=0;i<=strlen (cadena);i++)
        {
            if (cadena [i]>'m' && cadena [i]<='z' )   cadena [i]-=13;
            else if (cadena [i]>='a' && cadena [i]<='m' )  cadena [i]+=13;
            else if (cadena [i]>='A' && cadena [i]<='M' )  cadena [i]+=13;
            else if (cadena [i]>='M' && cadena [i]<='Z' )  cadena [i]-=13;
            printf ("%c",cadena[i]);
        }
    return 0;
}

No es la forma más óptima, pero lo que te dije, para que empieces.
#1268
Cita de: foreground en 30 Septiembre 2012, 21:25 PM
....era un pequeño programa que contara las letras "z" y "Z" de un archivo llamado prueba.txt....

CitarY por qué no e y E o s y S ...... para no alterar el código mucho, entro las letras a contar en los "define", así si te pide otro juego de letras sólo tendrás que cambiar dichos define. Para que veas que funciona te "creo"y escribo  el fichero con dos líneas -los "fputs"-. Espero te sea de ayuda:

#include<stdio.h>
#include<stdlib.h>
#define letra  'o'
#define LETRA  'O'
int main()
{
    FILE *fichero;
    int nletra=0;
    char c;
    fichero=fopen("prueba.txt","w");
    if(fichero==NULL)
        {
            printf("error al buscar el archivo\n");
            return 1;
        }
    fputs("Esto es una linea\n", fichero);
    fputs("Esto es otra y estO es continuacion de lo anterior", fichero);
    fclose (fichero);
    fichero=fopen("prueba.txt","r");
    do {
      c = getc (fichero);
      if (c == letra || c == LETRA) nletra++;
    } while (c != EOF);
    fclose (fichero);
    printf("Numero de '%c' y '%c': %d",letra,LETRA, nletra);
    printf ("\nPresiona ENTER para salir:");
    while (getchar()!='\n')
            ;
    return 0;
}
#1269
Programación C/C++ / Re: ¿ Como utilizar %n ?
30 Septiembre 2012, 17:19 PM
Cita de: rir3760 en 30 Septiembre 2012, 16:44 PM
Pues como había dicho, acabo de compilar el programa con:
Lcc-win32
Pelles C
Dev-C++ (utiliza MinGW)
CygMing (la version 3.X y 4.X de gcc para Cygwin)

Y con todos ellos el resultado es el esperado:
3.141590 3490
The above line contains 13 characters.
CitarMe da que "deseas" machacar mis respuestas, querido amigo. Aunque resulte redundante, el susodicho programa no hace lo que se espera de él, en Dev-C++ ,Code::Blocks y compañía, al menos en Windows7, y no sólo lo digo yo, ahí están sinatra y Caster para corroborrarlo. Por mucho que forme parte del C antidiluviano. No me eches a mí la culpa de que no funcione, sólo constato un hecho y pongo en pro que con Pelles C for Windows si "rula" (=funciona, para que no me preguntes otra vez que significa, lo que me lleva a pensar que no eres muy cinéfilo- ).
Que a tí te funciona ... ¡me alegro por tí !, pero a otros no y yo lo que hago es "informarles de por qué: el compilador, el IDE, el sistema operativo o los astros!, vaya usted a saber.
Como casi siempre te conformas con "tirar" una respuesta o comentario sin aportar solución. Se te gradecería que nos digas por qué a nosotros no nos funciona, al menos bajo W7.

P:DMe alegra qu a tí te funcione bajo todos esos programas, yo me tengo que con formar con Pelles C.
Un saludo.

#1270
Cita de: rir3760 en 30 Septiembre 2012, 16:07 PMLa función "srand" requiere de un argumento, llamarla como indica leosansan (sin argumento) es un error.
¿¿¿....???      cPor qué no pruebas a correr el código que expuse?.¿No será que "quieres decir otra cosa?, porque decir que no "funciona" cuando sí funciona es erróneo. Otra cosa es que quieras decir que no sirve para generar números aleatorios diferentes cada vez que le llames. Pero te recuerdo que la duda era otra, ésta en concreto:
Respuesta a:
CitarEDITO 2: Me surge otra pregunta, utilizar srand() sin semilla y srand() pero con una semilla que no cambie, es realmente lo mismo no?

SI, puedes ponerla sin semilla así "srand()" o con semilla, así  "srand(15)" y en ambos casos se genera el mismo juego de números aleatorios.
Un saludo