Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   programa sumador (https://www.clubdelphi.com/foros/showthread.php?t=59344)

tsue 23-08-2008 02:03:06

programa sumador
 
hola, me encargaron una tarea y la verdad no se mucho de programacion y ando desesperado si alguien me puediera ayudar.
esto es lo que tengo que hacer
como hacer un programa que calcule la media aritmetica entre el 10 y el 50 con do while y con solamente while
nota:la media aritmetica es la suma de los numeros entre el 10 y el 50 ejem 10+11+12+13.... +50

Caral 23-08-2008 02:53:55

Hola
Bienvenido al club.
Normalmente lo que se hace en el club es tratar de ayudar, eso quiere decir que también normalmente no hacemos la tarea.
Lo que te aconsejo es que nos des algo, lo que sea, pero algo del código que tengas y de ahí en adelante podremos ayudarte, pero sin hacer nosotros la tarea, después de todo si nosotros te hacemos la tarea no creo que te ayudemos, mas bien te perjudicamos.
Código Delphi [-]
while tsue.Tarea do
ayudamos
Por cierto, estará bien así maestros?:confused:.:D:D:D
Saludos

cHackAll 23-08-2008 03:03:46

Código Delphi [-]
var escuela, tarea, aplazo: Cardinal;
begin
 aplazo := 0;
 escuela := 10; // ReadLn(escuela);
 tarea := 50; // ReadLn(tarea);
 repeat Inc(aplazo, escuela);
  Inc(escuela);  
 until escuela > tarea;
 WriteLn(aplazo);
 
//...

Código Delphi [-]
 while escuela <= tarea do
  begin
   Inc(aplazo, escuela);
   Inc(escuela);  
  end;

Edito; EPA, no me di cuenta que respondiste Caral, que cuentas? yo pase un ratico por acá a hacer mi homework si no "papá pega photo" ;)

Caral 23-08-2008 03:14:20

Hola
Me alegra verte igualmente, como siempre amigo.:)
Ah, ya hiciste la tarea:D:D:D
Saludos

Robert01 23-08-2008 04:45:32

Cita:

Empezado por tsue (Mensaje 308931)
nota:la media aritmetica es la suma de los numeros entre el 10 y el 50 ejem 10+11+12+13.... +50

¡Jamás había leido algo semejante!

Saludos

ContraVeneno 23-08-2008 16:13:58


según yo (y la wiki) la media aritmética es un promedio de un conjunto de datos y no la suma de los números entre uno y otro...


cHackAll 23-08-2008 16:35:19

Cita:

Empezado por ContraVeneno (Mensaje 308970)

según yo (y la wiki) la media aritmética es un promedio de un conjunto de datos y no la suma de los números entre uno y otro...


No me vayan a decir que hice mal la tarea :o

eduarcol 23-08-2008 16:58:54

Cita:

Empezado por cHackAll (Mensaje 308975)
No me vayan a decir que hice mal la tarea :o

es que la tarea te quedo bien, pero el problema es que el alumno no entendio la clase :rolleyes:

tsue 23-08-2008 21:09:28

Cita:

Empezado por cHackAll (Mensaje 308935)
Código Delphi [-]var escuela, tarea, aplazo: Cardinal;
begin aplazo := 0; escuela := 10; // ReadLn(escuela);
tarea := 50; // ReadLn(tarea);
repeat Inc(aplazo, escuela);
Inc(escuela);
until escuela > tarea;
WriteLn(aplazo);

//...


Código Delphi [-] while escuela <= tarea do begin Inc(aplazo, escuela); Inc(escuela); end;


Edito; EPA, no me di cuenta que respondiste Caral, que cuentas? yo pase un ratico por acá a hacer mi homework si no "papá pega photo" ;)


oye muchas gracias por la ayuda pero no puedo acer que me corra bien tengo esto como codigo

Código Delphi [-]
var ninicial, nfinal, aplazo: Cardinal;
procedure TForm1.Button1Click(Sender: TObject);
begin
 aplazo := 0;
 ninicial := 10; // ReadLn(escuela);
 nfinal := 50; // ReadLn(tarea);
 repeat Inc(aplazo, ninicial);
  Inc(ninicial);
 until ninicial > nfinal;
 Application.MessageBox(aplazo,'titulo') ;
//WriteLn(aplazo);


ha, porcierto me falto agregar que la media aritmetica es la suma de los numeros dividida entre la cantidad de numeros que hay (osea el promedio)
ha tmb para caral si voy ha acer lo ke me digiste con respecto a la ayuda lo ke pasa es k ando desesperado con esta tarea me puse a estudiar delphi para ver si asi podia comprender algo.

Delphius 23-08-2008 21:17:23

Hola tsue,
Bienvenido a ClubDelphi.

Como eres nuevo, te invito a que dediques unos minutos a leer la guia de estilo.

Con respecto a la situación que se ha dado debo decirte que aquí ninguno hará tu tarea. Lo que sería oportuno es que nos indicases que estuviste probando, como y que conseguiste hasta ahora.

Algo fundamental ¿Como ingresas los datos? Necesitamos conocer más de tus avances y como estás llevando a cabo tu tarea. De este modo si te podremos ayudar.

Saludos,

tsue 23-08-2008 21:35:14

hola, si ya se que nadie va a ser mi tarea, deecho asta me puse a buscar informacion y a estudiar delphi y cambie algunas palabras y agregue un message box nomas que todavia no entiendo algunas cosas como por ejemplo kiero ke me muestre en el message box que puse lo que es la parte de aplazo pero no estoy muy seguro de como. no es para que te ofendas pero siento que ya estoy poniendolo como debiera para poder recibir ayuda, pero si no, hasmelo saber en que estoy poniendo mal

Delphius 23-08-2008 21:47:21

Cita:

Empezado por tsue (Mensaje 309033)
hola, si ya se que nadie va a ser mi tarea, deecho asta me puse a buscar informacion y a estudiar delphi y cambie algunas palabras y agregue un message box nomas que todavia no entiendo algunas cosas como por ejemplo kiero ke me muestre en el message box que puse lo que es la parte de aplazo pero no estoy muy seguro de como. no es para que te ofendas pero siento que ya estoy poniendolo como debiera para poder recibir ayuda, pero si no, hasmelo saber en que estoy poniendo mal

tsue, no es por ser malo... pero veo que estás muy perdido.

El código de muestra del compañero cHackAll no realiza la media aritmética. Simplementa incrementa una variable con el valor de otra hasta que supere un determinado valor (o variable, como es en este caso).

Para mostrar el contenido hay muchas maneras.
La más básica es ShowMessage(), por ahora es la que te aconsejo. Pero resulta ser que el parámetro que espera ShowMessage() es de tipo string, por tanto hay que convertir el tipo empleado a string.
Si es integer se usa IntToStr() si es real FloatToStr().

Repito nuevamente lo que te he dicho antes: sin conocer tus avances no te sabremos ayudar. Es necesario que nos indiques como estás trabajando.

Saludos,

tsue 23-08-2008 22:06:42

hola, bueno gracias por la ayuda.
me he dado cuenta con lo que acabas de poner que no se casi nada

"Pero resulta ser que el parámetro que espera ShowMessage() es de tipo string, por tanto hay que convertir el tipo empleado a string.
Si es integer se usa IntToStr() si es real FloatToStr()."

bueno, si sabia que el programa que me ayudaban no hacia la media aritmetica pero no estoy seguro si realiza la suma de los numeros por eso queria que me mostrara en el mensaje el valor final para ver si era la suma y ya despues buscar algo con que dividirla etre el numero de datos que hay

bueno con respecto a conocer mis avances creo que te refieres a esto

Código Delphi [-]
var ninicial, nfinal, aplazo: Cardinal;
procedure TForm1.Button1Click(Sender: TObject);
begin
 aplazo := 0;
 ninicial := 10; // ReadLn(escuela);
 nfinal := 50; // ReadLn(tarea);
 repeat Inc(aplazo, ninicial);
  Inc(ninicial);
 until ninicial > nfinal;
 Application.MessageBox(aplazo,'media aritmetca10-50') ;

lo que intento acer es que aga la suma del 10 asta el 50 y luego que los divida entre el numero que son (si es esa la media aritmetica verdad)

cHackAll 23-08-2008 22:13:50

Cita:

Empezado por Delphius (Mensaje 309034)
...El código de muestra del compañero cHackAll no realiza la media aritmética...

Disculpe profesor, ahora como va la cosa? :D

Código Delphi [-]
function MediaUntil(a, b: Cardinal): Cardinal;
asm
 xchg eax, edx
 xchg eax, ecx
 xor  eax, eax
 cmp  ecx, edx
 jb   @Exit
 sub  ecx, edx
 push ecx
@Next:inc  edx
 add  eax, edx
 loop @Next
 xor  edx, edx
 pop  ecx
 div  ecx
@Exit:
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(IntToStr(MediaUntil(8, 20)));
end;

Delphius 23-08-2008 22:22:31

Sugiero que leas un poco la ayuda sobre Application.MessageBox(), lo estás usando mal. Por empezar recibe muchos parámetros y te va enrredar más.
Te he sugerido que para comenzar el ShowMessage. Es sencillo. Un ejemplo:

Código Delphi [-]
ShowMessage('el valor a mostrar es : ' + IntToStr(50)); 
ShowMessage('el valor a mostrar es : ' + IntToStr(valor)); // valor es una variable

Sugiero que nombres a la variable aplazo de un mejor modo... ¿porqué no total? Se entiende mejor.

Veamos, como te explico la cosa sin hacerte la tarea:

1. Pedir valor inicial, guardar en la variable inicial
2. Pedir valor final, guardar en la variable final
3. Hacer que total sea cero
4. Hacer que cantidad sea cero
5. Mientras inicial sea menor a final hacer:
5.1. incrementar el total con el inicial
5.2. incrementar cantidad en 1
5.3. incrementar inicial en 1
6. dividir total con cantidad y guardarlo en promedio
7. Mostrar promedio

¿Ahora se entiende?

Tu problema es que en ningún momento llevas la cuenta de iteraciones.
Ahora es tu turno traducir esto. Intentalo.

Saludos,

Delphius 23-08-2008 22:46:54

Tal vez resulte un tanto pesado el hecho y la manera en que me he dirjido. Mi intención es más mostrar un algoritmo de como proceder y no tanto el código.

El asunto aqui es una cuestión de lógica. El algoritmo que implementa realiza un repeat más le falta hacer dos cosas:
1. llevar un contador de pasadas
2. dividor el total acumulado por dicha cantidad

Por el punto 1 se resuelve facilmente con añadir una nueva variable.

Código Delphi [-]
var cantidad: integer;

Y acumular el valor en donde sea necesario:
Código Delphi [-]
cantidad := cantidad + 1; // O bien...
inc(cantidad);// O bien
inc(cantidad,1);

Al final del ciclo repeat o while (se puede hacer con ambos ciclos) simplemente hacer la división entera (si son enteros).

Código Delphi [-]
promedio := total div cantidad;

En este ejemplo yo hago la división entera entre la variable total y cantidad.
Espero que ahora quede más claro.

Saludos,

Caral 23-08-2008 22:51:03

Hola
Estas seguro amigo?.
No se, algo me falta, por eso te lo pregunto.
Saludos

tsue 23-08-2008 22:52:01

Cita:

Empezado por Delphius (Mensaje 309039)
Sugiero que leas un poco la ayuda sobre Application.MessageBox(), lo estás usando mal. Por empezar recibe muchos parámetros y te va enrredar más.
Te he sugerido que para comenzar el ShowMessage. Es sencillo. Un ejemplo:

Código Delphi [-]ShowMessage('el valor a mostrar es : ' + IntToStr(50));
ShowMessage('el valor a mostrar es : ' + IntToStr(valor)); // valor es una variable


Sugiero que nombres a la variable aplazo de un mejor modo... ¿porqué no total? Se entiende mejor.

Veamos, como te explico la cosa sin hacerte la tarea:

1. Pedir valor inicial, guardar en la variable inicial
2. Pedir valor final, guardar en la variable final
3. Hacer que total sea cero
4. Hacer que cantidad sea cero
5. Mientras inicial sea menor a final hacer:
5.1. incrementar el total con el inicial
5.2. incrementar cantidad en 1
5.3. incrementar inicial en 1
6. dividir total con cantidad y guardarlo en promedio
7. Mostrar promedio

¿Ahora se entiende?

Tu problema es que en ningún momento llevas la cuenta de iteraciones.
Ahora es tu turno traducir esto. Intentalo.

Saludos,

ok creo k ya te entendi con lo de ShowMessage para mostrar un numero hay k poner into string(numero) (Inttostr(50))

si estoy bien ya nomas me falta traducir lo de mas

Caral 23-08-2008 23:01:47

Hola
La verdad no se a donde va todo esto, lo que creo que se necesita es hacer un ciclo con while.
Alguien me explica donde esta la ciencia?.
Saludos
Pd: pregunta de Novato:D

cHackAll 23-08-2008 23:10:57

Cita:

Empezado por Caral (Mensaje 309045)
...Alguien me explica donde esta la ciencia?...

Claro, la ciencia está en entender que sucede con el teclado de tsue que de rato en rato no le funcionan algunas teclas :rolleyes:


La franja horaria es GMT +2. Ahora son las 14:18:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi