You are on page 1of 29

UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERA Y ARQUITECTURA ESCUELA DE INGENIERA DE SISTEMAS INFORMTICOS PROGRAMACIN I Ciclo II_2012

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:

Parte I: Parte II: Parte III. Parte IV:

Programas sin errores. Programas con errores. Aplicar Modularidad a 2 programas (1 de la Parte I y de la Parte II). Ejercicios propuestos.

Metodologa de trabajo: Semana 1:

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

Nmero de datos Elementos del vector

Nmero de elementos pares Suma de todos los impares.

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

Que hace: Lee y valida un nmero entero y positivo Entrada Salida

LEE Un nmero positivo

entero

RETORNA El numero ledo.

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 ()

Digite un numero positivo

num
Mientras (num<=0)
Error, debe ser mayor que 0 numero

num

Retornar num

Qu Hace?: Calcula la cantidad de elementos pares y la imprime. Entrada Salida

RECIBE El vector con sus elementos positivos El nmero de datos

IMPRIME El nmero pares

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:

num_par = 0 residuo= vecto[ i ] % 2 residuo == 0? Si: num_par++ No: no hacer nada

Repetir: I=0, n-1, 1

residuo==0

num_par ++

Variables de Proceso Nombre Tipo Descripcin i entero Almacena el nmero de elemento dentro
del vector, el subndice

residuo

entero Almacena el residuo de la divisin entera

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

Qu Hace?: Calcula la suma de todos elementos impares y la imprime. Entrada Salida

RECIBE El vector con sus elementos positivos El nmero de datos

IMPRIME La suma de los elementos pares

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

Repetir: i=0, n-1, 1

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

entero Almacena el residuo de la divisin entera

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 ]

La suma de toos los pares es:sumaImpar

Retornar

Qu Hace?: Calcula la suma de todos elementos impares y la imprime. Entrada Salida

RECIBE Los datos del vector LEE El nmero de datos

ENVIA El vector El nmero de elementos

Ciclo II_2012

jmb-mrcp

Cmo lo hace:? V. Salida: No hay, Solo enva parmetros


Inicio

Variable Entrada: Nombre Tipo Descripcin n entero Almacena el nmero de elementos del vector Restricciones: Parmetros: n<=100 No hay

Reservar en memoria dato[100]


digite el nmero de datos

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

Error debe estar entre 0 y 100

cant

i = 0, cant-1, 1 dato[ i ] = Leer()

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; }

Par( dato, cant )


Impar( dato, cant )

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.

Ver DOCUMENTACION en anexo, pgina 18. PARTE IV Ejercicios propuestos:

Guardarlo como g3A_prob#.cpp, respectivamente.

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.

PLANTEAMIENTO DEL PROBLEMA Entrada de datos Salida de datos

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

. Recibe el numero ledo

. Numero ledo

Cmo lo hace? Variables de Salida: Nombre V[ ] Tipo Descripcin

entero Vector que almacena los datos ledos

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

. Recibe los nmeros ledos

. Cantidad de nmeros negativos

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

n[i] <= 0? Si: nn++

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

. Recibe los nmeros ledos

. suma de nmeros positivos

Cmo lo hace? Variables de Salida: Nombre sp Tipo Descripcin

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

entero Vector con los datos ledos

Constantes: No existen. Restricciones: No hay Proceso: sp = 0 Repetir: Desde i=0 hasta i<=4 Imprimir: sp Variables de Proceso: No hay

n[i] > 0? Si: Sp=sp+n[i]

Ciclo II_2012

jmb-mrcp

22

Diseo de Solucin Sub-flujograma: sum_positivos (n[ ])

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

. Lee cada una de las 5

Envia . El valor de cada numero

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

Constantes: No existen. Restricciones: No hay Parmetros: No existen Proceso:

Repetir: Desde i=0 hasta i<=4 imprimir(num) negativos(num) sum_positivos(num) Variables de Proceso: No hay

Leer num[i]

Diseo de Solucin Sub-flujograma: Inicio

Reservar : num[5]

i = 0, 4, 1

Digite un numero entero

num[ i ]

imprimir (num) negativos (num) sum_positivos (num)

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

Cuntas mujeres pesan ms 135 libras Cuntos son hombres

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)

Imprime Cuntas mujeres pesan ms 135 libras Cuntos hombres son

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

Parmetros: Nombre Tipo p[ n ] Entero sex[ n ] Entero

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[ ])

pesaditas=0 hombres=0 x=0,n,1

sex[x]==1

Si
p[x]==135

hombres++

Si pesaditas++

El nmero de mujeres con ms de 135 lbs es: pesaditas

En el grupo hay:, hombres, personas de sexo masculino

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)

Enva El peso de cada persona El sexo de cada persona

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

Constantes Simblicas Nombre Tipo Descripcin n Entero Nmero de personas

Valor 5

Parmetros: No existen Proceso: n=5 //constante Error, intente de nuevo Leer peso [i]

Leer peso[i] Mientras peso[i]<=0 Desde i=0, n, 1

Leer sexo[i] Error, intente de nuevo Leer sexo [i] Contadores(peso, sexo)

Mientras sexo[i] !=1 && sexo[i] !2

Ciclo II_2012

jmb-mrcp

28

Flujograma Principal:

Inicio

n=5 Reservar: peso[n], sexo[n]


1

i=0,n,1 i=0,n,1
Digite el peso de la persona: , i

Digite el sexo: 1:masculino 2:femenino

peso[i] sexo[i]
Mientras peso[i]<=0 Error, Intente de nuevo Mientras sexo[i] !=1 && sexo[i] != 2

peso[i]

Error 1: masculino 2: femenino

sexo[i]

Contadores(peso, sexo)

Fin

Ciclo II_2012

jmb-mrcp

29

You might also like