elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  me explican que hace cada ciclo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: me explican que hace cada ciclo  (Leído 2,477 veces)
raullopez

Desconectado Desconectado

Mensajes: 3


Ver Perfil
me explican que hace cada ciclo
« en: 28 Mayo 2014, 06:10 am »

#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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: me explican que hace cada ciclo
« Respuesta #1 en: 28 Mayo 2014, 06:56 am »

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

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: me explican que hace cada ciclo
« Respuesta #2 en: 30 Mayo 2014, 03:14 am »

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 ...  :rolleyes:
En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: me explican que hace cada ciclo
« Respuesta #3 en: 30 Mayo 2014, 08:26 am »

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

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: me explican que hace cada ciclo
« Respuesta #4 en: 1 Junio 2014, 01:55 am »

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
Código
  1. *(array + i)
o también hubiera servido incrementar el valor del puntero array
Código
  1. for(i=0; i<t; i++, array++){
  2.    if(*mayor < *array) *mayor = *array;
  3.    if(*menor > *array) *menor = *array;
  4.    suma+= *array;
  5. }

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.)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Me explican
Software
Yami_Kaiba 1 2,901 Último mensaje 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,540 Último mensaje 28 Septiembre 2010, 03:10 am
por Otaku=)
duda auditoria de lo que hace cada usuario
PHP
General Dmitry Vergadoski 1 1,670 Último mensaje 17 Diciembre 2013, 04:15 am
por engel lex
Cada vez que recargas tu timeline, Twitter hace dinero
Noticias
wolfbcn 0 1,219 Último mensaje 31 Enero 2014, 14:31 pm
por wolfbcn
La industria audiovisual hace que Google censure cada vez más resultados de ...
Noticias
wolfbcn 0 959 Último mensaje 6 Mayo 2014, 13:13 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines