Escolar Documentos
Profissional Documentos
Cultura Documentos
Contenido:
Parte I: Programas sin errores.
Pare II: Flujogramas para ser modificados y codificados.
Parte III: Ejercicios propuestos.
Metodología de trabajo:
Semana 1:
El estudiante sube en los 10 primeros minutos de la sesión,
sus archivos al aula virtual.
Semana 2:
El estudiante sube en los 10 primeros minutos de la sesión,
sus archivos al aula virtual.
Diseñar una solución que permita leer el tipo de Boletos que compran en el estadio 5 aficionados,
hay boletos de tres precios diferentes , General: vale $ 3.50, Tribuna: vale $ 5.50 y Platea:
cuesta $7.00 ; la solución debe de imprimir cuantos de cada tipo compra el aficionado y cuanto es
el total que paga .
Principal
Imprimir
a) MODULO Imprimir
Qué hace? Imprime los datos leídos, calcula el total que paga cada
aficionado e imprime el resultado.
Imprime la matriz de
Precio de cada tipo de boleto
datos leídos.
General: $ 3.50
Tribuna: $ 5.50 Imprime el total que paga
Platea: $ 7.00 cada aficionado.
Recibe la matriz de datos leídos.
Cómo lo hace?
Variables de Salida:
Restricciones: No hay
Tp = 0
Repetir: Repetir :
hasta ci<=col
hasta fi<=fil
Tp=3.50*V[fi][0]+5.50*V[fi][1]+7.00*V[fi][2]
Imprimir: Tp
Variables de Proceso:
Nombre Tipo Descripción
fi entero Tipo contador que controla las filas; donde Vi = 0, Vf = 5, Vc=1
ci entero Tipo contador que controla las columnas; donde Vi = 0, Vf = 3, Vc=1
fi = 0, fil, 1
Tp=0
ci = 0, col, 1
V [ fi ][ci]
Tp=3.50*V[fi][0] +
5.50*V[fi][1] +
7.00*V[fi][2]
Tp
Retornar
b) MODULO Principal
Variables de Entrada:
Nombre Tipo Descripción
cant[fil ][col] entero Matriz de 5 x 3 y que almacena la cantidad de boletos comprados
de cada tipo (3) por los 5 aficionados
Constantes:
Proceso:
Repetir: Repetir:
Desde f=0 Desde c=0 mientras Leer cant[f ][c]
hasta f<fil hasta c<col cant[f][c]<0
Imprimir(cant)
Variables de Proceso:
Inicio
Reservar :
cant[fil][col]
f = 0, fil, 1
“Digite la cantidad
de boletos del
aficionado”,f+1
c = 0, col, 1
“Digite la cantidad
de boletos del
tipo”,c+1
cant[ f][c]
No
cant[ f][c]< 0
Si
“Error!!”
“Digite la cantidad
de boletos del
tipo”,c+1
cant[ f][c]
Imprimir (cant)
Fin
/*Diseñar una solución que permita leer el tipo de Boletos que compran en el estadio 5
aficionados, hay boletos de tres precios diferentes , General: vale $ 3.50, Tribuna: vale
$ 5.50 y Platea: cuesta $7.00 ; la solución debe de imprimir cuantos de cada tipo
compra el aficionado y cuanto es el total que paga*/
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define fil 2
#define col 3
void Imprimir(int V[][col])
{
int fi, ci;
for(fi=0;fi<fil;fi++)
{
float Tp=0;
printf("\n\n Las cantidades de cada tipo del aficionado %i son\n",fi+1);
for(ci=0;ci<col;ci++)
{
printf("\n\n\t La cantidad de boletos del tipo %i es :\t%i \n",ci+1,V[fi][ci]);
}
Tp=3.50*V[fi][0]+5.50*V[fi][1]+7.00*V[fi][2];
printf("\n\nEl total a pagar por el aficionado %i es de:$ %.2f \n\n",fi+1,Tp);
system("pause");
system("cls");
getch();
}
}
main()
{
int f, c;
float Tp;
int V[fil][col];
int cant[fil][col];
for(f=0;f<fil;f++)
{
printf("\n Digite la cantidad de boletos del aficionado \t%i: ",f+1);
for(c=0;c<col;c++)
{
printf("\n\t Digite la cantidad de boletos del tipo \t%i: ",c+1);
scanf("%i",&cant[f][c]);
Programa 2
/* Diseñe un programa que permita capturar los datos de 5 alumnos. Los datos
que se solicitarán serán su código y 4 notas. El programa deberá calcular el
promedio de cada alumno y luego ordenar los registros de los alumnos en base a
su promedio de mayor a menor. El programa deberá finalmente mostrar el
nombre, las notas y el promedio de los alumnos.*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main()
{
system("cls");
int i,j,Codigo[5],aux_codigo,b=1;
float notas[5][5],auxiliar,promedio;
char nombre[5][25],nombre_auxiliar[25];
for(i=0;i<5;i++)
{
printf("\n\nDigite notas del alumno %i: ",i+1);
Codigo[i]=i+1;
promedio=0;
for(j=0;j<4;j++)
{
printf("\nDigite la nota %i: ",j+1);
scanf("%f",¬as[i][j]);
while(notas[i][j]<0 || notas[i][j]>10)
{
printf("\nError!!!Digite la nota %i: ",j+1);
scanf("%f",¬as[i][j]);
}
promedio = promedio + notas[i][j];
}
Ciclo II_2012 jmb-mrcp 9
//La última posición de cada fila de la matriz notas se utilizará
//para asignarle el promedio del alumno
notas[i][4]= promedio / 4;
}
//Ahora pasaremos a ordenar a los alumnos en base al promedio más alto
system("cls");
while(b!=0)
{
b=0;
for(i=0;i<4;i++)
{
if(notas[i][4] < notas[i+1][4])
{
/*Debido a que ordenaremos de mayor a menor en la condición
preguntamos si el promedio del alumno actual (notas[i][4])
es menor que el promedio del siguiente alumno (notas[i+1][4])
de ser cierto los cambiaremos de posición y para ello
nos apoyaremos de la variable auxiliar*/
for(j=0;j<5;j++)
{
auxiliar=notas[i][j];
notas[i][j]=notas[i+1][j];
notas[i+1][j]=auxiliar;
//}
/*Con lo anterior solo hemos cambiado de posición
LAS NOTAS no hay que perder de vista que también se debe
cambiar la posición del Codigo del alumno para que las
notas sigan coincidiendo al alumno al que se le
fueron asignadas*/
aux_codigo=Codigo[i];
Codigo[i]=Codigo[i+1];
Codigo[i+1]=aux_codigo;
}
b++;
}//fin del if
}//fin del for
}//fin del while
/*Finalmente mostraremos el nombre de los alumnos con sus respectivas
notas y promedio*/
system("cls");
printf("****** Notas de Alumnos Ordenados en Base a Promedio mas Alto
******\n\n");
for(i=0;i<5;i++)
{
//puts(nombre[i]);
printf("\nAlumno %i:\n\n",Codigo[i]);
printf("Nota 1: %.2f Nota 2: %.2f Nota 3: %.2f Nota 4: %.2f\n"
,notas[i][0],notas[i][1],notas[i][2],notas[i][3]);
Ciclo II_2012 jmb-mrcp 10
printf("\n\n\t\t\tPromedio: %.2f\n",notas[i][4]);
}
getch();
}
Programa 3
/*Diseñe un programa que permita capturar una matriz de 4 x 4 cuyos elementos
serán números enteros. El programa también debe permitir capturar un número,
el cual se buscará secuencialmente en la matriz, en caso de encontrarse el
número a buscar se mostrará un mensaje indicando que el numero se encuentra
dentro de los elementos de la matriz, además se pide imprimir la posición en la
que el numero fue encontrado, en el caso de no encontrarse debe mostrar un
mensaje indicando que el número no fue encontrado.*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define fil 4
#define col 4
Programa 4
/*Diseñe una solución que permita leer una matriz de 4 x 3, la imprima y que
cambie el valor de la posición de la matriz, si el valor almacenado es menor que 3,
multiplique por 5 dicho valor almacenado, además debe imprimir la matriz final.*/
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define f 4
#define c 3
main()
{
int K[f][c];
int S[f][c];
int i,j;
puts("LECTURA DE LA MATRIZ FILA POR FILA");
for(i=0;i<f;i++)
{
for(j=0;j<c;j++)
{
printf("\nIntroduzca el dato de:\t [%i][%i]\t\t",i+1,j+1);
scanf("%i",&K[i][j]);
}
}
system("cls");
//EVALUACION DE LA MATRIZ;
for(i=0;i<f;i++)
{
for(j=0;j<c;j++)
{
if(K[i][j]<3)
S[i][j]=5*K[i][j];
Entrada Salida
Variable de Entrada
Nombre tipo Descripción
mat[4][5] Entero Matriz que almacena los 12 datos o elementos iniciales
datol Entero El número a buscar dentro de la matriz
Proceso:
n=12-1 //Numero de elementos de la matriz
c=0 //contador de elementos
¿mat[i][j] == 0?
Si: fila = i
I=0,3,1 J=0,4,1 Col= j
Imprimir fila y col
No: c++
¿c == n?
Si: Imprimir “No se encuentra”
No: No hacer nada
Variables de Proceso:
Nombre tipo Descripción
i Entero Contador que ayuda el manejo de filas
j Entero Contador que qyuda a manejar las columnas
c Entero Contador de elementos de la matriz (de 0 a 11)
Flujograma:
Reservar mat[4][5]
i=0,3,1
c=0
j=0,4,1
i=0,3,1
No Si
mat[i][j] ==
dato
j=0,4,1
fila = i
“digite el col= J
elemento:”i, j
“el numero se
encuentra en:” fila, col
mat[i][j]
c=0
i=4
“digite el
dato a
buscar”
No Si
dato c==0
i=0,3,1
Fin
j=0,4,1
“digite el
elemento:”i, j
“\n”
Diseñe un flujograma que permita leer 9 datos enteros, que imprima: los datos pares, los datos
impares e imprimirlos en forma inversa a la que fueron leídos.
Flujograma
Inicio
1
filas = 3
“IMPRESION DE LA MATRIZ
col = 3
EN ORDEN CONTRARIO A
LA LECTURA…”
Reservar memoria para
datos [filas] [col]
i = filas-1, 0, -1
“LECTURA DE
LA MATRIZ FILA
j = col-1, 0, -1
POR FILA…”
datos[ i ][ j ]
i = 0, filas-1, 1
j = 0, col-1,
1
datos [ i ][ j ]
Fin
Flujograma
211
Inicio
“IMPRESIÓN DE
Reservar memoria para LA MATRIZ
K [ 4 ] [ 3 ], ORIGINAL”
S[4][3]
f = 0; f <= 3; f++
“LECTURA DE LA
MATRIZ FILA
POR FILA…”
c = 0; c <= 2; c++
f = 0; f <= 3; f++
K[f][c]
c = 0; c <= 2; c++
c = 0; c <= 2; c++
111
S[f][c]
FIN
“EVALUACION
DE LA
MATRIZ”
f = 0; f <= 4; f++
c = 0; c <= 2; c++
No Si
K[f][c]
<3
S[f][c]=K[f][c] S[f][c]=5*K[f][c]
211
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
4. Dada una matriz cuadrada n x m, cuyos elementos enteros deben estar entre 10 y 60,
diseñar un programa que determine si dicha matriz el simétrica.
Se considera que una matriz es simétrica, si a[i][j] == a[j][i]