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

#311
En la definición de la función "Save" tienes un punto y coma de mas justo después del paréntesis derecho:
Código (cpp) [Seleccionar]

int Save (int key_stroke, char *file); // Hay que eliminar el ';'
{
   return 0;
}


Solo tienes que eliminar ese carácter y si apenas empiezas con el lenguaje C++ te recomiendo que te enfoques primero en el lenguaje y solo después en extensiones.

Un saludo
#312
¿Ese es todo el código fuente?

Lo pregunto porque no debería generarse esa salida ya que toda variable "global" se inicializa a 0, 0.0 o NULL dependiendo del tipo (por supuesto eso sucede solo si no indicas explícitamente un valor inicial).

Y por favor la próxima vez que tengas una duda en relación al lenguaje C utiliza el foro apropiado: Programación C/C++.

Un saludo
#313
No lo es. La función malloc reserva un bloque con (al menos) el tamaño indicado y retorna su dirección. Para liberar ese bloque se debe llamar a la función free con la mentada dirección como argumento.

Siguiendo tu ejemplo la forma correcta es:
free(variable);

Un saludo
#314
Cita de: Caster en 24 Mayo 2014, 16:31 PMesa condición debe de ser la única que cumplan los números primos y es lo que no se hacer, como aislar los numeros que solo cumplen esa condicion y ninguna mas.
Solo tienes que utilizar un bucle que se repita mientras el residuo de la división "N / contador" sea diferente de cero con el contador iniciando con el valor dos y terminando de forma natural con el valor N si el numero es primo (si tiene un valor menor significa que no lo es).

Un ejemplo:
int i;
int j;

for (i = 2; i < 100; i++){
   for (j = 2; i % j != 0; j++)
      ;
   
   if (j == i)
      printf("%d\n", j);
}


Esa es la forma mas fácil pero menos eficiente, ejemplos sobre como reducir el numero iteraciones los puedes consultar mediante el motor de búsqueda de los foros.

Un saludo
#315
Cita de: jonniemaxxx en 24 Mayo 2014, 03:52 AMno entiendo porque me bota un warning en esta funcion
Código (cpp) [Seleccionar]
char* Item_Name(int Item)
{
    char* ItemName[10];
   
    ItemName[0] = "Producto 1";
    ItemName[1] = "Producto 2";
   
    // ...
   
    return ItemName[Item-1];
};
Se presenta el mensaje de advertencia porque en C++ una cadena literal como "Producto 1" es de tipo "const char [N]" y este, en las asignaciones y sentencia de retorno, genera un valor de tipo "const char *". El problema es que los tipos no coinciden ya que tanto la función como los elementos del array los declaras de tipo "char *" (sin el calificador const).

Una solución ya la indico x64Core, otra opción es simplemente utilizar el tipo correcto:
Código (cpp) [Seleccionar]
const char *Item_Name(int Item)
{
const char *ItemName[10];

ItemName[0] = "Producto 1";
ItemName[1] = "Producto 2";

// ...

return ItemName[Item - 1];
}


Un saludo
#316
Las funciones getchar, fgetc y getc retornan un valor de tipo int, este se debe almacenar en una variable del mismo tipo para evitar problemas, también se pueden evitar las sentencias duplicadas para la lectura del archivo.

Con los cambios la función termina así:
int mayorLinea(FILE *in)
{
   int ch;
   int i;
   int max;
   
   i = max = 0;
   while ((ch = fgetc(in)) != EOF){
      i++;
     
      if (ch == '\n'){
         if (i > max)
            max = i;
         i = 0;
      }
   }
   
   return max;
}


Un saludo
#317
Programación C/C++ / Re: libro c++ 11?
19 Mayo 2014, 02:06 AM
En español no.

Si te sirve algunos libros en ingles y de calidad actualizados al estándar C++11:
C++ Primer (5th Edition)
The C++ Programming Language (hardcover) (4th Edition)
The C++ Standard Library: A Tutorial and Reference (2nd Edition)

Un saludo
#318
Programación C/C++ / Re: A que equivale...
18 Mayo 2014, 17:26 PM
Cita de: David8 en 18 Mayo 2014, 12:16 PM
Una última cosa, con relación al tema original del tema. Si en vez de tener el acceso a los miembros de la estructura con notación puntero uso por ejemplo vector[i].miembro;
¿cómo lo puedo representar a notación de puntero?

Es que he probado con*(vector + i).miembro; y me da error.
Eso sucede porque el operador "." tiene mayor prioridad que "*" y esa expresión se termina evaluando así:
*((vector + i).miembro);

Para que se evalué en la forma correcta debes utilizar paréntesis:
(*(vector + i)).miembro;
O utilizar el operador "->":
(vector + i)->miembro;

Un saludo
#319
Cita de: miguelsb en 18 Mayo 2014, 03:43 AMDeclaré en c++ una matríz de orden [2][N] de la siguiente forma:
Código (cpp) [Seleccionar]
Matriz=new float*[2];
for(int x=0;x<2;x++)
Matriz[x]=new float[centinela2];


Pero sólo me permite ingresar 4 valores a la misma, después de eso el programa se detiene y no encuentro la razón.
Con solo ese fragmento de código no es posible ayudarte, tienes que publicar el código fuente completo.

Un saludo
#320
Cita de: ++c en 14 Mayo 2014, 22:03 PMestoy intentando de intercambiar la sentencia switch por un if-else anidado y mi problema viene acarreado a la hora de que cada vez se ejecuta una sentencia se ejecuta igualmente el último else
Como ya te indico MeCraniDOS el problema que tienes es un error logico: al introducir la calificacion seguida de un avance de linea este lo procesas y por supuesto se considerara una entrada no valida. Soluciones hay varias: descartar el resto de la linea mediante un bucle, leer el caracter con scanf utilizando el especificador " %c", etc..

Cita de: MeCraniDOS en 14 Mayo 2014, 23:07 PMint calificacion;
Lo primero que veo es que declaras calificación como un entero, y luego lo comparas como un carácter
No hay problema con ello ya que el retorno de getchar, la macro EOF y los caracteres literales como 'a', 'b', etc. son todos de tipo int.

Un saludo