Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: ptolomeo en 23 de Diciembre 2013, 11:08

Título: Dudas básicas pascal funciones copy, length
Publicado por: ptolomeo en 23 de Diciembre 2013, 11:08
Hola buenas, estoy teniendo problemas con dos puntos que expondre a continuación que no tengo ni idea de como hacerlo. A ver si alguien sabe hacerlo y me echa una mano!

1-Dada una posición de un caracter en un string, por ejemplo el caracter 5 del string S, mostrar por pantalla que caracter ocupa esa posicion.

2-Si tengo dos strings que podemos llamarlos S1 y S2, como puedo hacer para poder decir si es cierto o falso que el ultimo caracter de s1 se encuentra al menos dos veces dentro de S2.

Muchas gracias por resolverle las dudas a un novato!
Título: Re:Dudas pascal
Publicado por: César Krall en 23 de Diciembre 2013, 12:40
Hola, no sé si estás usando Pascal porque lo estén usando como lenguaje en estudios que estás cursando o si simplemente lo estás aprendiendo por gusto. Si es por gusto, te recomendaría que te pasaras a otro lenguaje, no porque Pascal sea malo, sino porque otro lenguaje te será más útil en la práctica.


1-Dada una posición de un caracter en un string, por ejemplo el caracter 5 del string S, mostrar por pantalla que caracter ocupa esa posicion.


Habría varias maneras de hacer esto. Una que se me ocurre es usar la función copy.

copy:  devuelve una subcadena.  Su sintaxis es  function copy(cad: string; posic: integer; cantidad: integer): string;  Indicamos la cadena, desde qué posición queremos empezar a tomar letras y cuántas queremos tomar.  Así, copy('estrafalariamente', 5, 1)  daría como resultado 'a', ya que la a es el carácter 5. Si hiciéramos copy('estrafalariamente', 13, 5) nos devolvería 'mente'


program cadenas;
 
 var
   cadena1: string;
   cadena2: string;

 
 begin
   cadena1:= 'estrafalariamente';
   writeln('El caracter en posición 5 es: ', copy(frase, 5, 1) );
 end.


2-Si tengo dos strings que podemos llamarlos S1 y S2, como puedo hacer para poder decir si es cierto o falso que el ultimo caracter de s1 se encuentra al menos dos veces dentro de S2.

Para ello lo que se me ocurre es: usar copy para meter dentro de una cadena el último carácter de s1. Para ello puedes usar la función length (esta te dice la longitud de una cadena de texto:  function length(cad: string): integer;)

Luego creas un bucle donde usas copy para comparar carácter a carácter cada carácter de s2 con el último carácter de s1, y en caso de ser iguales, en un contador sumas uno. Si al final el contador suma 2 ó más, es cierto que el ultimo caracter de s1 se encuentra al menos dos veces dentro de S2, si suma 1 ó es 0, es falso.

Saludos.