Академический Документы
Профессиональный Документы
Культура Документы
Gua de Laboratorio No. 3A ESTRUCTURAS DE DATOS ESTATICAS PRIMERA PARTE: ARREGLOS DE UNA SOLA DIMENSION (VECTORES) Objetivo: Aplicar Vectores a la solucin de problemas y codificarlas en C. Contenido:
Programas sin errores. Programas con errores. Aplicar Modularidad a 2 programas (1 de la Parte I y de la Parte II). Ejercicios propuestos.
El estudiante digita y depura dos programas de la Parte I y uno de la Parte II, segn le indique su instructor. Los programas deben se guardados como g3A_ejem#.cpp Debe de subir sus archivos en los ltimos 15 minutos de laboratorio. Como tarea, el estudiante realiza la parte III y 1 ejercicio de la parte IV, que el instructor indique, tanto Anlisis (documento en Word) como Codificacin (archivo ccp).
Semana 2:
El estudiante sube en los 10 primeros minutos de la sesin, sus archivos de tarea al aula virtual. El instructor asigna 2 enunciados de la Seccin A y 1 de la Seccin B. Los programas deben de guardarse, compilarse y ejecutarse. Guardar como: g3A_ej###.cpp en donde, ### es el nmero de ejercicio segn gua. El alumno deber subir sus archivos al aula virtual en los ltimos quince minutos de la sesin de laboratorio. El instructor dejar otros 2 ejercicios de tarea. (Sobre matrices Guia N. 3B).
Ciclo II_2012
jmb-mrcp
PARTE I
Los siguientes ejercicios leen e imprimen un vector de diferentes formas. Con cada uno de ellos usted debe: digitarlo; guardarlo (g3A_ejem#.cpp) y ejecutarlo con los siguientes valores: 5, 9, 2, 6, 3. Recuerde comentar los errores corregidos
Programa 1.
Disee un programa, que trabaje con un vector de nmeros enteros positivos, y que. a) Cuente el nmero de datos pares. b) Acumule los nmeros impares. El programa debe trabajar con un nmero finito de datos <100 y, se debe desarrollar utilizando Anlisis Estructurado.
Entrada
Salida
Cosas que hacer: 1. Leer la cantidad de elementos del vector y validar modulo leer 2. Leer cada uno de los elementos modulo principal 3. Calcular la cantidad de elementos pares modulo par 4. Imprime la cantidad de pares modulo par 5. Calcular la suma de todos los impares. modulo impar 6. Imprimir la suma de todos los impares modulo impar
Principal
Leer
Par
Impar
entero
Ciclo II_2012
jmb-mrcp
Cmo lo hace:? V. Salida: No hay. Variable Entrada Nombre Tipo Descripcin num entero Almacena un numero entero y positivo Restricciones: num>0 Parmetros: No hay Proceso: Leer num, Mientras num <=0 Imprimir: ERROR, Leer num, Codificacin: int Leer () { int num; puts(Digite un numero entero y positivo); sacnf(%i, &num); while ( num<0) { puts(Error, debe ser mayor que 0); scanf(%i, &num); } return num; }
Leer ()
num
Mientras (num<=0)
Error, debe ser mayor que 0 numero
num
Retornar num
de
elementos
Cmo lo hace:? V. Salida: Nombre Tipo Descripcin num_par entero Almacena la cantidad de elementos pares Variable Entrada: No hay Restricciones: No hay Parmetros: Nombre Tipo Descripcin Vector[ ] entero Almacena los elementos del vector n entero Almacena el nmero de elementos del vector
Par ( vecto[i], n )
num_par =0
I = 0, n-1, 1
residuo = vecto[i]% 2
Ciclo II_2012
jmb-mrcp
Proceso:
residuo==0
num_par ++
Variables de Proceso Nombre Tipo Descripcin i entero Almacena el nmero de elemento dentro
del vector, el subndice
residuo
Codificacin:
void Par (int vector [ ], int n) { int i, num_par = 0; for (i=0; i<n-1; i++) { residuo = vector[ I ] % 2; if ( residuo == 0 ) num_par++; } printf(\n\n\n %i \t Son elementos pares, num_par); return; }
num_par, Son
elementos pares
Retornar
Cmo lo hace:? V. Salida: Nombre Tipo Descripcin sumaImpar entero Almacena la suma de todos los impares
Variable Entrada: No hay Restricciones: No hay Parmetros: Nombre Tipo Descripcin vec[ ] entero Almacena los elementos del vector n entero Almacena el nmero de elementos del vector
Ciclo II_2012
jmb-mrcp
Proceso:
sumaImpar = 0 residuo = vec[ i ] % 2 residuo != 0? Si: sumaImpar += vec[i] No: no hacer nada
Impar ( vec[i], n )
Variables de Proceso Nombre Tipo Descripcin i entero Almacena el nmero de elemento dentro
del vector, el subndice
sumaImpar =0
i = 0, n-1, 1
residuo = vec[i]% 2
residuo
void Impar (int vec [ ], int n) { int i, sumaImpar = 0; for (i=0; i<n-1; i++) { residuo = vec[ I ] % 2; if ( residuo != 0 ) sumaImpar += vec[ i]; } printf(\n\n\n %i \t Son elementos pares, sumImpar); return; }
residuo!=0
sumaIpar += vec[ i ]
Retornar
Ciclo II_2012
jmb-mrcp
Variable Entrada: Nombre Tipo Descripcin n entero Almacena el nmero de elementos del vector Restricciones: Parmetros: n<=100 No hay
Proceso: Mientras n<=0 && n> 100 Repetir: i=0, n-1, 1 Leer n error, Leer n dato[ i ] = leer par (dato, n) Impar(dato,n) Variables de Proceso Nombre Tipo Descripcin i entero Almacena el nmero de elemento dentro
del vector, el subndice
cant
Mientras cant<=0 && cant>100
cant
main() { int cant, i, dato[ 100 ]; puts(digite la cantidad de elementos); scanf(%i, &cant); while (cant<=0 && cant>100) { puts(Error, debe estar entre 1 y 100); scanf(%i, &cant); } for(i=1; i<=cant -1; i++) Dato[ I ] = Leer(); Par(dato, cant); Impar( dato, cant); getch(); return 0; }
Fin
Ciclo II_2012
jmb-mrcp
PROGRAMA COMPLETO: //Lee un vector, cuenta cuantos elementos son umeros pares // y suma todos los elementos impares #include<stdio.h> #include<conio.h> int Leer () //FUNCION QUE LEE UN NUMERO { int num; puts("Digite un numero entero y positivo"); scanf("%i", &num); while ( num<0) { puts("Error, debe ser mayor que 0"); scanf("%i", &num); } return num; } void Par (int vector [], int n) //FUNCION QUE CUENTA PARES { int i, residuo, num_par = 0; for (i=0; i<n; i++) { residuo = vector[ i ] % 2; if ( residuo == 0 ) num_par++; } printf("\n\n\n %i \t Son elementos pares", num_par); return; } void Impar (int vec [], int n) //FUNCIN QUE SUMA IMPARES { int i, residuo, sumaImpar = 0; for (i=0; i< n; i++) { residuo = vec[ i ] % 2; if ( residuo != 0 ) sumaImpar += vec[i]; } printf("\n\n\n La suma de todos los impares es:\t %i", sumaImpar); return; } main() // FUNCION PRINCIPAL { int cant, i, dato[100]; puts("digite la cantidad de elementos"); scanf("%i", &cant); while (cant<=0 && cant>100) { puts("Error, debe estar entre 1 y 100"); scanf("%i", &cant); }
Ciclo II_2012
jmb-mrcp
for(i=0; i<= cant-1; i++) dato[i] = Leer(); //la siguiente impression no aparece en el flujograma printf("\n\n\n vector: \n\n") ; for(i=0; i<= cant-1; i++) printf("%i \t", dato[i]); //Fin de impression extra Par(dato, cant); Impar( dato, cant); getch(); return 0; }
Programa 2.
// Lee e imprime un vector desde la primera a la ltima posicin #include <stdio.h> #include <conio.h> #define n 5 main() { int vec[n], i; for (i=0; i<n; i++) { printf("\n digite la posicin %i\t", i); scanf("%i", &vec[i]); while (vec[i]<0) { puts("Debe ser positivo, trate de nuevo"); scanf("%i", &vec[i]); } } //Impresin del vector printf("\n\n Elementos del vector, del primero al ultimo en una lnea\n\n"); for(i=0; i<n; i++) printf("\t %i",vec[i]); printf("\n\n en forma vertical\n"); for(i=0; i<n; i++) printf(" %i \n",vec[i]); printf("\n\nElementos del vector, del ultimo al primero\n"); for(i=n-1; i>=0; i--) printf("\n %i ",vec[i]); getch(); return 0; }
Ciclo II_2012
jmb-mrcp
Programa 3
// lee un vector desde la ultima posicin a la primera; lo imprime de varias formas #include <stdio.h> #include <conio.h> #define n 5 main() { int vec[n], i; for (i=n-1; i>=0; i--) { printf("\n digite la posicin %i\t", i+1); scanf("%i", &vec[i]); while (vec[i]<0) { puts("Debe ser positivo, trate de nuevo"); scanf("%i", &vec[i]); } } //Impresin del vector printf("\n\n Elementos del vector, del primero al ultimo en una lnea\n\n"); for(i=0; i<n; i++) printf("\t %i",vec[i]); printf("\n\n en forma vertical\n"); for(i=0; i<n; i++) printf(" %i \n",vec[i]); printf("\n\nElementos del vector, del ultimo al primero\n"); for(i=n-1; i>=0; i--) printf("\n %i ",vec[i]); getch(); return 0; }
Programa 4
//Lee 5 nmeros enteros , los imprime y determina cuantos son //negativos y la suma de los positivos. (Utilizando Modularidad) Ver en anexo el anlisis #include <conio.h> #include <stdio.h> #include <stdlib.h> int i; int num[5];
Ciclo II_2012
jmb-mrcp
void imprimir(int V[ ]) { for(i=0;i<=4;i++) { printf("\n El numero leido %i es :\t%i ",i+1,V[i]); } return ; } void negativos(int n[ ]) { int nn=0; for(i=0;i<=4;i++) { if(n[i]<=0) nn++; } printf("\n\nLa cantidad de numeros negativos es de: %i \n",nn) ; return ; } void sum_positivos(int n[ ]) { int sp=0; for(i=0;i<=4;i++) { if(n[i]>0) sp=sp+n[i]; } printf("\n\nLa suma de los numeros positivos es: %i \n",sp) ; return ; } int main() { int V[5]; int num[5]; for (i=0;i<=4;i++) { printf("\n Digite el valor del numero %i: ",i+1) ; scanf("%i",&num[i]); } system("cls"); imprimir(num); negativos(num); sum_positivos(num); getch(); return 0; }
Ciclo II_2012
jmb-mrcp
10
Programa 5
//Calcular el promedio de ventas y reportar almacenes que lo sobrepasan #include <conio.h> #include <stdio.h> #include <stdlib.h> float promedio (float A[]) { float suma=0, Pro ; int j ; for (j=0; j<5; j++) suma += A[j] ; Pro = suma /5 ; return Pro; } main () { float Vta[5], prom ; int i ; for(i=0; i<10; i++) { printf("\n Introduzca la venta mensual para el almacen %i: $",i+1) ; scanf("%f", &Vta[i]) ; while (Vta[i]<= 0) { printf("\n ERROR... Debe ser positiva: $"); scanf("%f", &Vta[i]) ; } // Cierre de mientras } // Cierre de for prom = promedio (Vta) ; system("cls"); printf("\n\n El Promedio de las Ventas es: $%.2f \n\n", prom) ; for(i=0; i<5; i++) { if ( Vta[i] > prom) { printf("\n El Almacen %i supera el Promedio de Ventas ",i+1) ; printf("\n La Venta mensual del Almacen %i es: $%.2f\n", i+1, Vta[i]); } } printf("\n\n"); system("pause"); } // Fin de main
Ciclo II_2012
jmb-mrcp
11
Programa 6
//Calcula la edad promedio de 5 alumnos y reporta al de mayor edad #include <conio.h> #include <stdio.h> #include <stdlib.h> main () { int edad[5]; float eProm ; int mayor=-1, num, i ; int sum=0; for (i=0; i<5; i++) { printf("\n Digite la edad del estudiante %i: ",i+1) ; scanf("%i", &edad[i]); while (edad[i]<= 0) { printf("\n Debe ser positiva: "); scanf("%i", &edad[i]) ; } sum = sum + edad[i]; if (edad[i] > mayor) { mayor = edad[i]; num = i; } } // for eProm = sum/5; system("cls"); printf("\n\nEdad Promedio: %.2f \n", eProm) ; printf("\n\nEdad Mayor: %i \n", mayor) ; printf("\n\nNumero del Estudiante de Edad Mayor: %i \n\n\n", num+1) ; system("pause"); } // Fin de main
Ciclo II_2012
jmb-mrcp
12
PARTE II Los siguientes programas tienen errores, que usted debe depurar para que funcionen correctamente. Guardarlo como g3A_ejem#.cpp, respectivamente. Recuerde comentar los errores corregidos
Programa 7 // lee un vector desde la ultima posicin a la primera; lo imprime de varias formas #include <stdio.h> #include <conio.h> #define n 5 main() { int vec[n], i, s5, sum=0; float prom; for (i=0; i<n; i++) { //Lectura del vector printf("\n digite la posicin %i\t", i); scanf("%i", vec[i]); while (vec[i]>0) { puts("Debe ser positivo, trate de nuevo"); scanf("%i", &vec[i]); } } //Calcula el promedio de los elementos for (i=0; i<n; i++) sum+=vec[i] prom=sum/n; printf ("\n\n EL PROMEDIO ES: \t %.3f\n\n", prom); // Cuantos datos son mayores que 5 puts("Subindices o posiciones de los elementos >5 y dichos elementos son"); for(i=0; i<n; i++) if ( vec[i] > 5) { s5= s5+vec[i]; printf("\t %i \t %i\n", i, vec[i]); } printf("\n\n\n El numero de elementos >5 son:\t", s5); getch(); return 0; }
Ciclo II_2012
jmb-mrcp
13
Programa 8 // Cuenta caracteristicas de peso y sexo de un grupo de n personas #include <stdio.h> #include <conio.h> #define n 5 main() { int peso[n], sexo[n]; int pesaditas=0, hombres=0; float prom for (i=0; i<n; i++) { //Lectura del vector peso printf("\n digite el peso de la persona %i\t", i+1); scanf("%i", &peso[i]); while (peso[i]<0) { puts("Debe ser positivo, trate de nuevo"); scanf("%i", &peso[i]); } } for (i=0; i<n; i++) { //Lectura del sexo printf("\n digite el sexo 1: femenino y 2: masculino de la persona %i\t", i+1); scanf("%i", &sexo[i]); while (sexo[i]!=1 && sexo[i]!=2) { puts(Debe ser positivo, trate de nuevo; 1: femenino y 2: masculino); scanf("%i", &peso[i]); } } contadores(peso[], sexo[]); getch(); return 0; } void contadores(int p[], int sex[]); { // Calcula cuantas mujeres pesan ms 135 lbs., y los hombres del grupo int x, pesaditas=0, hombres=0; for (x=0; x<n; x++) { if (sex[x] == 1) { if (p[x]>135) pesaditas++; } else hombres++; } printf("\n\n El numero de mujeres con mas de 135 libras es: \t %i", pesaditas); printf("\n\n El nmero de hombres en el grupo de personas es:\t %i", hombres); return; }
Ciclo II_2012
jmb-mrcp
14
Programa 9 //Programa BubbleSort (Con Mdulos):Ordena 5 numeros enteros utilizando el Metodo de la Burbuja #include <conio.h> #include <stdio.h> #include <stdlib.h> main () { const int n=5; int a[n]; int j; printf("Digite los elementos del vector:\n"); for (j=0; j<n; j++) { printf("a[%i]: ",j) ; scanf("%i", &a[j]); } printf("\nVector Original Desordenado:\n"); for (j=0; j<n; j++) { printf("a[%i]: %i\n",j,a[j]) ; printf("\n\n\n"); system("pause"); } orden(a, n); getch(); } // main void orden (int v[], int n1) ; { int c=1, i, x; while (c!=0) { c=0; for (i=0; i<=n1-2; i++) { if (v[i] > v[i+1]) { x = v[i]; v[i] = v[i+1]; v[i+1] = x; c=1;
Ciclo II_2012
jmb-mrcp
15
} } } printf("\nVector Ordenado Ascendentemente:\n"); for (i=0; i<=n1-1; i++) { printf("v[%i]: %i\n",i,v[i]) ; printf("\n\n\n"); system("pause"); } return;
PARTE III Completar un programa, o agregar funciones a un programa ya existente, para que realice otros clculos. Guardarlo como g3_ejem#.cpp, respectivamente.
Programa 10 Tomando como base el ejercicio 4, disee las siguientes funciones o mdulos: Una que ordene en forma ascendente los valores ledos Una para que acumule los nmeros pares ledos Una que imprima los valores de las posiciones pares Una que acumule los valores almacenados en las posiciones impares
Programa 11 Disee cinco funciones para el programa 8: Una para contar las personas que pesan menos de 120 lbs. Una que calcule el promedio de pesos de mujeres. Una que imprima el peso menor y diga de que sexo es. Ordene los datos, de mayor a menor segn el peso. Que imprima el peso y sexo correspondiente a las posiciones pares, iniciando con cero(0,2,) Agregue estas al programa 4 y prubelo. Agregue un men a la funcin principal para elegir cul de todas las funciones desea utilizar.
Ciclo II_2012
jmb-mrcp
16
Seccin A
1. Disee un programa que lea 100 nmeros enteros y positivos. Despus debe leer otro valor (con las mismas caractersticas) y contar e imprimir la cantidad de veces que aparece en el vector. Se tiene un vector de 50 elementos se necesita saber si todos son positivos o negativos. Para ello se le pide que disee un programa que imprima CIERTO si todos son positivos, FALSO si todos son negativos y, MIXTO si el vector tiene elementos positivos y negativos. En un vector de 25 elementos, se desea buscar un dato que ser ledo. Disee un programa que imprima el mensaje: VALOR ENCONTRADO, si en efecto el valor buscado ya se encuentra entre los elementos, y la posicin o subndice donde se encontr la primera vez. Si el valor no se encuentra, se debe sustituir el valor menor por el buscado, imprimiendo el elemento que sale del vector y la posicin que ocupaba. Disee un programa que lea dos vectores de igual magnitud o dimensin y luego los compare. Se debe de imprimir los dos vectores y un mensaje que indique si son iguales o no. Dos vectores son iguales si cada elemento del primer vector se encuentra exactamente en la misma posicin en el segundo. Disee un programa que almacene en un vector los 50 primeros nmeros primos. Se debe imprimir todo el vector generado.
2.
3.
4.
5.
Seccin B
UTILICE MODULARIDAD EN LOS SIGUIENTES EJERCICIOS: 6. Se tiene dos vectores a[20] y b[20] disee un programa que calcule e imprima los vectores s[20] y d[20]; sabiendo que: s[i] =a[i]+b[i] d[i] = a[i] b[i] Se necesita conoce la frecuencia de cada uno de los elementos de un vector de n elementos. Por ejemplo: Considere el siguiente vector
0 1 2 3 4 5 6 7 8 9
7.
vec
Salida requerida:
0 1 2 3 4 5 6 7 8 9
Vec1
6
0
7
1
5
2
4
3
3
4
2
5 6 7 8 9
frecuencia 3
Ciclo II_2012
jmb-mrcp
17
8.
Disee un programa que reciba como entrada un arreglo y que realice lo siguiente: Imprima el vector inicial Ordene de mayor a menor Imprima los elementos del vector sin repeticiones Se desea conocer la siguiente informacin de una empresa: Imprimir toda la nmina de empleados ordenados por un nmero correlativo. Cuantos empleados ganan ms de $1500.00 Cuntos entre $850.00 y $1500.oo Cuantos menos de $850.00 Porcentaje de empleados con salarios menores de $850.oo Porcentaje de empleados cuyo salario oscila entre $850.oo y $1000.oo Porcentaje de empleados con salario mayor a $1000.oo Disee el programa correspondiente utilizando arreglos. Disee un programa que mediante un men de opciones permita insertar o eliminar un elemento en un vector. Lo primero que debe de hacer es ordenar el vector inicial de menor a mayor e imprimirlo. En cada modificacin se debe de imprimir el nuevo vector, y desde luego verificar su ordenamiento. Un profesor tiene las notas de sus 30 alumnos y necesita conocer la nota promedio y el total de notas mayores de que el promedio. Disee un programa para ayudarle al profesor. Tomando en cuenta la categora y el salario de un empleado, disee un programa que calcule el aumento correspondiente de varios empleados de acuerdo a la siguiente tabla: Categora 1 2 3 4 Aumento 20 15 10 7
9.
10.
11.
12.
Debe imprimirse el nombre, la categora y el nuevo salario del empleado, asi como el total de la planilla mensual.
ANEXO.
Programa 4
Disee un Programa que lea 5 nmeros enteros, que los imprima y que determine cuantos son negativos y la suma de los positivos.
Ciclo II_2012
jmb-mrcp
18
I.
Valores enteros de 5 nmeros II. TOP DOWN Grandes pasos o cosas que hacer: 1. 2. 3. 4. Leer datos Imprimir datos Calcular cantidad de negativos Calcular la suma de los positivos Principal
Impresin de cada nmero ledo Cuantos son negativos Suma de los nmeros positivos
imprimir III.
negativos
sum_positivos
APLICACIN DE LA METODOLOGIA PARA RESOLVER PROBLEMAS (por mdulo) a) MODULO Imprimir Qu hace? Imprime los datos ledos Entrada de datos Salida de datos
. Numero ledo
Ciclo II_2012
jmb-mrcp
19
Variables de Entrada: No hay, recibe como parmetro el vector de los nmeros ledos. Parmetros: V[ ] : Vector con nmeros ledos en el modulo principal. Nombre Tipo Descripcin V[ ] entero Vector con los datos ledos
Constantes: No existen. Restricciones: No hay Proceso: No hay Variables de Proceso: No hay Diseo de Solucin Sub-flujograma: imprimir (V[ ])
i = 0, 4, 1
V[i]
Retornar
b)
MODULO negativos Qu hace? Recibe los datos ledos, evala y cuenta los nmeros negativos, e imprime el resultado Entrada de datos Salida de datos
Cmo lo hace?
Ciclo II_2012
jmb-mrcp
20
Variables de Salida: Nombre Tipo Descripcin nn entero Tipo contador, que cuenta los nmeros enteros negativos ledos Donde: Vi = 0, Vf = ?, Vc = 1 Variables de Entrada: No hay, recibe como parmetro el vector de los nmeros ledos. Parmetros: n[ ] : Vector con nmeros ledos en el mdulo principal. Nombre Tipo Descripcin n[ ] entero Vector con los datos ledos Constantes: No existen. Restricciones: No hay Proceso: nn = 0 Repetir: Desde i=0 hasta i<=4 Imprimir: nn Variables de Proceso: No hay Diseo de Solucin Sub-flujograma: negativos (n[ ])
nn=0 i = 0, 4, 1 No n[ i ] <=0 Si
nn++
nn
Retornar
Ciclo II_2012
jmb-mrcp
21
c)
MODULO sum_positivos Qu hace? Recibe datos ledos, evalua, acumula los datos positivos e imprime el resultado Entrada de datos Salida de datos
entero Tipo acumulador, que suma los nmeros enteros positivos ledos Donde: Vi = 0, Vf = ?, Vc = n[i]
Variables de Entrada: No hay, recibe como parmetro el vector de los nmeros ledos. Parmetros: n[ ] : Vector con nmeros ledos en el modulo principal. Nombre n[ ] Tipo Descripcin
Constantes: No existen. Restricciones: No hay Proceso: sp = 0 Repetir: Desde i=0 hasta i<=4 Imprimir: sp Variables de Proceso: No hay
Ciclo II_2012
jmb-mrcp
22
sp= 0
i = 0, 4, 1
No
n[ i ] > 0
Si sp= sp+n[i]
sp
Retornar
d)
MODULO Principal Qu hace? Lee 5 nmeros enteros Entrada de datos Salida de datos
posiciones del vector de enteros Cmo lo hace? Variables de Salida: No se necesitan Variables de Entrada: Nombre Tipo Descripcin num[5 ] entero Vector de 5 posiciones que almacena cada dato ledo
Ciclo II_2012
jmb-mrcp
23
Repetir: Desde i=0 hasta i<=4 imprimir(num) negativos(num) sum_positivos(num) Variables de Proceso: No hay
Leer num[i]
Reservar : num[5]
i = 0, 4, 1
num[ i ]
Fin
Ciclo II_2012
jmb-mrcp
24
Programa 8 Disee un programa que lea el peso y sexo de 5 personas y que cuente e imprima: El nmero de mujeres que pesan ms de 135 libras Nmero de hombres que hay en el grupo.
Solucin:
Planteamiento General del problema: Entrada Salida
Peso de cada persona Edad de cada persona Nmero de personas (5) Top Down Principal
Contadores Mdulo Contadores: Que hace?: Cuenta e imprime el nmero de mujeres que pesan ms de 135; y los hombres que hay en el grupo de personas. Entrada Salida
Recibe Peso de cada persona Edad de cada persona Nmero de personas (5)
Como lo hace? Variables de Salida: Nombre Tipo Descripcin pesaditas Entero Contador de mujeres que pesan ms de 135 libras. Vi=0, Vf=? Vc=1 hombres Entero Cuenta el nmero de personas de sexo masculino que hay en el grupo Vi=0; Vf=? Vc=1 Variables de Entrada: No hay Restricciones. No hay
Ciclo II_2012
jmb-mrcp
25
Descripcin Vector de n(5) posiciones que almacena el peso de cada persona Vector de n posiciones que guarda el sexo de cada persona, 1: femenino y 2: masculino. n es una constante y su valor es 5 Proceso: pesaditas = 0 hombres = 0 Desde x=0, n, 1 sexo[x] == 1? Si: peso[x] >135? Si: pesaditas = pesaditas + 1 No: No se hace nada No: hombres = hombres +1
Variables de Proceso: Nombre Tipo Descripcin x Entero Contador de personas, de uno en uno. Vi=0; Vf=n; Vc=1
Ciclo II_2012
jmb-mrcp
26
Subflujograma Contadores:
Contadores(p[ ],sex[ ])
sex[x]==1
Si
p[x]==135
hombres++
Si pesaditas++
Retornar
Mdulo principal. Qu hace?: Lee el peso y el sexo de 5 personas, invoca a contadores y enva como parmetros: tanto el peso como el sexo. Entrada Salida
Lee Peso de cada persona Edad de cada persona Nmero de personas (5)
Ciclo II_2012
jmb-mrcp
27
Como lo hace? Variables de Salida: No se necesitan Variables de Entrada: Nombre Tipo Descripcin peso[ n ] Entero Vector de n(5) posiciones que almacena el peso de cada persona sexo[ n ] Entero Vector de n posiciones que guarda el sexo de cada persona, 1: femenino y 2: masculino. El nmero de personas (5) se considera constante Restricciones: peso[i] >0 y sexo[I]==1 sexo[i]==2 siempre que i = 0,1,2,3,4
Valor 5
Parmetros: No existen Proceso: n=5 //constante Error, intente de nuevo Leer peso [i]
Leer sexo[i] Error, intente de nuevo Leer sexo [i] Contadores(peso, sexo)
Ciclo II_2012
jmb-mrcp
28
Flujograma Principal:
Inicio
i=0,n,1 i=0,n,1
Digite el peso de la persona: , i
peso[i] sexo[i]
Mientras peso[i]<=0 Error, Intente de nuevo Mientras sexo[i] !=1 && sexo[i] != 2
peso[i]
sexo[i]
Contadores(peso, sexo)
Fin
Ciclo II_2012
jmb-mrcp
29