|
1261
|
Programación / Programación C/C++ / Re: RETOS C++
|
en: 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: #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
|
Programación / Programación C/C++ / Re: programa muestra resultado que no deberia
|
en: 2 Octubre 2012, 14:01 pm
|
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 / Programación C/C++ / Re: duda c++
|
en: 2 Octubre 2012, 13:47 pm
|
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#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 / Programación C/C++ / Re: Ayuda con un problema.
|
en: 1 Octubre 2012, 22:56 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 ) ) else if (dia==30 && (i == 4 || i ==6 || i ==9 || i ==11 ) ) else if (dia==31 && i == 12 ) else if (dia==28 && i == 2 ) else printf("%d / %s\n",dia +1,mes [i -1]); return 0; }
|
|
|
1265
|
Programación / Programación C/C++ / Re: RETOS C++
|
en: 1 Octubre 2012, 20:33 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; }
|
|
|
1267
|
Programación / Programación C/C++ / Re: ayuda
|
en: 1 Octubre 2012, 14:37 pm
|
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 ++) 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; } return 0; }
No es la forma más óptima, pero lo que te dije, para que empieces.
|
|
|
1268
|
Programación / Programación C/C++ / Re: Duda con ejercicio de clase
|
en: 1 Octubre 2012, 00:29 am
|
....era un pequeño programa que contara las letras "z" y "Z" de un archivo llamado prueba.txt.... Y 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 ); fichero =fopen("prueba.txt","r"); do { if (c == letra || c == LETRA) nletra++; } while (c != EOF); printf("Numero de '%c' y '%c': %d",letra ,LETRA , nletra ); printf ("\nPresiona ENTER para salir:"); ; return 0; }
|
|
|
1269
|
Programación / Programación C/C++ / Re: ¿ Como utilizar %n ?
|
en: 30 Septiembre 2012, 17:19 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. Me 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
|
Programación / Programación C/C++ / Re: Duda con juego que genera numeros aleatorios
|
en: 30 Septiembre 2012, 16:32 pm
|
La 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:EDITO 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
|
|
|
|
|
|
|