Programando desde 0: 10- Repetición condicional con REPEAT...UNTIL - Página 4
Primer ... 234

Programando desde 0: 10- Repetición condicional con REPEAT...UNTIL

      • 35
      • mensajes
      • miembro desde
      • 04/04/11
    #31 Re: Programando desde 0: 10- Repetición condicional con REPEAT...UNTIL

    Amigo, ejercicio 4(centinela): no consigo asimilar como devolver el resultado, es decir, en el texto "llama para desarrollar un reporte de cooperación$". La salida debe ser ("ll rr ll oo"). ¿Cómo poder mostrar esos valores, con un FOR...quiza?. Me refiero a que podrían ser más valores.
    Y otra pregunta se me ocurre declarar un par de variables con los valores de las consonantes y vocales, ¿crees que estaría bien?. para así saber cuales se repiten.

    Y no te disculpes por la demora, seguro tienes que estudiar o trabajar, en fin no te preocupes.

    GRACIAS.

      • 332
      • mensajes
      • miembro desde
      • 07/02/07
    05/08/2012
    #32 Re: Programando desde 0: 10- Repetición condicional con REPEAT...UNTIL

    Excelete. Ese error es super extraño... no se por qué se ha generado, y no imagino como diste con esa solución, pero es un gran aporte.

      • 35
      • mensajes
      • miembro desde
      • 04/04/11
    05/08/2012
    #33 Re: Programando desde 0: 10- Repetición condicional con REPEAT...UNTIL

    Invetige un poco en internet jeje...ahora con respecto al ejercicio 4 podrías darme una recomentaci'on? llevo dias sin poder resolverlo, creo que soy de tus alumnos menos privilegiados ja,ja...me refiero a que voy un poco atrasado ¿no lo crees?...
    Bueno Vlady que estes super bien. Gracias por todo.

      • 332
      • mensajes
      • miembro desde
      • 07/02/07
    05/08/2012
    #34 Re: Programando desde 0: 10- Repetición condicional con REPEAT...UNTIL

    La idea es tener un bucle que se reptia hasta leer el centinela, es decir, el caracter $. Deberías además tener algún buclesito interno para saltear los espacios ya que se podría ingresar muchos espacios entre una palabra y otra.

    Lees un caracter y lo almacenas. Luego lees otro y te fijas si es igual al que ya almacenaste. En caso afirmativo escribes la salida, en caso negativo almacenas ahora el nuevo caracter y repites el procedimiento.

    Espero eso te ayude amigo.

    Respecto a tu comentario, aquí nadie va atrasado , cada uno va a su ritmo. Este curso no tiene fecha de inicio ni de final. Además, vas trabajando y es lo que importa. Otros van más adelante pero jamás preguntaron nada, lo cual implica que en realidad no han hecho todos los ejercicios.

    Espero tus comentarios respecto al problema del ejercicio.

    Salduos.

      • 35
      • mensajes
      • miembro desde
      • 04/04/11
    05/08/2012
    #35 Re: Programando desde 0: 10- Repetición condicional con REPEAT...UNTIL

    Genial Vlady...Lo que me pusiste fue exactamente lo que hice, a diferencia que no sabia muy bien como comparar los valores dados, hasta que analicé el programa y di con que tenía que asignarle al primer valor leido el segundo valor leido, esto después de verificar que estos dos NO eran iguales...Muchas gracias!!!
    Y con respecto al ejercicio5(calculadorasimple) no consigo como poder leer los operadores, al momento que los lee me manda un error te posteo el código y me aconsejes.
    GRACIAS.

    Código:
    PROGRAM calculadorasencilla;
    USES crt;
    
    CONST
       fin='=';//Centinela
    VAR
       num, resultado: integer;//Variables para los n£m.el resultado.
       operador: char;//Variable para los operadores aritmeticos
    BEGIN
       clrscr;
       writeln('Ingrese las operaciones a realizar: ');
    
    REPEAT
       //Inicializamos un bucle por si el usuario ingresa m s de un
       //n£mero seguido.
       repeat
       read(num);//Leemos el primer n£mero.
       until (ord(num) < 48) or (ord(num) > 57);//verificamos que sea un n£mero
         read(operador); //leemos el operador aritmetico.
       CASE operador OF  // Realizamos las operaciones necesarias
       '+': begin
            resultado := num + num;
            end;
       '*': begin
            resultado := num * num;
            end;
       '/': begin
            resultado := num div num;
            end;
       '-': begin
            resultado := num - num;
            end;
       '=': begin
            write('El resultado es: ',resultado);//mostramos el resultado
            end;
       END;
    
    UNTIL (operador=fin);//Fin del repeat principal
    
    
    END.
    Que estes muy bien!!!
      • 35
      • mensajes
      • miembro desde
      • 04/04/11
    06/08/2012
    #36 Re: Programando desde 0: 10- Repetición condicional con REPEAT...UNTIL

    Que hay amigo!!, te cuento que ya concluí el ejercicio6, y no estaba tan dificil, se me complicaron más los otros y el ej5 que todavía no resuelvo. En fin, hice un código diferente al que hizo alguien en este post (no recuerdo su nombre) lo posteo por si le quieres hechar un vistazo y para que lo vean los interesados.

    Código:
    PROGRAM contadorletra;
    USES crt;
    
    CONST
       fin='.';
       espacio=' ';
    VAR
       letra, car: char; //variables para almacenar la letra a  contar y leer la oracion.
       contador: integer; //para contar las veces que aparece letra.
    BEGIN
    clrscr;
       write('Ingresa la letra que quieres contabilizar: ');
       readln(letra); //leemos la letra a contar
       write('Letra: ',letra);//mostramos la letra
       writeln;
    
       writeln('Ingresa la oraci¢n: ');//pedimos que ingresen la oracion
       write('Oracion: '); //donde escribiran la oracion
       repeat //saltamos los espacios al principio de la oracion
          read(car); 
       until car <> espacio; //hasta que car sea diferente a espacio
    
       REPEAT
          repeat
    
             if car = letra then //si car es = letra contamos 1 y aumetamos
              begin
                contador:= contador + 1;//aumentamos el valor
                read(car);//leemos nuevamente el caracter
              end
             else //si car y espacio no son igual entonces
                read(car);//leemos el siguiente caracter
          until car = espacio; //fin del repeat hasta que car sea igual a espacio
    
          repeat//leemos ahsta que car sea dif a espacio
             read(car);
          until car <> espacio;
    
       UNTIL car=fin;//fin del repeat principal cuando car sea igual a punto
       //mostramos el resultado
       writeln('Las veces que aparece: ',letra);
       write('En la oraci¢n son: ',contador);
       readkey;
    END.
    Gracias Vlady!!! y espero tu respuesta del ejercicio5, para terminar y así poder continuar con las lecciones.
    SUERTE!!!
      • 332
      • mensajes
      • miembro desde
      • 07/02/07
    06/08/2012
    #37 Re: Programando desde 0: 10- Repetición condicional con REPEAT...UNTIL

    Amigo, te pido mil disculpas pero esta vez te dejaré la solución publicada porque ando con poco tiempo. Estudiala y verás que resulta sencillo. Esto te dará pautas para posteriores problemas.

    Código:
    PROGRAM Calculadora; CONST espacio= ' '; //Una constante con el caracter de espacio. VAR resultado, valor_leido: INTEGER; caracter: CHAR; BEGIN (*Consumimos todos los espacios, si los hay, al inicio de la línea. Esto lo hacemos leyendo los caracateres hasta encontrar algo que distinto a un espacio.*) Repeat read(caracter); Until caracter<>espacio; (*Ahora tenemos algo que no es un caracter y que, como sabemos que la entrada será siempre correcta, tendremos un número*) (*Si un número lo leemos como caracter, para pasarlo a entero restamos el ordinal de ese caracter menos el ordinal del caracter '0'*) resultado:= Ord(caracter)-Ord('0'); (*Volvemos a saltear espacios*); Repeat read(caracter); Until caracter<>espacio; (*Ahora comenzamos con el procesamiento de datos*) (*Mientras no encontramos un = procesamos datos*) While caracter<>'=' do begin (*Si leemos un operador, salteamos espacios y leemos el siguiente número para procesarlo. Luego continuamos con la lectura normal.*) (*Este case realiza las mismas tareaes para cada operador, lo único que varía es, obviamente, la operación que realizamos. Hago este código así para que se entienda bien, podría optimizarse y acortarse mucho.*) Case caracter of '+': begin //Salteamos espacios. Repeat read(caracter); Until caracter<>espacio; //Pasamos el número leído a entero valor_leido:= Ord(caracter)-Ord('0'); //Procesamos la suma. resultado:= resultado + valor_leido; end; '-': begin //Salteamos espacios. Repeat read(caracter); Until caracter<>espacio; //Pasamos el número leído a entero. valor_leido:= Ord(caracter)-Ord('0'); //Procesamos la resta. resultado:= resultado - valor_leido; end; '*': begin //Salteamos espacios. Repeat read(caracter); Until caracter<>espacio; //Pasamos el número leído a entero. valor_leido:= Ord(caracter)-Ord('0'); //Procesamos el producto. resultado:= resultado*valor_leido; end; '/': begin //Salteamos espacios. Repeat read(caracter); Until caracter<>espacio; //Pasamos el número leído a entetro. valor_leido:= Ord(caracter)-Ord('0'); //Procesamos la división como división entera. resultado:= resultado DIV valor_leido; end; end; //Volvemos a saltear espacios. Repeat read(caracter); Until caracter<>espacio; end; WriteLn; Write('El resultado es ',resultado,'.'); //Estos READLN son simplemente para dejar el programa pausado antes de cerrarse. ReadLn; ReadLn; END.


    Que andes bien.
      • 1
      • mensajes
      • miembro desde
      • 06/09/12
    06/09/2012
    #38 Re: Programando desde 0: 10- Repetición condicional con REPEAT...UNTIL

    Aqui va mi duda, estaba haciendo el ejercicio 6 (el de contar las palabras que terminan con determinada letra) y entonces me surgio un problema
    CONST
    espacio= ' ';
    VAR
    caracter, caracter_anterior: char;
    letra_elegida: char;
    cuenta: integer;
    BEGIN
    //-----
    caracter_anterior:= espacio;
    cuenta:=0;
    writeln('ingrese la letra elegida.');
    readln(letra_elegida);
    writeln('ingrese texto finalizado con un punto');
    //-----
    repeat
    read(caracter);
    until caracter <> espacio;
    //----
    repeat
    read(caracter);
    IF (caracter_anterior)=(letra_elegida) AND (caracter)=(espacio) then
    begin
    cuenta:= cuenta+1;
    end;
    //----------------
    caracter_anterior:= caracter;
    until(caracter) = '.';
    writeln('la cantidad de palabras terminadas con ',letra_elegida,'es ',cuenta);

    END.

    Mi problema es que me decia algo asi como que AND no sirve para CHAR, lugo evadi el problema cambiando esa parte por:
    .
    .
    .
    if (caracter_anterior) = (letra_elegida) then
    begin
    if (caracter)= (espacio)then
    begin
    cuenta:= cuenta+1;
    end;
    end;

    En fin el programita quedo pero tengo la duda de por que no me dejaba la primera vez cuando habia usado un AND.

      • 332
      • mensajes
      • miembro desde
      • 07/02/07
    06/09/2012
    #39 Re: Programando desde 0: 10- Repetición condicional con REPEAT...UNTIL

    Porque escribiste mal los paréntesis amigo. Tu línea era

    Código:
    IF (caracter_anterior)=(letra_elegida) AND (caracter)=(espacio)
    debería haber sido

    Código:
    IF (caracter_anterior=letra_elegida) AND (caracter=espacio) THEN
    Espero te quede clara la duda.

    Saludos.
Primer ... 234