Documentos de Académico
Documentos de Profesional
Documentos de Cultura
e - ---- - -
1
Diagramas de Flujo, codificacin en LS2 y lenguaje C
Curso 2006/2007
1 Programas simples
1.1 Media de dos valores
Problema: leer dos valores del teclado y escribir media aritmtica.
Diagrama de Flujo:
escribir media
Codificacin en C:
#include <stdio.h>
void main (void)
{
int a; I* primer dato*/
int b; I* segundo dato*/
int m; I* media*/
scanf("%d", &a); I* lectuas *I
scanf("%d", &b);
m=(a+b)/2; I* clculo de la media entera *I
printf("%d",m); I* ecritura *I
1
Problerna:leer un nmero del teclado y escribir su valor absoluto
Diagrama de Flujo:
inicio programa
escribir R
Codificacin en C:
#include <stdio.h>
void main (void)
{ int x; int r;
scanf("%d", &x);
if (x>O)
r=x;
else
r=-x;
I* Otro modo: *I
I* r=(x>O)?x:-x; *I
printf("%d",r);
}
Problerna:Leer las componentes de un vector de ]R,2 escribir el nmero del cuadrante en que se halla. Suponiendo
que ninguna componente es nula.
Diagrama de Flujo:
inicio programa
leer x e y
x variable real, contiene la primera
coordenada del punto cuyo cuadrante
se quiere determinar. Es el primer
S NO dato ledo
es x >O
y variable real, contiene la segunda
coordenada del punto cuyo cuadrante
S NO S NO se quiere determinar. Es el segundo
es y> O es y> O
dato ledo
fin programa
Codificacin en C:
#include <stdio.h>
void main (void)
{
int x;
int y;
scanf("%d", &x);
scanf("%d", &y);
if (x>O)
{
if (y>O) printf("4");
else printf("1");
}
else
{
if (y>O) printf("2");
else printf("3");
}
}
Problerna:Leer un nmero N de teclado. Escribir los nmeros impares menores que N . Suponer que N > l.
Diagrama de Flujo:
inicio programa
leer N
N variable entera. Dato ledo, es la cota superior
k~
del contador de bucle
k variable entera. Contador para bucle.
escribir k Comienza en 1 y se incrementa de dos en dos,
por lo que siempre es impar.
k ~ k+2
fin programa
Codificacin en C:
#include <stdio.h>
void main (void)
{
int N;
int k;
scanf("%d", &N);
k=1;
do
{
printf("%d ",k);
k=k+2;
}
while(k<N) ;
I* Otro modo *I
I* for(k=1;k<N;k=k+2) printf("%d ",k); *I
}
Problerna:leer un nmero N del teclado. Escribir los cuadrados de los naturales entre N y 1 en orden decreciente.
Diagrama de Flujo:
inicio programa
leer N
CONT --- N
N variable entera. Dato ledo, es la cota
supenor
CONT variable entera. Contador para bucle.
2
escribir CONT Inicialmente vale N y se decrementa
hasta l.
Decrementa CONT
fin programa
Codificacin en C:
#include <stdio.h>
void main (void)
{
int N
'
int cont;
int cuad;
scanf("%d", & N);
cont=N;
do
{
cuad=cont*cont;
printf(" % d ",cuad);
cont=cont-1;
} while(cont<N);
/*Otro modo *I
I* for(cont=N;cont>O;cont--)
{
cuad=cont*cont;
printf("%d ",cuad);
}
2.1 Vector de 10 componentes
Problerna:Leer las 1 O componentes de un vector de dimensin 1 O.
Diagrama de Flujo:
inicio lectura
iniciar ndice k a 1
NO
fin lectura
Codificacin en C:
#include <stdio.h>
#define N 10
void main (void)
{
int v[N];
int k;
for(k=O;k<N;k=k+1)
{
scanf ( "%d ", &v [k]);
}
}
Problema: Leer las N componentes de un vector de dimensin N. No olvidar tabla de variables.
Modificar ligeramente el anterior. Usar siempre subndices excepto cuando se indique lo contrario.
Diagrama de Flujo:
clculo de indmax
y valmax
escribir indmax
valmax-e- v k
y valmax indmax-e- k
fin programa
incrementar k
NO
fin clculo
10
Modificar anteriores. Usar siempre subndices excepto cuando se indique lo contrario.
11
3.1 Media de alturas
Problerna:Leer del teclado un nmero indeterminado de alturas. Dejar de leer cuando se haya introducido una altura
negativa. Escribir la media de las alturas vlidas.
Diagrama de
Flujo:
inicio
decrementar contador
media -- sumaparcial/contador
escribir media
fin
Problema: Igual que el anterior pero calculando la
13
altura mayor y la menor a medida q se leen.
Diagrama de Flujo:
inicio
leer altura
altura> alt_rnax?
s altura variable real, contiene los datos a me-
dida q van siendo introducidos. Se
supone que la primera altura no ser
alt_rnax.- altura
negativa. Los valores negativos de al-
tura sirven para indicar el fin de la
recogida de datos
s alt.rnax variable real, es la mxima altura leda
altura< alt_rnin?
alt.rnin variable real, es la mnima altura leda
alt_rnax.._ altura
no
leer altura
no
altura< 0?
escribir alt_rnax
escribir alt_rnin
fin
14
Problerna:Leer un nmero mayor que uno y determinar si es primo (escribiendo 1 si lo es y O si no lo es).
Diagrama de Flujo:
inicio programa
leer x
resultado -
divisor - 2
Incrementar divisor
NO
es divisor= x ?
S
escribir resultado
fin programa J
Codificacin en C:
#include <stdio.h>
void main (void)
{
int x;
int divisor;
int resultado;
I* Lectura del dato *I
scanf("%d", & x);
I* Iniciacin *I
resultado=1;
divisor=2;
I* Bucle *I
do
{
if(x%divisor==O)
{
resultado=O;
}
divisor=divisor+1;
}
while(! (divisor=x));
I* Escritura de resultado *I
printf("% d",resultado);
}
4.1 Crear matriz
Problema: Crear matriz de elemento genrico kJ = (k + j)2 5 con dimensiones fijas 3 x 2.
Diagrama de Flujo:
iniciar ndice k a 1
incrementar k
NO
17
anular (poner a cero) los elementos de su diagonal principal. Hecho en libro.
18
Problema: Leer una matriz A E JRmxn y escribir luego los elementos de su submairiz triangular inferior en el orden
indicado en la figura. La submairiz triangular inferior est formada por los elementos en la diagonal y debajo de sta.
Diagrama de Flujo:
Iniciar ka 1
Iniciar ja 1
Incrementar k
no
k > m?
20
escribir luego los elementos tomados al iresbolillo, que son los que ocupan las posiciones oscuras en el esquema
Diagrama de Flujo:
inicio tresbolillo
Iniciar k a 1 y
j inicial a 1
Iniciar j a
j inicial
escribir akj
Incrementar j en 2
M Variable entera. Es el nmero de filas
de la matriz.
N Variable entera. Es el nmero de
columnas de la matriz.
k Variable entera. ndice de filas de la
Incrementar k matriz. Vara entre 1 y M
J Variable entera. Indice de columnas de
la matriz. Vara entre 1 y N
jinicial vale 1 ? ~~~~
fin tresbolillo
Codificacin en C:
#include <stdio.h>
#define M 10
#define N 5
void main (void)
{
float a [M] [N] ;
int k;
int j;
int jinicial;
I* Iniciacin *I
jinicial=O;
I* Bucles *I
for(k=O;k<M;k++)
{
for(j=jinicial;j<N;j=j+2)
{
printf ( "%f ", a [k] [j]);
}
jinicial=(jinicial==0)?1:0;
}
}
21
Problema: Leer una matriz A E JRmxn y escribir luego los elementos de su submairiz triangular inferior en el orden
indicado en la figura. La submairiz triangular inferior est formada por los elementos en la diagonal y debajo de sta.
Diagrama de Flujo: