Delphi - suma de enteros impares

 
Vista:

suma de enteros impares

Publicado por lionel hutz (4 intervenciones) el 03/11/2008 00:05:37
hola a todos, quisiera que me ayuden en este problema, soy principiante en lo que a programacion en delphi se refiere y tengo que hacer un programa.
Bueno, se debe ingresar un numero (p. emplo 2) y que se calcule su cubo y luego encuentre su representacion como la suma de numeros impares consecutivos
p. em.: 2^3=8=3+5
es tipo de numeros se llaman cubos perfectos (si no me equivoco)
se los agradecerian mucho si me pueden ayudar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:suma de enteros impares

Publicado por E.T. (1244 intervenciones) el 03/11/2008 18:29:22
No lo he probado bien, pero aqui está, necesitas un edit y un botón para hacerlo funcionar

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, math;

type
resultado = record
cadena:string;
flag:boolean;
end;
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
function busca(Inicio, Total:integer; sCadena:string):resultado;
private
Salida:integer;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.busca(Inicio, Total: integer; sCadena:string): resultado;
var aux:string;
begin
salida:=salida+inicio;
aux:=sCadena;
if salida = total then begin
Result.flag:=true;
Result.cadena:=aux;
end else if Salida < total then begin
result:=busca(inicio+2,total,aux+'+'+inttostr(inicio+2));
end else begin
Result.flag:=false;
Result.cadena:='';
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Valor,i:integer;
cubo:extended;
cadena:resultado;
begin
Valor:=StrToInt(Edit1.Text);
cubo:=Power(Valor,3);
valor:=trunc(cubo);
salida:=0;
i:=1;
cadena.cadena:='';
cadena.flag:=false;
while (i<valor) do begin
try
salida:=0;
cadena.cadena:='';
cadena.flag:=false;
cadena:=busca(i,Valor,inttostr(i));
if cadena.flag then begin
i:=valor+1;
ShowMessage(Edit1.Text+' ^ 3 = '+inttostr(Valor)+#13+cadena.cadena+' = '+inttostr(valor));
end else
i:=i+2;
except
ShowMessage('Ha ocurrido un error, fallo en '+inttostr(i));
end;
end;
end;

end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:suma de enteros impares

Publicado por lionel hutz (4 intervenciones) el 03/11/2008 22:51:52
Muchas gracias por tu tan rapida respuesta, ahora mismo lo probare
gracias otra vez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:suma de enteros impares

Publicado por lionel hutz (4 intervenciones) el 04/11/2008 15:34:19
como estas E.T.
estuve trtando de probar el programa que muy gentilmente hiciste para mi, y tuve un problema.
lo que pasa es que a la hora de compilar el codigo exsiste un error en la parte de
public
{ Public declarations }
y el error que arroja es:
[Error]Unit1.pas(46):Illegal character in input file: “” ($22)
bueno pues no se si me puedes ayudar
el codigo que hice es:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, math;

type
resultado=record
cadena:string;
flag:boolean;
end;
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
function busca(inicio, total:integer; scadena:string):resultado;
private
salida:integer;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function tform1.busca(inicio, total: integer; scadena:string):resultado;
var
aux:string;
begin
salida:=salida+inicio;
aux:=scadena;
if salida = total then begin
result.flag:=true;
result.cadena:=aux;
end else if salida < total then begin
result:=busca(inicio+2,total,aux+'+'+inttostr(inicio+2));
end else begin
result.flag:=false;
result.cadena:=";
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
valor,i:integer;
cubo:extended;
cadena:resultado;
begin
Valor:=StrToInt(Edit1.Text);
cubo:=Power(Valor,3);
valor:=trunc(cubo);
salida:=0;
i:=1;
cadena.cadena:='';
cadena.flag:=false;
while (i<valor) do begin
try
salida:=0;
cadena.cadena:='';
cadena.flag:=false;
cadena:=busca(i,Valor,inttostr(i));
if cadena.flag then begin
i:=valor+1;
ShowMessage(Edit1.Text+' ^ 3 = '+inttostr(Valor)+#13+cadena.cadena+' = '+inttostr(valor));
end else
i:=i+2;
except
ShowMessage('Ha ocurrido un error, fallo en '+inttostr(i));
end;
end;
end;

end.

lo que utilize fue un boton y un edit (button1 y edit1)
me ayudaras mucho si me puedes dar alguna idea de lo que esta fallando
de nuevo muchas gracias por tu tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:suma de enteros impares

Publicado por E.T. (1244 intervenciones) el 04/11/2008 17:10:56
Tu error está en la función busca, en la última linea de código:

result.cadena:='';

Tu tienes comillas dobles ( " ), las que se encuentran en el número 2 del teclado, y no es eso lo que va, tienen que ir comillas sencillas, que están al lado de la tecla cero del teclado ( ' ) van dos de ellas sin separarlas por espacio, es que en el texto del foro parecen lo mismo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:suma de enteros impares

Publicado por lionel hutz (4 intervenciones) el 05/11/2008 00:06:44
hola otra vez
disculpa por la insistencia
el error que habia antes fue un error mio.
Una vez corregido este, cuando hago correr el programa (cosa que si se puede), aparecen un cuadro edit y un button, el problema (no se si no lo capte bien), es que cuando intruzco un numero en la casilla edit y luego hago click en el boton no pasa nada,
mi primera idea es que deberia haber algun label o un listbox donde se arrojara el resultado (donde se viera el cubo del numero y luego la suma de los impares enteros consecutivos).
bueno segun me dijeron estos numeros se llaman cubos perfectos
un ejemplo:
si introduzco el numero 3 en el edit, su cubo seria 27
y la suma seria 7 + 9 +11
estuve pensando mucho en este problema (es mas, no dormi bien ¬¬!) y es por eso que recurri a este foro, y me gustaria mucho (y me seria de gran ayuda), si me puedes guiar en como hacer este programa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:suma de enteros impares

Publicado por E.T. (1244 intervenciones) el 05/11/2008 20:33:39
Lo que te falta de ver es esto:

Selecciona el botón, y ve sus eventos, checa que el evento on click esté asignado, si no es así, selecciona ese evento luego, del lado derecho de la lista de eventos despliega el menú y ahi debe de estar uno, lo seleccionas y ejecuta de nuevo el programa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:suma de enteros impares

Publicado por esmerarda (1 intervención) el 01/04/2009 05:11:54
prgrama que imprima los nuemero simpares del 1 al 101 y que no salgan el 7 ni el 9
==> no se mucho sobre esto por eso eh solicitado esta ayuda espero q no sea molestia gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

impares enteros

Publicado por mildred vergara  (1 intervención) el 14/02/2011 14:08:11
cual es el conjunto de los enteros impares
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar