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

#161
Programación C/C++ / Re: suma de cada columna c++
2 Diciembre 2014, 21:56 PM
Un problema con tu programa se debe a que no inicializas todos los elementos del array donde almacenas los totales (el array "voto_cand"). Una forma de hacerlo es en su declaración:
Código (cpp) [Seleccionar]
int i, j, votos, voto_cand[9] = {0}, encuesta[7][9];

Un saludo
#162
Si no tienes un curso o libro de calidad sobre C++ deberías conseguir uno, si necesitas de recomendaciones basta con utilizar el motor de búsqueda de los foros.

Tu programa termina sin responder porque el bucle interno es infinito ya que en ningún momento modificas el valor de la variable "i":
Código (cpp) [Seleccionar]
for (i = 0; palabra[i]; j++) // <==
   // ...


Para imprimir los caracteres en mayúsculas ignorando los espacios basta con un solo bucle:
Código (cpp) [Seleccionar]
for (i = 0; palabra[i] != '\0'; ++i)
   if (palabra[i] != ' ')
      cout << char(toupper(palabra[i]));
cout << endl;


Un saludo
#163
Cita de: sabar en  1 Diciembre 2014, 18:16 PMEL PROBLEMA ES QUE ME SALE BASURA AL FINAL Y NO HE VISTO CUAL PUEDE SER EL PROBLEMA
Por favor NO publiques todo el texto de tu mensaje en mayúsculas, lo prohíben las reglas de los foros.

En cuanto al programa se deben cambiar los nombres de los encabezados y evitar el uso de la función gets, las razones de ello se indican en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Ademas:
* No es necesario el uso de dos contadores (las variables "i" y "j"), con uno solo basta.
* Para procesar todos los caracteres el limite debe ser "< strlen(frase)".
* Lo anterior no es necesario ya que las cadenas "a la C" se pueden procesar hasta encontrar el carácter '\0'.
* El programa no genera la salida esperada porque la asignación esta al revés:
Código (cpp) [Seleccionar]
frase[i] = num_frase[j]; // Deberia ser num_frase[j] = frase[i];

Por ultimo no es necesario un array de enteros, en su lugar se puede generar el entero correspondiente con:
Código (cpp) [Seleccionar]
cout << frase[i] << "=" << int(frase[i]) << endl;

Un saludo
#164
Cita de: sennedjem en  1 Diciembre 2014, 22:09 PMtengo que hacer una función que reciba un tipoDeDatos (definido arriba como un puntero a tipoNuevo) y un String y lo que tengo que hacer es agregar el String al map que tiene el tipoNuevo
Mas o menos asi:
Código (cpp) [Seleccionar]
void agregar(tipoDeDatos p, string clave, int valor)
{
   p->mapa[clave] = valor;
}


Un saludo
#165
Cita de: avilaM en  1 Diciembre 2014, 16:59 PMde todas fromas es la primera vez que uilizo este lenguaje y no tengo ni idea, ya me he leid un monton de ejemplos y he hecho diferentes ejercicios, pero esoy hecha un lio.
Va a ser difícil que termines el programa si como indicas apenas empiezas con C++ y ademas debes desarrollar una clase para el manejo de listas vinculadas.

Para recomendaciones sobre libros y cursos sobre C++ utiliza el motor de búsqueda, en el caso de listas vinculadas te recomiendo los tutoriales de la Stanford CS Education Library (en C pero puedes aplicarlos en tu caso con solo modificaciones menores).

Un saludo
#166
No quiero sonar grosero pero ese programa no solo no compila, tiene demasiados errores.

El mejor consejo que se me ocurre en este momento es empezar desde cero con el lenguaje C, una vez manejes lo básico ya puedes pensar en desarrollar el programa que mencionas. Para recomendaciones sobre cursos y libros de calidad puedes utilizar el motor de búsqueda de los foros.

Un saludo
#167
En tu programa estas combinando C con C++ lo cual no es una buena idea, también deberías evitar el uso de fflush(stdin) y getch(), el porque de ello en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|.

El problema que mencionas se debe a que en el bucle principal (en la función main) no descartas los caracteres inválidos para la conversión (numérica). Soluciones hay varias solo tienes que utilizar el motor de búsqueda de los foros para encontrar los temas relacionados (validar la entrada).

Un saludo
#168
Como ya te menciono avesudra el error es utilizar la función strcat en la linea:
strcat(rutatemp, RUTA);
Esto porque si no se inicializa una variable su valor inicial es no definido o basura. La forma mas fácil de solucionarlo es utilizando en su lugar la función strcpy:
strcpy(rutatemp, RUTA);

También hay que cambiar la definición de la funcion main, indicar su valor de retorno y evitar el uso de la función gets, mas información en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Un saludo
#169
Programación C/C++ / Re: Empezando en C++
26 Noviembre 2014, 17:02 PM
Cita de: Nazguls en 26 Noviembre 2014, 16:51 PM1. He leído que Windows limita mucho, que si voy a empezar sería bueno empezar programando C++ en Linux. ¿Hasta que punto es cierto esto?
Es falso. Cuando se aprende C y/o C++ se empieza por su forma estándar ya que esta garantizada sin importar el compilador y plataforma.

Cita de: Nazguls en 26 Noviembre 2014, 16:51 PM2. En el caso de que fuera mejor empezar en Linux, ¿Sería mejor incluso si no tengo ni idea de este S.O?
En el aprendizaje de cualquier materia mientras menos variables mejor. Tienes dos opciones, aprender:
A) C++ con un cierto manejo del SO (MS Windows)
B) C++ Y el SO (Linux)

Ambas son viables pero la primera es la mas fácil.

Un saludo
#170
Programación C/C++ / Re: El bendito stdin...
26 Noviembre 2014, 05:16 AM
Algunos comentarios:

* No es necesario inicializar la variable "newPtr" a NULL ya que en su primer uso almacenas el valor de retorno de realloc.
* No es necesaria la conversión explicita en la sentencia:
ptrString = (char *) newPtr;
* El valor de sizeof(char) siempre es igual a uno, no es necesario indicarlo.
* En la comparación dentro del bucle debes utilizar "i == p4kB - 1", esto para reservar el ultimo elemento del bloque para el '\0'.
* La única forma en que la variable "ptrString" puede almacenar NULL es si la primera reserva de memoria falla (ya que las siguientes con realloc las manejas dentro del bucle), por ende si colocas el bucle dentro de una sentencia condicional if te ahorras varias comprobaciones.
* No es necesario utilizar strlen para conocer la longitud de la cadena ya que ese valor ya lo tienes almacenado en la variable "i".

Con los cambios:
char *leerLinea(void)
{
   int c;
   size_t p4kB = 4096, i = 0;
   void *newPtr;
   char *ptrString;
   
   if ((ptrString = malloc(p4kB)) != NULL){
      while ((c = getchar()) != '\n' && c != EOF){
         if (i == p4kB - 1){
            p4kB += 4096;
           
            if ((newPtr = realloc(ptrString, p4kB)) != NULL)
               ptrString = newPtr;
            else {
               free(ptrString);
               return NULL;
            }
         }
         
         ptrString[i++] = c;
      }
     
      ptrString[i++] = '\0';
      ptrString = realloc(ptrString, i);
   }
   
   return ptrString;
}


Un saludo