




























































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Guia de ejercicios de electronica analogica
Tipo: Ejercicios
1 / 101
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
Computación II / Informática II – Guía de Problemas sin Funciones Analisis mediante un conjunto de datos de prueba
#include <stdio.h> int main( ) { int base, nro_repeticiones; float exp, prod=1; printf("\n Ingrese el valor de la base: "); scanf("%f%c", &base); printf("\n Ingrese el valor del exponente: "); scanf("%d%c", &exp); for( nro_repeticiones=1; nro_repeticiones <= exp; nro_repeticiones++ ) { prod = base; / Equivale a colocar prod = prod * base */ printf( "En la repeticion:%d\n", nro_repeticiones); printf( "En esta vuelta el valor de producto corresponde:%f\n\n", prod ); } printf("\n\n El valor de la base elevado al exponente es:%f\n", prod ); return 0; } 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 se ejecuta el programa editado en C. Por pantalla se muestra toda la evolución. Por lo que se podría utilizar para observar el valor de cda variable a medida que corre el programa. Se propone el siguiente conjunto de datos de prueba para verificar el funcionamiento:
Mostrar resultados intermedios
Resultado x Base
Repetir N veces según exponente
Computación II / Informática II – Guía de Problemas sin Funciones #include <stdio.h> int main( ) { int dato=0, cont_total=0, cont_par=0, sum=0; float porc=0, prom=0; printf("\n Ingrese el dato: "); scanf("%d%c", &dato); while( (dato!=-50) && (cont_total!=1000) ) { cont_total++; if(dato % 2 == 0){ cont_par++; } sum+=dato; printf ("\n Ingrese el dato: "); scanf("%d%c", &dato); } printf ("\n La cantidad de elementos es: %d", cont_total); if( cont_total!=0 ) { porc =(float)(cont_par*100)/cont_total; prom =(float)sum/cont_total; } printf( "El porcentaje de los pares es: %8.2f%\n", porc ); printf( "El promedio de los datos ingresados es: %8.2f\n", prom); return 0;
dato conttotal contpa sum porc prom 2 17 26 122
Contar elemento par
Calcular y mostrar promedio Calcular y mostrar porcentaje de elementos pares
Mostrar Cantidad
Para los que el resto de su división entera por 2 sea 0 Para todos los datos ingresados, hasta que se ingresen 1000 datos o el dato ingresado sea -
Computación II / Informática II – Guía de Problemas sin Funciones 1 45
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.
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.
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. #include <stdio.h> int main( ) { int cont=0, cont_rechaz=1, cont_acept = 0; float prom, espesor, suma=0, max_espesor=-1;
Contar espesor incorrecto
Calcular y mostrar promedio Mostrar mayor espesor
Mostrar Cantidad de espesores incorrectos
Para aquellos espesores que sean > 1,5mm o < 1.1 mm Hasta que se ingresen 1000 elementos o el elemento ingresado sea < Cuando el espesor sea
al Mayor guardado previamente Para aquellos espesores que sean <1,5mm o > 1.1 mm
Computación II / Informática II – Guía de Problemas sin Funciones
a) La cantidad de datos impares comprendidos entre –10 y 10. b) Mostrar los datos pares que sean distintos de 2 y 4.
a) El promedio de los datos pares de orden par (que se ingreso en posición par). b) El porcentaje de elementos múltiplos de 3 de los primeros 40 datos siempre que sea posible.
a) El promedio de edad de aquellos pacientes cuya altura esté comprendida entre 1,50 y 1,
b) El porcentaje de pacientes cuya altura no supere 1,60 metros y cuya edad esté comprendida en
c) El paciente con mayor altura y su edad correspondiente.
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
3
6
Computación II / Informática II – Guía de Problemas sin Funciones
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.
Porcentaje de poliéster. Gramos / metros.
b) Calcular y mostrar el promedio de gramos/metros de la muestra.
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).
Computación II / Informática II – Guía de Problemas sin Funciones printf("No se entregaron paquetes con la condición de peso promedio."); } if( contI >= contM && contI >= contC ) printf("El destino inmediato se hace con un porcentaje de: %f", (float)contI/conttotal100); if( contM > contI && contM >= contC ) printf("El destino inmediato se hace con mas frecuencia en: %f", (float)contM/conttotal100); if( contC > contM && contC >= contI ) printf("El destino inmediato se hace con mas frecuencia en un porcentaje de: %f", (float)contC/conttotal*100); printf("Se recaudo en total: %f\n", recaud); return 0; }
Computación II / Informática II – Guía de Problemas Con Funciones, Arreglos y Strings scanf("%f%c", &dato); return dato; } float promedio( float a, float b, float c ) { / Sumar y Dividir son "acciones primitivas" y pueden integrarse sin problema dentro de una función */ float p; p = a + b + c / 3; return p; } float producto( float a, float b, float c ) { return a * b * c; } void mostrar( float prom, float prod) { printf( "El promedio es: %f\n", prom); printf( "El producto es: %f\n", prod); } int sonIguales(float a, float b, float c ) { return ( a == b && a == c )? 1 : 0; } Problema 19 Ingresar pares de valores enteros x e y. El proceso de carga finaliza cuando la diferencia entre ambos valores sea impar y divisible por 7. Para cada par de valores (x,y) se pide: a) Si el valor y es mayor que x, mostrar los valores intermedios. b) Si el valor y es mayor que 0 calcular, mediante productos sucesivos, el valor de X elevado a la Y y mostrarlo en la función main. c) Calcular el promedio de los valores x para los x > 0. d) El porcentaje de pares con por lo menos un componente = 0.
Computación II / Informática II – Guía de Problemas Con Funciones, Arreglos y Strings Código: #include <stdio.h> void incrementoContsAcum(int var_x, int var_y, int ContsAcum[]); void mostrarValoresEntre(int var_x, int var_y); int calcularPotencia(int var_x, int var_y); void mostrarPromPorc(int ConstsAcum[]); int main(){ int x, y; int ContsAcum[4]={0, 0, 0, 0};/* Se usa un arreglo de contadores / printf("Ingrese el valor de x y de y: \n"); scanf("%d%c", &x); scanf("%d%c", &y); while( (x-y)%2 == 0 || (x-y)%7 != 0 ) { incrementoContsAcum(x, y, ContsAcum); if(x > y){ mostrarValoresEntre(x,y); } if(y > 0){ printf ("La potencia es: %d\n", calcularPotencia(x,y)); } printf("Ingrese el valor de x y de y: \n"); scanf("%d%c", &x); scanf("%d%*c", &y); } mostrarPromPorc(ContsAcum); return 0; } void incrementoContsAcum(int var_x, int var_y, int ContsAcum[]){ ContsAcum[0]++; if(var_x > 0){ ContsAcum[1]++; ContsAcum[2]+= var_x; } if( (var_x && var_y) == 0 ){
Computación II / Informática II – Guía de Problemas Con Funciones, Arreglos y Strings El programa simula la tirada de una moneda una cierta cantidad de veces especificada por el operador. Calcular y mostrar la cantidad de veces que sale Cara y Ceca, y sus porcentajes correspondientes. #include <stdio.h> #include <conio.h> #include <stdlib.h> int main( ) { int moneda; long int i, contC=0, contS=0; /Contador de Caras y Secas/ long int CantT; /Cantidad de Tiradas/ printf("Ingresa Cantidad de Tiradas de la Moneda:"); scanf("%ld%c",&CantT); for(i=0;i<CantT;i++){ moneda = rand()%2; (moneda == 0)? contC++ : contS++; } printf("Cantidad de Caras y Cecas para %ld Tiradas\n\n",CantT); printf("Caras: %ld\t\tCecas: %ld\n",contC,contS); printf("Porcentaje Caras: %f\t\tPorcentaje Cecas: %f\n", (contC100.)/CantT, (contS100.)/CantT); return 0; } NOTA: Cada vez que se ejecuta este programa, se puede observar que siempre se muestran los mismos resultados. Para ello es necesario cambiar la semilla de generación a través de la función srand(). Problema 21 El programa simula la tirada de un dado una cierta cantidad de veces especificada por el operador. Entrega como resultado el número de veces de que sale cada Cara y sus porcentajes sobre el total. En este caso se agrega la función srand(), que permite cambiar la semilla de generación de los números aleatorios. Se toma como semilla la hora del sistema mediante la función time() incluida en la biblioteca time.h #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> int main() { int dado; long int i, cont1=0, cont2=0, cont3=0, cont4=0, cont5=0, cont6=0; long int CantT; /Cantidad de Tiradas/ printf("Ingresa Cantidad de Tiradas del dado: "); scanf("%ld%c",&CantT); srand(time(NULL)); for(i=0;i<CantT;i++){ dado = 1 + rand()%6; switch(dado){ case 1: cont1++; break;
Computación II / Informática II – Guía de Problemas Con Funciones, Arreglos y Strings case 2: cont2++; break; case 3: cont3++; break; case 4: cont4++; break; case 5: cont5++; break; case 6: cont6++; break; } } printf("Cantidad de Tiradas del dado: %ld\n\n",CantT); printf("Cara1: %ld\t\tCara2: %ld\n",cont1,cont2); printf("Porcentaje Cara1: %5.2f\tPorcentaje Cara2:%5.2f\n\n", (cont1100.)/CantT, (cont2100.)/CantT); printf("Cara3: %ld\t\tCara4: %ld\n",cont3,cont4); printf("Porcentaje Cara3: %5.2f\tPorcentaje Cara4:%5.2f\n\n", (cont3100.)/CantT,(cont4100.)/CantT); printf("Cara5: %ld\t\tCara6: %ld\n",cont5,cont6); printf("Porcentaje Cara5: %5.2f\tPorcentaje Cara6: %5.2f\n\n", (cont5100.)/CantT,(cont6100.)/CantT); return 0; } Problema 22 El programa simula la extracción de cartas de una baraja una cierta cantidad de veces especificada por el operador. Este programa cuenta el palo de cada carta y entrega por resultado el número de veces y el porcentaje de cada uno de ellos. El palo de cada carta se simula a través de numeros, es decir, si el numero está entre 0 y 9 el palo es Oro, entre 10 y 19 el palo es Copa, entre 20 y 29 corresponde a basto y entre 30 y 39 a espada. #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> int main() { long int c1,c2,c3,c4,n,i; int valor; c1=c2=c3=c4=0L; srand(time(NULL)); printf("Simulación de una Baraja de Naipes \n"); printf("Ingrese la cantidad de Cartas a Extraer: "); scanf("%ld%*c",&n); printf("Carta (Palo)\nOro\tCopa\tBasto\tEspada\n\n"); for(i=0L; i<n; i++){ valor = rand()%40; if(valor>=0 && valor < 10) { c1++; } else if(valor>=10 && valor < 20) {
Computación II / Informática II – Guía de Problemas Con Funciones, Arreglos y Strings case 9: case 10: /* debe volver a tirar / do { printf("\n\nPresione enter para lanzar los dados nuevamente\n\n" ); getchar(); puntos2 = tirada(); printf("\n\nEl valor obtenido en este tiro es: %2d", puntos2); }while((puntos2 != puntos1) && (puntos2 != 7)); if(puntos2 != 7) printf("\n\nGANO\n"); else printf("\n\nPERDIO\n"); break; } /Cierra el switch / } / Cierra la función / int main() { char c='s'; printf(" Comienza el juego \n\n "); while(toupper(c) != 'N') { juego(); printf ("\n\n Desea jugar de nuevo? S/N\n"); c=getchar(); } return 0; } / Fin del main / Problemas resueltos con Matrices y Vectores Problema 24 Generar una matriz cuadrada triangular de nxn elementos, máximo 20x20: 01 02 03 04 05 06 07 00 08 09 00 00 10 00 00 00 #include <stdio.h> #include <stdlib.h> / Declaración de funciones / void llenar(int M[][20], int d); void mostrar(int M[][20], int d); int main() { int d; int M[20][20]; printf("Ingrese dimension: "); scanf("%d%c",&d); llenar(M, d); mostrar(M, d); return 0; }
Computación II / Informática II – Guía de Problemas Con Funciones, Arreglos y Strings void llenar(int M[][20], int d) { int i,j,cont=1; for (i=0;i<=d;i++) { for (j=0;j<=d;j++) { /* Para llenar los elementos de una matriz por encima de la diagonal se debe tener en cuenta que la suma de los índices i,j correspondiente a la posición de cada elemento no debe superar el valor de la dimensión d / /Elementos por encima de diagonal de la Matriz/ if ((i+j)<=d) { /Cada elem M[i][j] se llena en forma consecutiva/ M[i][j]=cont; cont++; } else M[i][j]=0; /Se llenan con ceros/ } } } void mostrar(int M[][20], int d) { int i, j; for (i=0;i<=d;i++) { printf("\n"); for (int j=0;j<=d;j++) { printf ("%d\t",M[i][j]); } } } Problema 25 Generación de una Matriz cuadrada mediante el uso de funciones de producción de números aleatorios. #include<stdio.h> #include<stdlib.h> #include<time.h> / Declaración de funciones / void llenar (int M[][20], int d); void mostrar (int M[][20], int d); int main( ) { int d; int M[20][20]; printf("Ingrese dimension (maximo 20x 20): "); scanf("%d%c",&d); llenar(M, d); mostrar(M, d); printf("\n"); return 0; } void llenar(int M[][20], int d) { int i,j,mod,signo,elem; srand(time(NULL)); for (i=0;i<=d;i++) { for (j=0;j<=d;j++) { /Tengo un 1 o 0/ mod=rand()%2; /obtengo un signo + o signo - / signo = (mod == 1)? -1 : 1; /Una matriz con culaquier número desde -9 a 9/