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

#1021
Cita de: amchacon en 12 Febrero 2013, 14:54 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?:

Código (cpp) [Seleccionar]
#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
Cita de: SKaY9 en 11 Febrero 2013, 21:42 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º ':


Código (cpp) [Seleccionar]
#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:

Código (cpp) [Seleccionar]

#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
Pues como sólo va una instrucción después del if, yo no pondría llaves:

Código (cpp) [Seleccionar]
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 C/C++ / Re: Problema básico en C++
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#msg1806477

O sea:
Código (cpp) [Seleccionar]
#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
Cita de: Black Lotus en 10 Febrero 2013, 21:02 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:

Código (cpp) [Seleccionar]

#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
Cita de: radix.2007..............................................................
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:
Código (cpp) [Seleccionar]
#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:
Código (cpp) [Seleccionar]
#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!.
#1027
Cita de: 0xDani en  9 Febrero 2013, 20:34 PM
Depende, si el operador << para string esta declarado en string si que usa alguna funcion de esa libreria.
Pero no es su caso. :rolleyes:
Saluditos!.
#1028
Cita de: flony en  9 Febrero 2013, 18:04 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. :rolleyes:
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
Pues a míme escribe el fichero sin problemas.
Código (cpp) [Seleccionar]

#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 C/C++ / Re: alinear texto
8 Febrero 2013, 20:31 PM
Puesto a hacerlo sin usar más de un for salió esto, que además funciona:
Código (cpp) [Seleccionar]
#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?:
Código (cpp) [Seleccionar]
#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:

Código (cpp) [Seleccionar]
Teclea un digito (1-9):
6
     1
    222
   33333
  4444444
555555555
66666666666


Con sólo esto:

Código (cpp) [Seleccionar]
#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!.