Utilizamos Cookies de terceros para generar estadísticas de audiencia y mostrar publicidad personalizada analizando tu navegación. Si sigues navegando estarás aceptando su uso. Más información X
PortadaForo AyudaTutoriales
Inicio Respuestas Problemas

Ejercicio Pascal NO sale, a ver si me echais una mano me urge muchisimo

laura05
- 15/11/2012 13:08:00 - Pregunta nº.: 52.341

Windows XP (5.1) 32b, Firefox 13.0.1

hola, soy una chica española que esta empezando con la programacion y estoy muy atascada, puedes ayudarme?son los ultimos jercicios pero ya no estoy atascada
gracias

se me pide

defina un fichero binario en el que cada elemento del fichero sea de tipo producto.



codifique un procedimiento (guarda_cesta) que guarda todos los productos de una cesta de la compra, que se pasa como parámetro, en un fichero cuyo nombre también se pasa como parámetro.



tenga en cuenta que salvo el producto que ocupa la posición cero (que como ya veremos tiene un significado especial) todos los demás están en la cesta sólo si el campo en_cesta=true, si este campo es false no necesitamos, por tanto, guardar ese producto en el fichero.

puede utilizar el apartado respuesta 1 para realizar sus comentarios.



respuesta 1:











1. segunda cuestiÓn:



codifique un procedimiento (recupera_cesta) que lea de un fichero de elementos de tipo producto, cuyo nombre se pasa como parámetro junto con otros que considere necesario, todos los productos que tenga almacenados y los guarde en una variable del tipo cesta que también se pasa como parámetro. asegúrese de que no se sobrepasarán los límites de la cesta intentando introducir más de tammaxcesta.

puede utilizar el apartado respuesta 2 para realizar sus comentarios.



respuesta 2:











2. tercera cuestiÓn:



codifique un módulo principal en el que reutilizando los resultados de cuestiones y actividades anteriores (procedimientos de lectura y escritura de ficheros, presentación, modificación de datos de una cesta…), se muestre al usuario el menú y se ejecuten las acciones pertinentes a cada opción.

tenga en cuenta que si el usuario elige:

1. abrir cesta de compra existente: se preguntará al usuario el nombre de la cesta (que será el nombre del fichero que la contiene).

2. comenzar cesta de compra nueva: se creará una cesta desde cero.

5. guardar cesta: se pedirá al usuario el nombre del fichero donde guardar la cesta.

6. pedir cesta: se mostrará la cesta actual.

7. salir del programa: se terminará la ejecución del programa.



supongo que tengo que utilizar

tipo_fichero = file of tipo_base; (* define un tipo de fichero de tipo_base *)

assing

reset

rewrite.

estas cosas por que es el ultimo tema y es lo que estoy dando pero no se como hacerlo

te pego el codigo que tengo hasta ahora y el cual hay que reutilizar lo que proceda para hacer estos ejercicios

supongo que algunas cosas de este codigo habria que quitarlas por que no sirven como el menu

aqui el codigo


{autor:almudena dorrego robles
iniciacion a la programacion
tema 8}
program cestacompra;
uses crt;

const
tammaxcesta = 3;

type
producto = record
nombreproduct : string;
numerounidadessolic : integer;
preciounidad :real;
en_cesta : boolean;
end;

tcesta= array [0.tammaxcesta] of producto;

procedure lee_producto(var p:producto); {var, modificamos el registro, insertamos información}
begin
write('nombre del producto: ');
readln(p.nombreproduct);
write('numero de unidades solicitadas: ');
readln(p.numerounidadessolic);
write('precio por unidad: ');
readln(p.preciounidad);
p.en_cesta := true;
end;

procedure inicializa_cesta(cestacompra : tcesta);
var i:integer;
begin

{empezamos en 1 porque el 0 está reservado.}
for i:=1 to tammaxcesta do
begin
cestacompra [i]. en_cesta := false;
cestacompra [i]. nombreproduct := '';
cestacompra [i]. numerounidadessolic := 0;
cestacompra [i]. preciounidad := 0.0;
end;
end;


procedure muestra_producto(var p:producto);
begin
writeln('nombre del producto: ', p.nombreproduct);
writeln('numero de unidades: ', p.numerounidadessolic);
writeln('precio de la unidad: ', p.preciounidad:0:2);
writeln ('precio total: ',(p.numerounidadessolic * p.preciounidad):0:2);
writeln;
end;


procedure mostrar_cesta(lacesta : tcesta);
var i:integer;
aux : integer;
begin
aux:= 0;
for i := 1 to tammaxcesta do
begin
if (lacesta[i].en_cesta = true) then
begin
writeln('nombre: ',lacesta[i].nombreproduct);
writeln ('unidades: ',lacesta[i].numerounidadessolic);
writeln ('precio por unidad: ',lacesta[i].preciounidad:0:2);
aux:= aux + 1;
writeln;
end;
end;
if aux = 0 then
begin
writeln ('la cesta esta vacia');
writeln;
end;
end;

procedure rellenar_cesta(var lacesta: tcesta);
var i:integer;
begin

for i:=1 to tammaxcesta do
writeln('rellene el producto ', i, ' de su cesta:');
lee_producto(lacesta[i]);
writeln;
end;


procedure muestracesta (lacesta : tcesta);
var
i: integer;
begin
for i := 1 to tammaxcesta do
muestra_producto (lacesta[i]);
end;

function cuenta_productos(lacesta: tcesta):integer;
var cantos:integer; i:integer;
begin
cantos:= 0; {iniciamos la cuenta a 0}
for i:=1 to tammaxcesta do {recorremos la cesta}
if (lacesta[i].en_cesta) then {si el producto i de la cesta c está en la cesta}
cantos:= cantos + 1; {aumentamos la cuenta de productos en cesta en 1}
cuenta_productos:= cantos;
end;

function busca_libre(lacesta: tcesta): integer;
var i:integer;
begin
busca_libre:=0;
for i := 1 to tammaxcesta do
if (lacesta[i].en_cesta = false) then
begin
busca_libre:= i;
end
else
writeln ('no hay ninguna posicion libre en la cesta');
end;

procedure incluir_producto_en_cesta(var lacesta:tcesta);
var
i: integer;
begin
i:= 0;
i:= busca_libre(lacesta);
if (i 0 )then
lee_producto (lacesta [i])
else
begin
writeln;
writeln ('la cesta esta llena');
end;
end;

function busca_producto(lacesta:tcesta; nombreproduct:string):integer;
var i:integer;
begin
for i:=1 to tammaxcesta do
begin
if (lacesta[i].nombreproduct = nombreproduct) then
busca_producto:= i
else
busca_producto:= 0;
end;
end;

procedure eliminar_producto_de_cesta(var lacesta:tcesta);
var
aproduct:string;
posaux:integer;
begin
{leemos el nombre del producto}
write('por favor, indique el nombre del producto a eliminar: ');
readln(aproduct);
{pos := 0; {inicializamos pos (aunque no hace falta aquí)}}
posaux:= busca_producto(lacesta,aproduct); {buscamos el producto}
{pos := 0; {inicializamos pos (aunque no hace falta aquí)}
if posaux = 0 then {si lo encontramos}
writeln ('producto no encontrado.');{c[pos].en_cesta := false {lo eliminamos}
else
begin
lacesta[posaux].en_cesta:= false;
writeln('producto numero: ',posaux,'encontrado y eliminado');
end;
end;

procedure modificar_producto(var lacesta:tcesta);
var
p: string;
posaux:integer;
change:integer;
nuevonombre :string;
nuevonumero : integer;
nuevoprecio : real;

begin
{leemos el nombre del producto}
write('por favor, indique el nombre del producto a modificar: ');
readln(p);
posaux:= busca_producto (lacesta , p);
if posaux = 0 then
writeln ('producto no encontrado')
else
begin
writeln('introduzca el numero de campo que quiere modificar');
writeln('1. modificar el nombre.');
writeln('2. modificar el numero de unidades.');
writeln('3. modificar el precio por unidad.');
readln(change);
writeln;
if (change = 1) then
begin
writeln ('que nombre quiere poner por: ', lacesta [posaux].nombreproduct);
readln (nuevonombre);
lacesta [posaux].nombreproduct:= nuevonombre;
end
else if (change = 2) then
begin
writeln ('que numero de unidades desea: (antes:' ,lacesta[posaux].numerounidadessolic,')');
readln (nuevonumero);
lacesta [posaux].numerounidadessolic := nuevonumero;
end
else if (change = 3) then
begin
writeln ('que precio nuevo desea: (antes:' ,lacesta[posaux].preciounidad:0:2,')');
readln (nuevoprecio);
lacesta [posaux].preciounidad := nuevoprecio;
end;
end;
end;

var
lacesta: tcesta;
option: integer;

begin
option:= 0;
inicializa_cesta(lacesta); {inicializamos la cesta}

repeat {menú del programa}

writeln('a. anhadir producto de la cesta.');
writeln('b. eliminar producto de la cesta.');
writeln('c. mostrar cesta.');
writeln('d. modificar productos de la cesta.');
writeln('e. contar productos de la cesta.');
writeln('f. salir del programa.');
readln(option);

case opción of
a : begin
clrscr;
incluir_producto_en_cesta (lacesta);
writeln;
end;
b: begin
clrscr;
eliminar_producto (lacesta);
writeln;
end;
c: begin
clrscr;
mostrar_cesta (lacesta);
writeln;
end;
d: begin
clrscr;
modificar_producto (lacesta);
writeln;
end;
e: begin
clrscr;
writeln;
writeln ('la cesta contiene: ',cuenta_productos (lacesta),' productos');
writeln;
end;
f: begin
clrscr;
writeln ('pulse cualquier tecla para salir');
readln;
end;
end;
until opción = 6;

end.


gracias

#1 Godmol (44.456 Posts) - 15/11/2012 13:15:48
Hola laura05, normalmente cuando a un alumno le mandan un ejercicio es porque se supone que debe tener el conocimiento suficiente como para resolverlo, nosotros estamos aquí para ayudar a la gente que tiene problemas con sus equipo, no para resolver tareas escolares.

Espero que comprendas que debemos cerrar tu consulta y rogarte que no realices más preguntas de este tipo en el futuro

Salu2


Firma

No escatimes en explicaciones, cuantos más datos proporciones mejor, piensa que si fuera adivino no estaría leyendo mensajes, estaría en el Caribe tirado al sol en una playa
Bajar - Subir

Temas relacionados:

Me urge y les agradeceré muchisimo....
Intel, window 7 tengo mi impresora multifuncional epson tx210, al imprimir me sale desconfigurada la impresion. al darle vista preliminar si mira normal pero ya en la hoja impresa, sale mas abajo y a un lado el izquierdo para ser mas exacto. esta desconfigurada y no se como configurarla ya desinstale el programa dos veces y sigo con el mismo problema que me lo tira diferente a como se mira en la pantalla de mi monitor. muchas gracias y ojala que si pueden responderme. ...
Problema ejercicio factusol no corresponde ejercicio tpvsol
Hola, he abierto el nuevo ejercicio 2015 en factusol, pero el TPVsol me sigue apareciendo el ejercicio anterior del 2014, con lo cual no se me descuenta el stock, no puedo generar facturas, es como si estuvieran desvinculados los programas. He traspasado la información del ejercicio 2014 al 2015, pero todo lo que hago nuevo en TPVsol no aparece ejecutado en el factusol ¿alguien sabe como puedo solucionarlo? Windows 7 (6.1) 32b, Chrome 39.0. ...
Quiero comprar un PC Gaming, ¿me echáis una manita?
Windows 7 64 Bits i5-2450M 2,5 GHz 4 GBs de RAM Nvidia Geforce 610M - 2 GBs ¡Muy buenas chicos! Voy a vender mi portátil (ASUS A53S, tiene un i5 2450M de cuatro núcleos a 2,5 GHz cada uno. 4 GBs de RAM y una Nvidia Geforce 610M de 2GBs de dedicados) para comprar un sobremesa (¿creéis que hago bien?). Obviamente, lo voy a utilizar sobre todo para videojuegos, también lo usaré para grabaciones y edición de vídeo, ya que soy actor de voz, aunque con un PC Gaming sé de sobra que cualquier programa tanto de edición de vídeo como de audio fu...
Programa en pascal de dos matrices
Windows Vista (6.0) 32b, Chrome 15.0 neecesito ayuda de bien y todoo!!!! es urgente mis pana ayúdenme que me va a quedar la materia de programacion!! por favor es una programa osea un ejemplo yo lo lo paso ustedes nme lo hacen ...
Aplicar el metodo de biseccion en pascal
Me gustaria que me ayudaran con un programa que me mandaron hacer en pascal en lazarus aplicando el metodso de biseccion de las funciones: x^5+4x^2-22 en el intervalo 0 y 2 su sexta iteracion, y la ltra es sex+cos(1+x^2) en el intervalo cerrado 2pi/3, pi su tercera iteracion. este es mi codigo program metododebiseccion; uses crt,wincrt,math,dos; var op:integer; funcion1:real; xn:real; j:integer; raiz:real; function resultado(a,b:real):real; var aux:real; begin resultado:=a*a*a*a*a+4*sqr(a)-22; aux:=resultado; r...
Subir

Foros:


Foro ADSL

Foro Android

Foro Antivirus

Foro Comunidad

Foro Consolas

Foro Debate

Foro Facebook

Foro Hardware

Foro Hotmail

Foro iPad
Foro iPhone

Foro Juegos

Foro Linux

Foro Móviles

Foro Opiniones

Foro Tablet

Foro Whatsapp

Foro Windows

Foro Windows 7

Foro Windows 8
InicioSecciones
^ SubirAviso legal
Política Privacidad
Configurarequipos15 Noviembre 2024