Vous êtes sur la page 1sur 10

Computación II / Informática II – Problemas sin Funciones

COMPUTACION II
INFORMATICA II
Ingeniería Electrónica y Bioingeniería

Guía de Práctica Nº 1
Problemas resueltos y propuestos
sin utilizar funciones

Departamento de Electrónica y Automática


Facultad de Ingeniería

Universidad Nacional de San Juan


Computación II/Informática II – Problemas sin Funciones

PROBLEMAS SIN FUNCIONES ANALIZANDO MEDIANTE UN CONJUNTO DE


DE DATOS DE PRUEBA
PROBLEMA 1:
Escribir un algoritmo que permita leer un valor entero y un real, que calcule y muestre la potencia del
valor real elevado al valor entero, utilizando la técnica de productos sucesivos para la potenciación.

Se desarrollo el siguiente programa en lenguaje C para cumplir con lo pedido en el ejercicio


anterior.

#include <stdio.h>

void main(void) {
int base, nro_repetic;
float exp, prod=1

printf ("\n Ingrese el valor de la base: ");


scanf ("%f", &base);
printf ("\n Ingrese el valor del exponente: ");
scanf ("%d", &exp);
for(nro_repetic=1;nro_repetic <=exp; nro_repetic++) {
prod*=base; // (comentario) Equivale a colocar prod=prod*base;
printf ("\n\n\t\tEn la repeticion: %d", nro_repetic);
printf ("\n\t\tEn esta vuelta el valor de producto corresponde:%f",
prod);
}
printf ("\n\n El valor de la base elevado al exponente es: %d", prod);

getch();
}

Por teclado se debe ingresar el conjunto de datos de entrada: base y exponente, mediante las
dos variables declaradas en el ambiente: base y exp. Si bien el resultado final se muestra a
partir de la variable de salida prod, esta variable sufre ciertos cambios de valores a medida que
corre el programa editado en C. Por pantalla se muestra toda la evolución. Por lo que se podría
utilizar

Para observar los datos a medida que corre el programa, la idea es mostrar como evolucionan
las variables mientras corre el programa. Se propone el siguiente conjunto de datos de prueba
para verificar el funcionamiento:

Si se toma como base 2 (variable base=2 ingresada por teclado) y exponente 6 (variable exp=6
ingresada por teclado). El resultado final será de 26=64 (variable prod=64 que se muestra por
teclado).

La siguiente tabla muestra el conjunto de datos de prueba:

2
Computación II/Informática II – Problemas sin Funciones

base exp nro_repetic prod


2 6 1 2
2 6 2 4
2 6 3 8
2 6 4 16
2 6 5 32
2 6 6 64

Los valores de esta tabla se pueden ver por pantalla de salida cuando se ejecuta el programa
desarrollado en C previamente compilado.

De esta manera se puede verificar que los datos obtenidos en el programa diseñado coinciden
con los datos calculados antes de hacer correr el programa en C.

PROBLEMAS PROPUESTOS SIN FUNCIONES


Problema 1:
Leer datos hasta que se llegue a 1000 elementos o que el dato ingresado sea igual a –50. Calcular
e imprimir:
a) La cantidad de elementos ingresados
b) El porcentaje de elementos pares.
c) El promedio de todos los datos ingresados, excluyendo si se ingresa el –50.
Nota: Recordar que el operador %(módulo) se usa para obtener al resto de la división entera.

La resolución del problema 1 es:

3
Computación II/Informática II – Problemas sin Funciones

#include <stdio.h>
#include <stdlib.h>
main() {
int dato=0, conttotal=0, contpa=0, sum=0;
float porc, prom;

printf ("\n Ingrese el dato: ");


scanf ("%d", &dato);
while ((dato!=-50)&&(conttotal!=10)) {
conttotal++;
if (dato%2==0){
contpa++;
}
sum+=dato;
printf ("\n Ingrese el dato: ");
scanf ("%d", &dato);
}
printf ("\n La cantidad de elementos es: %d", conttotal);
if (conttotal!=0) {
porc=(float)(contpa*100)/conttotal;
prom=(float)sum/conttotal;
}
printf ("\n El porcentaje de los pares es: %1.2f % ", porc);
printf ("\n El promedio de los datos ingresados es: %1.2f % \n", prom);
system("PAUSE");
}

Hacer un análisis del funcionamiento del algoritmo mediante un conjunto de datos de prueba,
completando los valores de la tabla, tal como el ejemplo modelo .

dato conttotal contpa sum porc prom


2
17
26
122
1
45
-50

Problema 2
Un conjunto de pintores requiere que sus pinturas tengan una densidad entre 100 y 120 unidades
inclusive para ser aceptadas, si la densidad no está comprendida en el rango especificado se
considera como rechazada. Se deben ingresar los valores de densidad correspondientes a N
muestras de pintura y la primer letra del color que corresponde. Se solicita calcular e imprimir:
a) La cantidad de muestras de pintura rechazadas.
b) El promedio de densidad de las muestras aptas para la aplicación.
c) La cantidad de muestras de color blanco que sean aptas.

Problema 3
Realizar un algoritmo que permita leer un valor R y un conjunto de N números reales (máximo 100),
y que calcule y escriba:
4
Computación II/Informática II – Problemas sin Funciones

a) La cantidad de valores mayores que el primero ingresado.


b) El promedio de los valores positivos menores que R.
c) El porcentaje de valores positivos pares.

Problema 4
Una fábrica de botellas requiere que el espesor del vidrio de sus productos esté comprendido en el
rango de 1,1 y 1,5mm. Leer como máximo 1000 valores de espesor o terminar la lectura si el valor
ingresado es negativo. Calcular e imprimir:
a) La cantidad de botellas que no cumplen la especificación.
b) El promedio de espesor de las botellas que cumplen la especificación.
c) Mostrar el mayor espesor de los productos ingresados.

La resolución del problema 4 es:


#include <stdio.h>
#include <stdlib.h>

main() {
int cont=0, cont_rechaz=1;
float prom, espesor, suma=0, max_espesor=-1;
printf ("\nIngrese el espesor: ");
scanf ("%f", &espesor);
while (((espesor)>=0)&&((cont)<9)) { /*Solo se ingresan un máximo de 9 datos*/
cont++;
if (((espesor)<(1.1))||((espesor)>(1.5))) {
suma += espesor;
cont_rechaz++;
if (espesor > max_espesor) {
max_espesor = espesor;
}
}
printf("\nIngrese el espesor: ");
scanf("%f",&espesor);
}
if (cont>0) {
printf("\nBotellas que no cumplen con la especificacion es: %d",
cont_rechaz);
if (cont_rechaz>0) {
prom=(float)suma/cont_rechaz;
} else prom=0;
printf ("\nEl promedio de las botellas rechazadas es: %f", prom);
printf ("\n El mayor espesor de las rechazadas es: %f\n\n", max_espesor);
}
else {
printf ("\n No se ingresaron valores para poder procesar \n \n ");
}
system("PAUSE");
}

5
Computación II/Informática II – Problemas sin Funciones

d) Hacer un análisis del funcionamiento del algoritmo mediante un conjunto de datos de prueba,
completando los valores de la tabla, tal como el ejemplo modelo .

espesor cont max_espesor suma cont_rechaz prom


1
2
3
4
5
6
-1.00

Problema 5
Se debe realizar un algoritmo que permita ingresar datos que representan el largo y el diámetro
de barrotes de acero. El ingreso de información termina cuando se leen 250 barrotes o cuando el
largo o el diámetro ingresado es negativo. Se pide:
a) Determinar y mostrar el máximo valor del largo ingresado.
b) Mostrar el mensaje “Barrote aceptado” cuando el diámetro este entre 10 y 11 y su largo entre
110 y 115, en caso contrario el mensaje “Barrote rechazado”.
c) Mostrar el promedio de los diámetros de los barrotes considerados buenos.

Problema 6
Ingresar un conjunto de N números, donde N sea impar. Si N es par no se debe permitir la carga de
datos hasta que se ingrese N impar. Determinar y mostrar:
a) La cantidad de datos impares comprendidos entre –10 y 10.
b) Mostrar los datos pares que sean distintos de 2 y 4.

Problema 7
En un censo de pacientes se debe realizar el siguiente procesamiento de la información. Por cada
paciente se debe ingresar su edad y su peso. La lectura finaliza cuando se introduzca un peso
negativo o cuando la cantidad de pacientes supere los 400. Calcular y mostrar:
a) La cantidad de pacientes cuya edad este comprendida entre 7 y 11 años inclusive.
b) De los pacientes que verifican el punto a) calcular el porcentaje sobre este rango de aquellos
que su peso supera los 50kg.
c) El paciente con menos peso y su edad.

Problema 8
Leer un conjunto de números enteros hasta que la cantidad de datos supere los 300 o el último
dígito del dato ingresado sea cero. Calcular y mostrar:
a) El promedio de los datos pares de orden par.
b) El porcentaje de elementos múltiplos de 3 de los primeros 40 datos siempre que sea posible.

Problema 9
En un censo de pacientes se debe realizar el siguiente procesamiento de información. Por cada
paciente, se debe ingresar su edad y su altura. La lectura finaliza cuando se introduzca una altura
inferior a 1,20 metros o cuando la cantidad de pacientes supere los 200. Calcular y mostrar:
a) El promedio de edad de aquellos pacientes cuya altura esté comprendida entre 1,50 y 1,75
metros inclusive.

6
Computación II/Informática II – Problemas sin Funciones

b) El porcentaje de pacientes cuya altura no supere 1,60 metros y cuya edad esté comprendida en
los rangos de 10 a 15 años y de 30 a 35 años.
c) El paciente con mayor altura y su edad correspondiente.

Problema 10
Leer un conjunto de números enteros (máximo 1000) hasta que se ingresen dos datos consecutivos
iguales a cero. Calcular y mostrar:
a) El promedio de valores positivos leídos en posición impar.
b) La cantidad de datos pares ubicados entre las posiciones 10 y 32 inclusive siempre que sea
posible.

Problema 11
Una empresa que fabrica vasos desea controlar la calidad de sus productos. Para esto se toma una
muestra de X vasos de la producción total. Para que un vaso se considere de buena calidad, su
altura deberá estar comprendida en el rango de 10cm ± 5% y su peso superior a los 40 gramos o
cuando su volumen esté comprendido en el rango 125 a 176cm3. Por cada vaso se debe ingresar la
altura, peso y volumen. Calcular y mostrar:
a) El porcentaje y el promedio del volumen de vasos de buena calidad.
b) El promedio de altura de aquellos vasos que cumplen la condición sobre dicha altura.
c) Suponiendo una producción total de 5x106 vasos, ¿Cual será la cantidad de vasos buenos a ser
comercializados?

Problema 12
Una fábrica de espirales desea controlar la calidad de sus productos. Para esto, toma una muestra
de X espirales de la producción total. Un espiral se asume bueno (bien fabricado) cuando:
• La cantidad de vueltas es igual a 8.
• El largo es de 60cm con un error de ±1cm.
• El peso es de 20gr con un error de ± 0,5gr.
Un parámetro de producción específica que si más del 20% de la muestra corresponde a elementos
defectuosos, toda la muestra se considera mala o no representativa. Informar cual es la cantidad de
espirales que no pasan el control de calidad y también su porcentaje, solo si la muestra es buena.

Problema 13
Una empresa de cables trenzados desea controlar la calidad de sus productos. Para ello se ha
pedido un algoritmo que lea datos relevantes de la producción. El cable producido se obtiene
trenzando dos cables, los que deben cumplir con las siguientes condiciones para formar un cable
trenzado bueno:
• Resistencia eléctrica entre extremos del rollo es de 100Ω ± 10%.
• Aislamiento eléctrico mayor a 10kV.
En el caso en que alguno de los cables formantes no cumpla con una sola de las especificaciones
anteriores, el cable trenzado debe ser marcado como de segunda calidad. Si ambos cables
formantes dejan de cumplir con alguna de las dos especificaciones, el cable debe ser marcado
como malo. El ingreso de datos finaliza cuando se ingresa un valor de resistencia nulo. Mostrar:
a) Cantidad de cables analizados.
b) Porcentaje de cables de primera y segunda calidad.
c) Promedio de la resistencia de los cables de la producción total.

7
Computación II/Informática II – Problemas sin Funciones

Problema 14
Una fábrica de pulloveres utiliza cierta calidad de lana para sus tejidos. La información más
relevante de la calidad de cada ovillo es:
• Porcentaje de poliéster.
• Gramos / metros.
Realizar un programa que realice la siguiente operación:
a) Leer los datos de un lote de ovillos hasta que los gramos / metros sean iguales a 10 ó el
porcentaje de poliéster se encuentre comprendido entre 50 y 60.
b) Calcular y mostrar el promedio de gramos / metros de la muestra.
c) Averiguar y mostrar el promedio de los “porcentajes de poliéster” para cada uno de las
siguientes calidades.
• Primera calidad: Porcentaje de poliéster entre 0 y 10%, gramos / metros entre 45 y 50.
• Segunda calidad: Porcentaje de poliéster entre el 10 y 30%, gramos/metros entre 35 y 45.
• Mala calidad: cualquier otro caso.

Problema 15
Se desea procesar la información del tipo de mercadería proveniente de los camiones de una
empresa que realiza entregas a domicilio. Para ello se cuenta con la siguiente información cada
paquete:
• Código de identificación del paquete (entero corto)
• forma de entrega del paquete (carácter: ‘i’ inmediata, ‘m’ moderada, ‘c’ corriente),
• peso del paquete (en gramos),
• distancia que recorrió (en Km).
Se pide que se ingrese información hasta que se tenga un peso negativo o la distancia sea mayor a
3000 Km. con entrega corriente. Se pide que:
a) El promedio de peso de paquetes a entregar con peso mayor a 4000 gramos y que no necesiten
entregarse en forma inmediata.
b) Indicar por pantalla aquellos paquetes que no recorrieron larga distancia (menor a 12Km), y con
código de identificación entre 150 y 215.
c) ¿Qué forma de entrega de paquetes se realiza con mayor frecuencia Indique el porcentaje
sobre el total de paquetes entregados.
d) Cuanto se recaudo en total, sabiendo que el precio base es de $2, agregándose $0,10 por cada
3Km y $0,05 por cada 100grs de exceso al peso límite sin cargo de unos 200grs.

