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 - amchacon

#401
Programación C/C++ / Re: problema asm
30 Diciembre 2013, 14:22 PM
Cita de: flony en 30 Diciembre 2013, 11:22 AMfíjate el tutorial esta bueno para trabajar en 64 bit que es algo que buscaba, todo bien con 32 pero si mi pc es de 64 porque trabajar con 32?
Pues que a lo mejor estás compilando el cpp en 32 bits.

Cita de: leosansan en 30 Diciembre 2013, 06:13 AMPerdona que te moleste, pero ¿me puedes indicar que programa usas para escribir en asm?. O lo haces directamente en un editor o en tu IDE de C++?:
Lo que es "escribir" se puede hacer en el notepad ++.

¿Ensamblar? Pues depende, lo mejor es mezclar C y ASM. La mayoría de los compiladores permiten asm embebido (es decir, mezclar C y asm en el mismo código).
#402
A mí tampoco me va leo. ¿No tendrás activado el fpermissive?

El error se debe a que has declarado una matriz de 27 elementos por columna, tu le has puesto 27 elementos +caracter nulo.
#403
Cita de: ivancea96 en 28 Diciembre 2013, 22:54 PM
Esque hay una clase ya creada para numeros grandes???
La he puesto en mi mensaje :silbar:
#404
Cita de: ivancea96 en 28 Diciembre 2013, 21:57 PM
Mi solución es: Hazte una clase propia, para guardar los números grandes. No se me ocurre otra forma.
Como te gusta reinventar la rueda ;D
#405
¿Intentas guardar un número con 19 digitos? Eso no te cabe en ninguna variable.

Puedes guardarlo en un cadena de texto o usar ya clases especializadas:
https://mattmccutchen.net/bigint/

No esque esa clase "haga magia", estas clases guardan los números en una cadena de texto (o un array booleano) y los "reinterpetra" sobre la marcha para operar.
#406
Pasar los dos numeros a decimal, restarlos y pasar el resultado a binario.
#407
Cita de: leosansan en 28 Diciembre 2013, 10:55 AMEl problema no es imprimir 10^18, que si lo acepta, sino que a partir de 10^9 malloc no lo acepta
Malloc recibe un argumento de tipo size_t, el valor máximo que puede alcanzar está definido con la macro SIZE_MAX (definida en stdint.h). Normalmente suele tener el valor de un unsigned long long (2^64-1).

El problema no está en malloc. El problema son estos dos:

- Estás pidiendo memoria de forma contigua es muy posible que tengas 1 gb libre de memoria ram, el problema esque la memoria libre estará "dispersa". Es muy díficil que te encuentres 1 gb de espacio libre contiguo. Se podría suplir esto usando listas o varios vectores.
- En una aplicación de 32 bits, la máxima memoria permitida es de 2GB (si la compilas en 64 bits llegarías a los 16 tb)

Cita de: leosansan en 28 Diciembre 2013, 14:55 PM..
Y como verás he respetado el uso que haces de las llaves ..... que se me antoja excesivo.  ;) ;) ;)[/size]
Pues efectivamente, era por saltase iteraciones... Y porque el if que he puesto sobraba  :silbar:

Y no soy tan nazi con las llaves xD. Ahí son pocas sentencias y se ve bastante claro. Yo lo hubiera identado de otra forma:
Código (cpp) [Seleccionar]
#include <stdio.h>
#define COMPUESTO 0

const int MAX = 1000000;

void tacharMultiplos(char Tabla[],int i)
{
   int j;

   for (j = i; (i*j) <= MAX; j+=2)
       Tabla[j*i] = COMPUESTO;
}

void mostrarTabla(char Tabla[])
{
   int i = 3,cont=1;

   for (i = 3; i <= MAX; i+=2)
       if (Tabla[i] != COMPUESTO) cont++;

   printf("\ncont= %d\n",cont);
}

int main()
{
   // Generar Criba de erastotenes

   char Tabla[MAX+1]; // tabla booleana
   int i = 0;

   // valor inicial

   for (i = 3; i<= MAX; i++)   Tabla[i] = i;
   for (i = 3; i*i<=MAX; i+=2)   tacharMultiplos(Tabla,i);

   mostrarTabla(Tabla);
   return 0;
}
#408
Cita de: dato000 en 28 Diciembre 2013, 00:15 AM
:-( :-( no me funciono, el cin.ignore() solo parece que se usa para un doble salto de linea.  :silbar: :silbar:
No no, el cin.ignore después de un cin (que preceda a un getline):

Código (cpp) [Seleccionar]
#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>

using namespace std;

struct Nadador
{
   char nombre[30];
   int edad;
   char prueba[20];
   double tiempo;
};

typedef struct Nadador datosNadador;

int main()
{

   datosNadador nuevosDatos;
   datosNadador *p_nuevosDatos;

   p_nuevosDatos = &nuevosDatos;

   cout << "************** Problema 11.3 **************" << endl << endl;

   cout << "Digite el nombre del nadador:  "; cin.getline(p_nuevosDatos->nombre, 30, '\n');
   cout << "Nombre del nadador:  " << p_nuevosDatos->nombre << endl << endl;

   cout << "Digite la edad del nadador:  "; cin >> p_nuevosDatos->edad;

   cin.ignore();

   cout << "Edad del nadador:  " << p_nuevosDatos->edad << endl << endl;

   cout << "Digite la prueba que hizo el nadador:  "; cin.getline(p_nuevosDatos->prueba, 20, '\n');
   cout << "Nombre de la prueba:  " << p_nuevosDatos->prueba << endl << endl;;

   cout << "Digite el tiempo de la prueba:  ";cin >> p_nuevosDatos->tiempo;
   cout << "Tiempo realizado en la prueba:  " << p_nuevosDatos->tiempo << endl << endl;;
   cin.ignore();

   return 0;
}
#409
Después del cin, tienes que poner un cin.ignore() si después vas a usar un getline().

La razón es porque el cin se deja el salto de linea cin coger, asi que te lo tienes que saltar con el .ignore().
#410
Cita de: ivancea96 en 27 Diciembre 2013, 23:21 PM
Ei, no me ignoreis! Quiero ver como os revienta la RAM usando eso para 10^12 xD
Te he contestado, 10^12 se sale del rango de una variable int xD.

Y sería una tabla de 900 mb, yo desde luego ahí dejaría de crearme la tabla de erastotenes y haría la función esPrimo().