Autor
|
Tema: me explican que hace cada ciclo (Leído 2,692 veces)
|
raullopez
Desconectado
Mensajes: 3
|
#include <conio.h> #include <stdio.h> #include <stdlib.h> void estadisticaArray(double *array, int t, double *mayor, double *menor, double *media); int main(){ double A[]={1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8}; double mx, mn, md; estadisticaArray(A,8,&mx,&mn,&md); printf("Mayor %lf, Menor %lf, Media %lf", mx, mn, md); getch(); } void estadisticaArray(double *array, int t, double *mayor, double *menor, double *media){ int i; double suma=0; /* Almacena la suma de los contenidos del array */
*mayor=*array;*menor=*array; for(i=0;i<t;i++){ if(*mayor<array) *mayor=array; if(*menor>array) *menor=array; suma+=array; } *media=suma/t; }
|
|
|
En línea
|
|
|
|
engel lex
|
el tipo de preguntas que haces y hacer múltiples respuestas a tu mismo tema seguido va a llevar a que no te respondan, si necesitas añadir algo usa el botón de modificar, no respondas 2 veces seguidas un post, y cuando publiques código usa las etiquetas GeSHi (arriba de los emoticones a la derecha)
este es un foro para practicar y aprender, recomiendo que leas lo básico de c++ y analices tu mismo, es muy poco probable que respondan un "me explican todo el programa" en relación a "qué hace específicamente esta linea?" con la segunda no solo responderían brevemente (si hay gente viendo), sino que tendrías varias opiniones
por otro lado la mayor parte de los compiladores tiene debugger, te permite correr el programa paso a paso y ver que hace en todo momento, puedes buscar en google como usar el debugger de el IDE que estés usando
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Yoel Alejandro
|
Bueno, en líneas generales te voy a decir que la función estadisticaArray toma como primer ()argumento un array de números reales, como segundo argumento la cantidad de elementos del vector, y los argumentos tercero, cuarto y quinto (pasados por "referencia") son para obtener el mayor, menor y promedio de los elementos del vector, respectivamente. Para comprender mejor el funcionamiento debes estudiar el tema de punteros o apuntadores en C, así como paso a funciones de argumentos por referencia. Y aprovecho para declarar que estoy en desacuerdo con la línea del programa: suma += array
puesto que no está sumando los elementos del arreglo, como cabría esperar. Debería ser: suma += array[ i ]
¿no? También, tiene otras cosas extrañas, por ejemplo if(*mayor<array) *mayor=array;
para empezar no debería ser '<', sino '>', y tampoco se accede a un elemento específico dentro del array. Pienso que debería ser: if(*mayor > array) *mayor = array[ i ];
o a menos que incrementes el valor de array en cada ejecución del ciclo, cosa que tampoco veo que se haga. Cuéntanos de dónde sacaste este programa, porque tiene como varios errores ...
|
|
|
En línea
|
Saludos, Yoel. P.D..- Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
Y aprovecho para declarar que estoy en desacuerdo con la línea del programa:
suma += array
puesto que no está sumando los elementos del arreglo, como cabría esperar. Debería ser:
suma += array[ i ]
¿no?
Exacto, array es un puntero... sin el asterisco el código suma posiciones de memoria, no valores. También, tiene otras cosas extrañas, por ejemplo
if(*mayor<array) *mayor=array;
para empezar no debería ser '<', sino '>' ... ¿¿?? Si el programa pretende almacenar en "mayor" el número más alto dentro de un array... debería actualizar "mayor" cada vez que el número correspondiente en "array" es más grande, no? En consecuencia el operador está bien... lo que sucede es como has coemntado, que se siguen sumando posiciones de memoria. o a menos que incrementes el valor de array en cada ejecución del ciclo, cosa que tampoco veo que se haga O usa el operador de indización o usa asteriscos, si usa el puntero como lo está haciendo únicamente obtendrá posiciones de memoria.
|
|
|
En línea
|
|
|
|
Yoel Alejandro
|
En efecto eferion, disculpen todos mi lapsus, la relación de orden está bien. Pero lo malo sigue siendo que no indexa el array. Para mí que la idea original del programa era hacer *(array + i)
o también hubiera servido incrementar el valor del puntero array for(i=0; i<t; i++, array++){ if(*mayor < *array) *mayor = *array; if(*menor > *array) *menor = *array; suma+= *array; }
Yo particularmente entre ambas, prefiero la forma que mencioné primero pues así damos uso a la variable i para algo más que como contador.
|
|
|
En línea
|
Saludos, Yoel. P.D..- Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Me explican
Software
|
Yami_Kaiba
|
1
|
3,137
|
6 Octubre 2005, 23:44 pm
por Mordor
|
|
|
Como dar un mensaje falso cada vez que se hace click con el mause
Programación Visual Basic
|
Otaku=)
|
5
|
2,749
|
28 Septiembre 2010, 03:10 am
por Otaku=)
|
|
|
duda auditoria de lo que hace cada usuario
PHP
|
General Dmitry Vergadoski
|
1
|
1,806
|
17 Diciembre 2013, 04:15 am
por engel lex
|
|
|
Cada vez que recargas tu timeline, Twitter hace dinero
Noticias
|
wolfbcn
|
0
|
1,361
|
31 Enero 2014, 14:31 pm
por wolfbcn
|
|
|
La industria audiovisual hace que Google censure cada vez más resultados de ...
Noticias
|
wolfbcn
|
0
|
1,082
|
6 Mayo 2014, 13:13 pm
por wolfbcn
|
|