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

#941
Honestamente (y sin mala intención) no lo decía como una critica hacia ti.

Es un estilo relativamente usual, revisando mis mensajes el mas viejo es del 2011: Problemas con una funcion en c.

Un saludo
#942
El error principal en el programa es incrementar la variable "k" dentro del bucle cuando deberías incrementar la variable "i".

No se recomienda el uso de la biblioteca conio de Borland como tampoco "fflush(stdin)", las razones de ello se describen en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Un saludo
#943
Cita de: amchacon en  6 Marzo 2013, 23:06 PM
Debo ser el rey de las cosas complicadas, eso no se me había ocurrido xD.

En su lugar tendría que haber dicho que ordenases esos numeros... Así no te ahorrarias de almacenarlos
Siguiendo esa linea un ejercicio seria el calculo de la mediana: para encontrar el elemento al centro primero debe ordenar la lista.

----

Cita de: 85 en  7 Marzo 2013, 03:10 AMen varios lugares le dicen función  :o
http://www.it.uc3m.es/labas/course_notes/dynamic_memory_sizeof_es.html

será porque se usa como una función?
Considerando que para obtener el tamaño de un tipo los paréntesis son obligatorios (con las expresiones no) me parece un error un tanto extraño (en algunos tutoriales).

Caso similar con las sentencias de retorno, frecuentemente se publican programas en estos foros utilizando paréntesis en la forma "return(N);". No se necesitan pero por alguna (extraña) razón los ponen.

Un saludo
#944
Cita de: amchacon en  6 Marzo 2013, 23:06 PM
Debo ser el rey de las cosas complicadas, eso no se me había ocurrido xD.

En su lugar tendría que haber dicho que ordenases esos numeros... Así no te ahorrarias de almacenarlos
En esa linea un ejercicio mencionado ocasionalmente es el calculo de la mediana: para encontrar al elemento central primero se debe ordenar la lista.

Un saludo
#945
Te pido por favor que leas las recomendaciones que te dimos en tu otro tema, eso para solucionar algunos problemas que también se presentan en este programa.

El error principal se encuentra en la sentencia switch:
Código (cpp) [Seleccionar]
switch (arry[i]){
case 1:
   f[0]+1;
   break;
case 2:
   f[1]+1;
   break;
case 3:
   f[2]+1;
   break;

// ...


Primero, para incrementar el contador correspondiente debes utilizar:
Código (cpp) [Seleccionar]
switch (arry[i]){
case 1:
   f[0]++; // Mismo efecto que f[0] = f[0] + 1;
   break;
case 2:
   f[1]++;
   break;
case 3:
   f[2]++;
   break;

// ...


Segundo, si revisas con cuidado te darás cuenta que esa sentencia (el switch) no es necesaria, puedes remplazarla con una asignación:
Código (cpp) [Seleccionar]
f[arry[i] - 1]++;

Un saludo
#946
Programación C/C++ / Re: Ayuda con arreglos.
6 Marzo 2013, 02:46 AM
Otro detalle que se debe corregir en el programa son los indices utilizados para acceder a los arrays. Al declararse en esta forma:
Código (cpp) [Seleccionar]
int arryc[99],arryS[99]={0},spar=0,simp=0;
Se declaran dos arrays con 99 elementos cada uno y cuyos indices validos son 0 .. 98.

Si la intención es declarar dos arrays de 100 elementos cada uno se debe cambiar a:
Código (cpp) [Seleccionar]
int arryc[100],arryS[100]={0},spar=0,simp=0;

// ...

for (int i = 0; i < 100; i++){
  arryc[i] = i + 1;

// ...


Un saludo
#947
Cita de: leosansan en  5 Marzo 2013, 20:37 PM
Creo que te bastaría, habiendo inicializado previamente i a cero, con:
Código (cpp) [Seleccionar]
while( ! feof(fichero) )
    {
           fgets(estructura[i].nombre, 20, fichero);
           i++;
    }
No se recomienda esa forma ya que se leería una linea de mas debido al uso de la función feof.

La segunda donde se utiliza el valor de retorno de fgets:
Cita de: leosansan en  5 Marzo 2013, 20:37 PM
O incluso creo que así también furula "más mejor!:
Código (cpp) [Seleccionar]
while( fgets(estructura[i].nombre, 20, fichero)!= NULL;
           i++;
Es la correcta. Para seguirte pegando (por supuesto en buen plan): tienes un punto y coma cuando debería ser el paréntesis de cierre.

Un saludo
#948
Aparte de lo ya comentado por avesudra en todas las funciones (salvo "raiz") primero realizas la operación y solo después pides los datos cuando debe ser al revés. También tienes sentencias inútiles como esta (eliminalas):
Código (cpp) [Seleccionar]
j = j;

Y en la función "main" pides los operandos y a continuación los vuelves a pedir en las funciones. Tienes que pedirlos una sola vez.

Un saludo
#949
Si puedes manejar funciones puedes utilizar una para encapsular en ella la petición de un numero entero, un ejemplo sencillo:
#include <stdio.h>
#include <stdlib.h>

int fn_leer(char const *msj);

int main(void)
{
   int dia;
   int mes;
   int año;
   
   dia = fn_leer("Introduce el dia: ");
   mes = fn_leer("Introduce el mes: ");
   año = fn_leer("Introduce el año: ");
   
   printf("%d %d %d\n", dia, mes, año);
   
   return EXIT_SUCCESS;
}

int fn_leer(char const *msj)
{
   int rv;
   int num;
   int ch;
   
   printf("%s", msj);
   fflush(stdout);
   rv = scanf("%d", &num);
   while ((ch = getchar()) != EOF && ch != '\n')
      ;
   
   return rv == 1 ? num : -1;
}


Para conocer si el día, mes y año están en el rango valido debes seguir las indicaciones que te han dado y también utilizar el motor de búsqueda de los foros (hay varios temas sobre ello).

Un saludo
#950
Programación C/C++ / Re: maximo y minimo
4 Marzo 2013, 03:26 AM
Cita de: naderST en  3 Marzo 2013, 18:22 PMCreo que aquí tendríamos un problema ya que mayor tomaría el valor de 0, pero podría pasar que todas las temperaturas sean negativas y no te daría la mayor.
Tienes razón. Pensaba en utilizar esas macros de forma similar a INT_MIN e INT_MAX (pero no, en este caso no sirve, Ouch!).

Un saludo