Código C:
Ver original
| |||
calcular la media de n números Hola, estoy haciendo un programa para calcular la media de 5 números usando el bucle for, pero cuando lo compilo en vez de introducir 5 números me pide otro más y además el resultado que me sale es incorrecto, a pesar de introducir un números más. ¿Que diferencia hay entre inicializar la i a 0 o a 1 en este caso concreto?
Código C:
Ver original |
| |||
Respuesta: calcular la media de n números Pues como sabras el ciclo for realiza n interacciones dependiendo de la condicion que se imponga en el. luego debe haber una variable controladora del ciclo como vemso a continuacino
Código:
la diferencia en inicializar la i en 0 o en 1 se presenta en el la expresion condicional ya que si el signo de comparacion es < o <= tendras diferentes resultados.for(i = 0; i < 5; i++){} en el siguiente ejemplo veremos esa diferencia.
Código:
la salida del codigo anterior sera: 0 1 2 3 4int i = 0; int b = 0; for(i = 0; i < 5; i++){ printf("%d ", b); b++; } ahora si cambiamos el condicional
Código:
la salida del codigo anterior sera: 0 1 2 3 4 5int i = 0; int b = 0; for(i = 0; i <= 5; i++){ printf("%d ", b); b++; } entonces la inicializacion de i dependera de la necesidad que tengas al momento de programar. pues con respecto a tu codigo
Código:
no veo ningun tipo de problema aca.. podria ser el compilador..#include <stdio.h> #include <stdlib.h> * int main(){ * * * * * int i = 0; * * * * * int num = 0; * * * * * int n = 0; * * * * * int suma = 0; * * * * * double media = 0.0; * * * * * * printf ("¿Cuantos numeros vas a sumar? ",n); * * * * * scanf ("%d", &n); * * * * * * * * * * * for(i=1; i<=n; i++){ * * * * * * *scanf("%d\n", &num); * * * * * * *suma = suma + num; * * * * * } * * * * * media = suma / n; //El casting me pareceria innecesario. pero mi experiencia con c es muy poca * * * * * printf("La media es %lf\n", media); return 0; } espero haber sido claro |
| |||
Respuesta: calcular la media de n números for(i=1; i<=n; i++){ scanf("%d\n", &num); suma = suma + num; } puedes mejorar tu codigo de la siguiente forma for(i=0; ++i<=n;) { scanf("%d\n", &num); suma = suma + num; } el tema de por es mas eficiente la forma que te propongo tiene relacion directa de como es que traduce tu codigo el compilador. Pero lo que si puedo decir es que utilices la forma ++var ante la forma var++, es mas rapida la primera. algo importante que tienes que tomar en cuenta es que los arreglos sus indices van de 0....n-1, donde n el tamaño del arreglo. asi si tu tienes un arreglo de 5 elementos sus posiciones serían 0...4, por lo que te recomiendo salvo que sea muy necesario hacerlo de esta forma for(i = -1; ++i<n;) { .. .. } o mas tradicional for(i = 0; i<n; ++i) { ... ... } Nota la forma que te propongo se asemeja mucho a forma de funcionar de un while |
| |||
Respuesta: calcular la media de n números Mi idea es calcular la media de 5 números sin utilizar vectores, pero no entiendo por qué de la forma que lo he hecho no me sale. ¿Cómo la harías vosotros?, estoy hecha un lío. Las explicaciones que me habéis dado me han confundido todavía más. Gracias. |
| |||
Respuesta: calcular la media de n números Me deja introducir los 5 números, pero el resultado no es el correcto ¿por qué?
Código C:
Ver original Última edición por minette1988; 02/07/2010 a las 12:07 |
| |||
Respuesta: calcular la media de n números Me deja introducir los 5 números, pero el resultado no es el correcto ¿por qué?
Código C:
Ver original Última edición por minette1988; 02/07/2010 a las 12:11 Razón: eliminar mensaje |
| |||
Respuesta: calcular la media de n números en primera tu for debe debería ser asi for(i = 1; i<=n; ++i) o for(i=0; i<n; ++i) en segunda no puedes poner una variable sin tener un indicador que vas utilizar una en un pritnf, ademas tendrias k incializar n printf("¿Cuantos números quieres introducir? ",n); lo correcto es printf("¿Cuantos números quieres introducir? "); o si lo que querias eraun salto de linea printf("¿Cuantos números quieres introducir?\n "); en un scanf no puedes poner caracteres scanf("%d\n", &var); es incorrecto deberia ser asi scanf("%d,&var); printf("\n"); has las modificaciones y nos cuentas como te fue |
| |||
Respuesta: calcular la media de n números ¿Por qué en el for pones ++i en lugar de i++?, en el scanf que hay dentro del bucle no pongo caracteres sino números y no entiendo por qué está mal. He inicializado la n a 0 y he cambiado la i++ por ++i, pero por ejemplo si quiero introducir 2 números el compilador me deja introducir uno más. ¿Por qué pasa eso?. El resultado sigue siendo incorrecto.
Código C:
Ver original Última edición por minette1988; 02/07/2010 a las 13:35 |
| |||
Respuesta: calcular la media de n números por k utilizo ++i en lugar de i++, este caso mera optimizacion. es mas rapido ++i q i++. otra vez printf("¿Cuantos números quieres introducir? ",n);//Esta n esta mal aqui scanf("%d\n", &n);//este salto de línea esta mal aquí scanf("%d\n", &num);//este salto de línea esta mal aquí |
| |||
Respuesta: calcular la media de n números Que yo sepa, i++ no es lo mismo que ++i. Depende de lo que hagas, puede dar un resultado distinto. Esto lo conozco por PHP, y me imagino que no será diferente. En el caso de PHP, te doy el ejemplo: <?php $test=1; echo "Preincremento: " . (++$test); //Aquí, primero se incrementa y cuando sale el resultado, ya esta incrementado echo "Valor final " . $test $test = 1; echo "Postincremento " . ($test++); //Aquí cuando se muestra el resultado, todavía no se ha incrementado echo "Valor final " . $test; Saludos! |
| |||
Respuesta: calcular la media de n números El ++ a la izquierda incrementa antes de asignar, y el ++ a la derecha asigna y luego incremente. Lo que no entiendo porque dicen que genera mejor codigo uno que el otro. |
| |||
Respuesta: calcular la media de n números Cita: Ahí estamos ;)Es esto de lo que me quejo (sin ofender :D) Todavia no lo entiendo. Tendré que probarlo |
| |||
Respuesta: calcular la media de n números perdon, por andar escribiendo a la carrera no me fije... esta es la verdadera forma optimizada, la razon es sencilla, genera menos codigo en ensablador, una instruccion menos, podras pensar k es una instruccion menos una mas... pero cuando procesas grandes volumenes de datos, o lo estas haciendo para algun dispositivo movil. cualquier ahorro de recursos es bueno. for(int cont = -1; ++cont<n;) { ... } aun que si no te importa el orden en que recorras el ciclo esta es un poco mejor for(int cont = 5; --cont>=0;) { printf("Numero%d", cont); } |
Etiquetas: |