La resolución del problema 15 es:


#include <stdio.h>
#include <stdlib.h>
main() {
int codigo,conttotal=0,contpeso=0,contI=0,contM=0,contC=0;
float peso, prom, porc, dist, sumapeso=0,recaud=0,agregoKm,agregoKg;
char formae;

printf ("\nIngrese peso: \n ");


scanf ("%f", &peso);
printf ("\nIngrese distancia: \n ");
scanf ("%f", &dist);
fflush(stdin);
printf ("\nIngrese forma de entrega: \n ");
scanf ("%c", &formae);

8
Computación II/Informática II – Problemas sin Funciones

while ((peso>0)&&((dist<3000)||(formae !='c'))) {


printf ("\nIngrese codigo de identificacion: \n ");
scanf ("%d", &codigo);
conttotal++;
if ((peso>4000)&&(formae!='i')) {
sumapeso+=peso;
contpeso++;
}
if ((dist<=12)&&(codigo>=150)&&(codigo<=215)) {
printf ("\nEl paquete con codigo %d de identificacion no es larga
distancia: \n ", codigo);
}
if (formae=='i') contI++;
if (formae=='m') contM++;
if (formae=='c') contC++;

agregoKm=0.10*(dist/3);
if(peso<=200) agregoKg=0;
else agregoKg=((peso-200)/100)*0.05;

recaud+=2; // Precio Fijo por paquete


recaud+=agregoKm; // Adicional por distancia
recaud+=agregoKg; // Adicional por peso

printf ("\nIngrese peso: \n ");


scanf ("%f", &peso);
printf ("\nIngrese distancia: \n ");
scanf ("%f", &dist);
printf ("\nIngrese forma de entrega: \n ");
fflush(stdin);
formae=getchar();
//scanf ("%c", &formae);
}
if (contpeso>0) {
printf("\nEl promedio de peso de paquetes a entregar:
%f",sumapeso/contpeso);
} else {
printf("\nNo se entregaron paquetes que cumplan con la
condición de peso para el promedio.");
}

if((contI>=contM)&& (contI>=contC))
printf("\n El destino inmediato se hace con mas frecuencia en un
porcentaje de: %f",(float)contI/conttotal*100);
if((contM>contI)&& (contM>=contC))
printf("\n El destino inmediato se hace con mas frecuencia en un
porcentaje de: %f",(float)contM/conttotal*100);
if((contC>contM)&& (contC>=contI))
printf("\n El destino inmediato se hace con mas frecuencia en un
porcentaje de: %f",(float)contC/conttotal*100);

printf("\nSe recaudo en total: %f \n \n",recaud);

system("PAUSE");
}

9
Computación II/Informática II – Problemas sin Funciones

e) Hacer un análisis del funcionamiento del algoritmo mediante un conjunto de datos de prueba ,
completando en una tabla los valores de las variables más significantes del algoritmo, tal como
el ejemplo modelo.

Problema 16:
Se desea procesar la información de los pasajeros que viajan en un tren urbano. El tren hace varias
paradas. Para ello se debe ingresar el código de viaje que tiene los siguientes valores por sección: 1
corta distancia, 2 distancia media y 3 larga distancia. También se debe ingresar la edad del
pasajero y la hora reloj de ingreso al tren (hora y minutos). El ingreso de datos finaliza cuando se
entran al tren dos menores de edad (menores de 12 años) ó cuando se ingresa un código no válido.
Se pide:
a) Cuántos pasajeros viajaron por cada código de viaje?
b) Cuál es la recaudación total, sabiendo que el precio base por pasaje de un mayor es de 1$ para
corta distancia y para las otras distancia se debe duplicar y triplicar respectivamente el precio
base? Los menores de edad pagan la mitad de precio de ese pasaje.
c) Si se ingresa por teclado una hora de referencia, indicar cuantos pasajeros llevan viajando más
de 45 minutos.

NOTA: En todos los problemas hacer un análisis del funcionamiento del algoritmo mediante
un conjunto de datos de prueba, completando en una tabla los valores de las variables más
significantes del algoritmo, tal como el ejemplo modelo.

10

Vous aimerez peut-être aussi