PROGRAMACION I – PROGRAMA ANALITICO

Anuncio
Programador Universitario
Facultad de Ciencias Exactas y Tecnología – U.N.T.
Secuencias1: que muestra el uso de la proposici¢n while y de las funciones de entrada y salida de
caracteres. El siguiente programa lee una línea de texto de la entrada estándar y la escribe en la
pantalla en mayúsculas.
#include <stdio.h>
#include <ctype.h>
#define MF '.'
/*..\me2000\ejemp12.cpp */
/* defino la constante Marca Final */
main()
{ char car;
/* con este lazo leo y controlo en forma simult nea */
while ((car=getchar()) != MF)
putchar(toupper(car));
putchar(car);
return 0; }
/* lectura abreviada */
/* escribo en may£sculas */
Observación: toupper() es una función de la biblioteca estándar ctype.h que transforma los caracteres
a su correspondiente en mayúscula.
Secuencias2: Diseño y código de un programa que lee una línea de texto de la entrada estándar y
determina cual es la longitud de la palabra más larga .
ALGORITMO larga;
ENTRADA: secuencia de caracteres con MF; cc: carácter;
SALIDA: max: entero >=0;
SUPUESTOS: LA LÍNEA DE TEXTO NO TIENE BLANCOS ANTES DE LA PRIMERA PALABRA.
l1. LEER(CAR);
l2.. MIENTRAS( CC <> MF)
leer_palabra_y_contar_cantidad_de_letras;
controlar_maxima_longitud;
LEER(cc);
C4. ESCRIBIR(max).
C5. PARAR.
#include <stdio.h>
/*..\me2000\ejemp13.c */
#include <ctype.h>
#define MF '='
/* defino la constante Marca Final */
#define BL ' '
/* defino la constante BLanco */
main()
{ char car;
int max=0,cont = 0;
car = getchar();
while (car != MF)
{
/* leer_palabra_y_contar_cantidad_de_letras; */
while ((car != BL) & (car != MF))
{
cont = cont +1;
car = getchar();
}
/* controlar_maxima_longitud; */
if (cont > max)
max = cont ;
/* LEER (Car); */
if (car != MF)
car = getchar();
cont = 0;
}
printf("Longitud m xima %d\n",max);
return 0; }
Agrm. María Eugenia Marquetti de Vallvé
1 de 4
Programador Universitario
Facultad de Ciencias Exactas y Tecnología – U.N.T.
Secuencias2.1: otra solución del ejercicio Secuencias2
#include <stdio.h>
/*..\me2000\ejemp131.c */
#include <ctype.h>
#define MF '='
/* defino la constante Marca Final */
#define BL ' '
/* defino la constante BLanco */
main()
{
char car;
do
{
int max=0,cont = 0;
while ((car != BL) & (car != MF))
{
cont = cont +1;
car = getchar();
}
if (cont > max) max = cont ;
if (car != MF) car = getchar();
cont = 0;
}
while (car != MF);
printf("Longitud m xima %d\n",max);
return 0;
}
Secuencias2.2: otra solución del ejercicio Secuencias2
Para esta solucion suponga que entre la ultima letra y la marca final no hay caracteres blancos.
#include <stdio.h>
/*..\me2000\pru.cpp */
#include <ctype.h>
/* 12/oct/01 */
#define MF '='
/* defino la constante Marca Final */
#define BL ' '
/* defino la constante BLanco */
main()
{ char car; int max=0,cont = 0;
do
{
do
{
car = getchar();
cont = cont +1;
}
while ((car != BL) & (car != MF)) ;
if (cont > max) max = cont ;
if (car != MF) car = getchar();
cont = 0;
}
while (car != MF);
printf("Longitud m xima %d\n",max);
return 0;
}
Secuencias2.3: otra solución del ejercicio Secuencias2
#include <stdio.h>
/*..\prog99\car91.c */
#include <ctype.h>
/* 17/sept/99 */
#define MF '='
/* defino la constante Marca Final */
#define BL ' '
/* defino la constante BLanco */
#define LEER car=getchar()
main()
{
char car;
int max=0,cont = 0;
Agrm. María Eugenia Marquetti de Vallvé
2 de 4
Programador Universitario
Facultad de Ciencias Exactas y Tecnología – U.N.T.
LEER;
while (car != MF)
{
while ((car != BL) & (car != MF))
{
cont = cont +1;
LEER;
}
if (cont > max) max = cont ;
if (car != MF) LEER;
cont = 0;
}
printf("Longitud m xima %d\n",max);
return 0;
}
Secuencias3: Ejemplo de uso de estructuras apropiadas para el tratamiento de secuencias.
Algoritmo para verificar si una frase es un tautograma, es decir, que todas las palabras que
componen la frase comienzan con la misma letra. Se consideran los posibles casos:
•
•
•
•
la frase puede estar precedida por blancos
la frase puede ser nula (secuencia vacía)
las palabras de la frase pueden estar separadas por mas de un blanco
una frase de una sola palabra se considerará un tautograma
ALGORITMO tautograma;
ENTRADA: secuencia de caracteres con MF, car : carácter;
SALIDA : mensaje;
V: AUXILIARES: Es_tauto, indicador lógico ó variable booleana; pri: carácter;
NIVEL 1
T0.
T1.
T2.
T3.
T4.
Es_tauto Å verdadero;
Saltar_blancos_iniciales;
SI ( car = MF) ENTONCES
ESCRIBIR(Secuencia con blancos y MF)
SINO
pri Å car;
MIENTRAS (car <> MF y es_tauto)
saltar_palabra;
SI (car <> MF) ENTONCES
saltar_blancos_intermedios;
controlar_tauto_con_el_1º_car_de_la_proxima_palabra;
FIN-MIENTRAS;
SI (Es_tauto ) ENTONCES
ESCRIBIR ( Es tautograma)
SINO
ESCRIBIR (NO es tautograma)
PARAR.
NIVEL 2
Saltar_blancos_iniciales;
LEER(car);
MIENTRAS (car = blanco y car <> MF)
LEER(car);
FIN_MIENTRAS;
saltar_palabra;
MIENTRAS (car <> blanco y car <> MF)
LEER(car);
FIN_MIENTRAS;
Agrm. María Eugenia Marquetti de Vallvé
3 de 4
Programador Universitario
Facultad de Ciencias Exactas y Tecnología – U.N.T.
saltar_blancos_intermedios;
MIENTRAS (car = blanco y car <> MF)
LEER(car);
FIN_MIENTRAS;
controlar_tauto_con_el_1º_car_de_la_proxima_palabra;
SI (car <> MF ) ENTONCES
SI (car <> pri) ENTONCES
Es_tauto Å falso;
SINO
Leer(car);
Se sugiere al alumno la codificación y posterior prueba de este ejercicio.
Secuencias4: Ejemplo de uso de estructuras apropiadas para el tratamiento de secuencias.
Una frase es “ un conjunto de palabras que basta para formar sentido”. Una palabra es “ un conjunto
de caracteres unidos que designan una cosa o expresan una idea”.
El ejemplo considera una frase como una secuencia de caracteres con marca final, por ejemplo un
punto. Se presenta el diseño de un algoritmo que lee la frase y cuenta la cantidad de diptongos “ai”
presentes en la misma. La salida de este algoritmo es el valor del contador de diptongos.
Por ejemplo: Para la frase “Inauguración del Mundial de Voley”, el contador tendrá el valor 1.
ALGORITMO diptongo;
ENTRADA: secuencia de caracteres con MF; car: carácter;
SALIDA: cont, entero >=0;
Nivel 1
D1.
LEER(car);
D2.
MIENTRAS (car <> MF)
Saltar_blancos;
Procesar_palabra;
FIN_MIENTRAS;
D3.
ESCRIBIR(cont);
D4.
PARAR.
#include <stdio.h>
/*..\prog99\car10.c */
#include <ctype.h>
/* 17/sept/99 */
#define MF '.'
/* defino la constante Marca
#define A 'a'
/* defino la constante
#define I 'i'
/* defino la constante
#define U 'u'
/* defino la constante
main()
{
char car;
Final */
'a' */
'i' */
'u' */
int cont = 0;
car = getchar();
while (car != MF)
{
do
car = getchar();
while ((car == ' ') && (car != MF));
while ((car != ' ') && (car != MF))
{
if (car == A)
Agrm. María Eugenia Marquetti de Vallvé
4 de 4
Programador Universitario
Facultad de Ciencias Exactas y Tecnología – U.N.T.
{
car = getchar();
if ((car == I ) || (car == U))
cont = cont +1;
}
if (car != MF)
car = getchar();
}
}
printf("Hay %d diptongos que comienzan con a\n",cont);
return 0;
}
Sugerencia: modifique el algoritmo de modo tal que le permita contar la cantidad de diptongos del
tipo: “au”, “ei”, “eu”, “ou”, “oí”. Codifique y pruebe para distintas entradas.
Agrm. María Eugenia Marquetti de Vallvé
5 de 4
Descargar