|
1021
|
Programación / Programación C/C++ / Re: Descomponer numero en factores..
|
en: 12 Febrero 2013, 22:23 pm
|
Porque usas funciones de C? Sería más apropiado usar los new y delete:
Como yo también soy nuevo en esto del C++, planteo una dudita; ¿otra forma más "inmediata" de inicializar factores a cero?: #include <iostream> #include <cstdlib> using namespace std; int main(){ int i=0; int contador=0; int aux=0; int descomponer=0; int *factores=new int[32]; for (i=0;i<32;i++) factores[i]=0; cout <<"Factorizar un numero.."<<endl; cout<<endl<<"Numero a factorizar : " ; cin>>descomponer; aux=descomponer; cout<<endl; for(i=2;i<=descomponer;i++) { while(descomponer%i==0) { factores[contador]=i; contador++; descomponer=descomponer/i; } } cout<<"########"<<endl; cout<<aux<<" = " <<" "; cout<<factores[0]; int x=1; do{ cout<<"x"; cout<<factores[x]; x++; }while(factores[x]!=0); cout<<endl<<"########"<<endl; delete[] factores; return EXIT_SUCCESS; }
Saluditos!.
|
|
|
1022
|
Programación / Programación C/C++ / Re: Ayuda lenguaje C pequeña duda
|
en: 11 Febrero 2013, 22:19 pm
|
Buenas, tengo el siguiente codigo y lo que quiero ...................
Mejor tomar opción como char y así al entrar una letra no se colgará.
Fíjate en que ahora los case son 'Nº ':#include <iostream> using namespace std; int main(){ char opcion; do { cout<<"1- Nueva partida"<<endl; cout<<"2- Cargar partida"<<endl; cout<<"3- Salir"<<endl; cout<<"Opcion:"<<endl; cin>>opcion; switch (opcion){ case '1': cout<<"1- Nueva partida"<<endl; break; case '2': cout<<"2- partida"<<endl; break; case '3': cout<<"3- Adios"<<endl; break; default: cout<<"Error: Opcion incorrecta"<<endl; } }while(opcion!='3'); return 0; }
Otra opción es "comerse" el carácter no válido:#include <iostream> #include <stdio.h> using namespace std; int main(){ int opcion; do { cout<<"1- Nueva partida"<<endl; cout<<"2- Cargar partida"<<endl; cout<<"3- Salir"<<endl; cout<<"Opcion:"<<endl; cin>>opcion; while ( getchar() != '\n' ); switch (opcion){ case 1: cout<<"1- Nueva partida"<<endl<<endl; break; case 2: cout<<"2- partida"<<endl<<endl; break; case 3: cout<<"3- Adios"<<endl<<endl; break; default: cout<<"Error: Opcion incorrecta"<<endl<<endl; } }while(opcion!=3); return 0; }
Saluditos!.
|
|
|
1023
|
Programación / Programación C/C++ / Re: Programa de Educacion Asistida por Computadora en C.
|
en: 11 Febrero 2013, 21:43 pm
|
Pues como sólo va una instrucción después del if, yo no pondría llaves: do { scanf( "%d", &operando ); if ( operando < 1 || operando > 5 ) printf( "Opcion no valida, intenta de nuevo..." ); } while ( operando < 1 || operando > 5 );
y arreglaría el "scanf( "%d", &operando );" por si entran un carácter en vez de un número.Saluditos!.
|
|
|
1024
|
Programación / Programación C/C++ / Re: Problema básico en C++
|
en: 11 Febrero 2013, 19:47 pm
|
Mírate este otro enlace:http://foro.elhacker.net/programacion_cc/ayuda_con_un_programa_en_c-t377604.0.html;msg1806477#msg1806477O sea:#include <iostream> using namespace std; int main() { int i,cont=0,j,num,k,total; cout <<"Ingresa el total de numeros: "; cin >>total; for (i=0;i<total;i++){ cout <<"Ingresa el numero "<<i+1<<": "; cin >>num; k=0; for (j=1; j<=num; j++) if (num%j == 0) k++; if (k == 2 ){ cont++; cout <<"El numero "<<num<<" ES primo"<<endl; } else cout <<"El numero "<<num<<" NO es primo"<<endl; } cout <<"El numero de primos es :"<<cont<<endl; return 0; }
Saluditos!.P.D: Cuando tengas que poner un código usa las etiquetas GeSHi y eliges C++ y en medio de las dos etiquetas Code que te salen "pegas" el código.
|
|
|
1025
|
Programación / Programación C/C++ / Re: Duda con una calculadora C++
|
en: 10 Febrero 2013, 22:50 pm
|
... Y tambien me gustaria que alguno de ustedes me dijera si esta bien asi o necesita alguna mejora ese codigo... El código del programa lo hize yo...
Está bastante ben, salvo por "pequeños detelles. como el uso de "#include <iostream.h>, que debe ser "<iostream>" así como el uso de la librería "conio" y sus acólitos" clrscr" y "getch" que no forman parte del estándar de C. Existen otras opciones sí estándar.
Repites primera en donde debería decir segunda y olvidaste incluir "using namespace std;", el declarar a y b como float, por si entras decimales o por siel resultado de la división es decimal (aunque esto se podría solventar con un cast si sigues declarando a y b como int) y ya de paso hago uso de "#include<clocale>" que con "setlocale(LC_ALL, "Spanish");" permite en los cout escribir en español (acentos, ñ, ¿,¡, ..), evitándote los códigos ASCII:#include <iostream> #include<clocale> using namespace std; int main () { setlocale(LC_ALL, "Spanish"); int opcion; float a,b; while (1) { cout<<"Seleccione la operación a realizar: \n"; cout<<"1 Suma\n"; cout<<"2 Resta\n"; cout<<"3 Multiplicación\n"; cout<<"4 División\n"; cout<<"5 Salir\n"; cin>>opcion; switch (opcion){ case 1: cout<<"Ingrese la primera cantidad a sumar: "; cin>>a; cout<<"Ingrese la segunda cantidad a sumar: "; cin>>b; cout<<"El resultado es: "<<(a+b)<<endl; break; case 2: cout<<"Ingrese la primera cantidad a restar: "; cin>>a; cout<<"Ingrese la segunda cantidad a restar: "; cin>>b; cout<<"El resultado es: "<<(a+b)<<endl; break; case 3: cout<<"Ingrese la primera cantidad a Multiplicar: "; cin>>a; cout<<"Ingrese la segunda cantidad a Multiplicar: "; cin>>b; cout<<"El resultado es: "<<(a*b)<<endl; break; case 4: cout<<"Ingrese la cantidad a Dividir: "; cin>>a; cout<<"Ingrese la cantidad Dividir: "; cin>>b; cout<<"El resultado es: "<<(float)a/b<<endl; break; case 5: return 1; break; default: cout<<"Sólo puede seleccionar una de las opciones de el Menú... : "; cout<<"Presione cualquier tecla para continuar"; break; } } return 0; }
Saluditos!.
|
|
|
1026
|
Programación / Programación C/C++ / Re: Leer secuencia de doubles hasta tecla enter
|
en: 10 Febrero 2013, 15:48 pm
|
.............................................................. pero mi principal problema es que no sé como hacer para que cuando pulse intro pueda leer esos "n" números separados por espacios (serian números decimales), alguna idea ?, saludos.
Espero que surjan ideas más ingeniosas que la que yo propongo. En principio es todo un reto al no tener prefijado el número n:#include <iostream> #include <cstdio> #include <cstdlib> using namespace std; main() { int i=0,j=0,k=0; float suma=0,Numero[100]={0}; char Numero_char[15][10],cad[100]; gets (cad); for (i = 0; i < cad[i]!='\0'; i++){ if (cad[i]==' ') { Numero_char[k][j]='\0'; k++;j=0; continue; } else { Numero_char[k][j]=cad[i]; j++; } } Numero_char[k][j]='\0'; cout<< endl <<endl ; for (i = 0; i <= k; i++){ Numero[i]= atof (Numero_char[i]); suma+=Numero[i]; } cout <<" Media= "<<(float) suma/(k+1)<<endl ; return 0; }
Olvide que era con cin:#include <iostream> #include <cstdio> #include <cstdlib> using namespace std; main(){ int i=0,j=0,k=0; float suma=0,Numero[100]={0}; cin>>Numero[i]; while (getchar ()!='\n'){ i++;cin>>Numero[i]; } cout<< endl <<endl ; for (j=0;j<=i;j++) suma+=Numero[j]; cout <<" Media= "<<(float) suma/(i+1)<<endl ; return 0; }
Saluditos!.
|
|
|
1028
|
Programación / Programación C/C++ / Re: problema con escrbir fichero
|
en: 9 Febrero 2013, 19:35 pm
|
listo,lo arregle, no se que habrá sido, por las dudas agregue la librería string y salio
No debería ser así ya que no haces uso de ninguna función de esa librería. Por cierto, el enlace, aunque algo elemental, interesante. Ese tio se lo curra ya que he visto varios "cortos" suyos y son muy ilustrativos. Saluditos!.
|
|
|
1029
|
Programación / Programación C/C++ / Re: problema con escrbir fichero
|
en: 9 Febrero 2013, 00:00 am
|
Pues a míme escribe el fichero sin problemas.#include <iostream> #include <fstream> using namespace std; int main () { ofstream F("texto.txt"); string nombre; cin>>nombre; cout<<"hola como estas " << nombre << endl; F<<"hola como estas" << nombre << endl; return 0; }
SAlida en pantalla: leosan hola como estas leosan
Process returned 0 (0x0) execution time : 4.884 s Press any key to continue.
Salida en fichero:
hola como estas leosan
Saluditos!.
|
|
|
1030
|
Programación / Programación C/C++ / Re: alinear texto
|
en: 8 Febrero 2013, 20:31 pm
|
Puesto a hacerlo sin usar más de un for salió esto, que además funciona:#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ int i,num; char valor[2],str[20]={0}; printf("Dame un digito (1-9): \n"); scanf("%d",&num); for (i = 1; i <=num; i++){ memset (str,' ',num-i); strcat(str,itoa (i,valor,10)); memset (&str[strlen (str)-1], i+'0',i); printf ("%s\n",str); memset (str,0,strlen (str)-1); } return EXIT_SUCCESS; }
Se admiten críticas o sugerencias. Saluditos!.REEDITO: Pensándolo bien, ¿para qué usar strcat?:#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ int i,num; char valor[2],str[20]={0}; printf("Teclea un digito (1-9): \n"); scanf("%d",&num); for (i = 1; i <=num; i++){ memset (str,' ',num-i);//relleno izquierda con espacios memset (&str[strlen (str)], i+'0',i);//relleno derecha con numeros printf ("%s\n",str); memset (str,0,strlen (str)-1);//hago nula la cadena para volver a usarla } return EXIT_SUCCESS; }
Y con una pequeña variante puedo obtener una pirámide, tipo:Teclea un digito (1-9): 6 1 222 33333 4444444 555555555 66666666666
Con sólo esto:#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ int i,num; char valor[2],str[20]={0}; printf("Teclea un digito (1-9): \n"); scanf("%d",&num); for (i = 1; i <=num; i++){ memset (str,' ',num-i);//relleno izquierda con espacios memset (&str[strlen (str)], i+'0',2*i-1);//relleno derecha con numeros printf ("%s\n",str); memset (str,0,strlen (str)-1);//hago nula la cadena para volver a usarla } return EXIT_SUCCESS; }
Hay que ver lo que da de sí memset ¡ ¡ ¡.Nuevamente, Saluditos!.
|
|
|
|
|
|
|