Вы находитесь на странице: 1из 3

Pontificia Universidad Católica de Valparaíso 04.12.

2008
Facultad de Ingeniería

Certamen 3
INF 125 – Programación
Nombre : .
R.U.T. : .

PREGUNTA (70pts.)
Elabore un programa en C que cuente con 3 opciones:
Opción 1: Realizar la conjetura de Ullman.
Opción 2: Multiplicación elementos de columna en matriz.
Opción 3: Salir del programa.

A continuación se describen en detalle cada una de las 3 primeras opciones.

Opción 1: Realizar la conjetura de Ullman.


Dado un entero n > 1 (ingresado por el usuario), calcule e imprima los
elementos correspondientes a la conjetura de Ullman (en honor al matemático S.
Ullman) que consiste en lo siguiente:
1. Empiece con el valor ingresado por el usuario.
2. Si es par, divídalo entre 2; si es impar multiplíquelo por 3 y agréguele 1.
3. Muestre por pantalla el resultado.
4. Volver al paso 2, tomando como valor el resultado.

Al final se obtendrá el número 1, independientemente del entero inicial. Por ejemplo,


cuando el entero inicial es 26, la secuencia será:
26 13 40 20 10 5 16 8 4 2 1

Opción 2: Multiplicación elementos de columna en matriz


Se cuenta con una matriz de largo [4][6] de entero, y con un vector de largo
[6] de entero. Se debe llenar la matriz con valores que ingresará el usuario. Luego
esta opción debe calcular la multiplicación de cada columna y almacenar el resultado
en la posición correspondiente del vector, es decir, el resultado de la multiplicación de
los valores de la columna 0 en la matriz, se debe almacenar en la posición 0 del
vector. La multiplicación de los elementos de la columna 1 en la matriz, se debe
almacenar en posición 1 del vector. Y así sucesivamente. Finalmente, se debe mostrar
los valores de cada multiplicación por pantalla.

Nota: Se deben utilizar funciones, al menos se debe crear una función para cada
opción.

Hora Inicio 08:15

Hora Termino 09:45

NGGA/ngga
Pontificia Universidad Católica de Valparaíso 04.12.2008
Facultad de Ingeniería

Corrección Certamen 3
INF 125 – Programación
RESPUESTA.
#include<stdio.h>
#define topeFil 4
#define topeCol 6
void ullman(int limite);
void llenarMatriz(int aux[][topeCol]);
void desplegarMatriz(int aux[][topeCol]);
void multiplicacion(int aux[][topeCol], int res[]);

main(){
int valor, matriz[topeFil][topeCol], result[topeCol];
char opcion;
do{
printf("\nOpcion1: Serie de Ullman");
printf("\nOpcion2: Multiplicacion elementos columna matriz");
printf("\nOpcion3: Salir del programa");
printf("\nElija opcion =>");
fflush(stdin);scanf("%c", &opcion);
switch(opcion){
case '1':
do{
printf("\nIngrese valor natural mayor a 1 =>");
fflush(stdin);scanf("%i", &valor);
}while(valor<2 || valor == '\x0');
printf("\nLa serie es:\n");
ullman(valor);
break;

case '2':
printf("\nLlenado de matriz");
llenarMatriz(matriz);
printf("\nLa matriz quedo asi\n");
desplegarMatriz(matriz);
printf("\nEl resultado es:");
multiplicacion(matriz, result);
break;

case '3':
printf("\nEl programa se cerrara");
break;

default:
printf("\nError. Debe elegir una opcion correcta");

}
printf("\nPresione una tecla para continuar");
fflush(stdin);getch();
}while(opcion != '3');

NGGA/ngga
Pontificia Universidad Católica de Valparaíso 04.12.2008
Facultad de Ingeniería

void ullman(int limite){


printf("%i ", limite);
while(limite>1){
if((limite % 2) == 0){
limite = limite/2;
}else{
limite = limite*3 + 1;
}
printf("%i ", limite);
}
}

void llenarMatriz(int aux[][topeCol]){


int i, k;
for(i=0; i<topeFil; ++i){
for(k=0; k<topeCol; ++k){
printf("\nValor[%i][%i]=>",i+1, k+1);
fflush(stdin);scanf("%i", &aux[i][k]);
}
}
}

void desplegarMatriz(int aux[][topeCol]){


int i, k;
for(i=0; i<topeFil; ++i){
for(k=0; k<topeCol; ++k){
printf("%i\t", aux[i][k]);
}
printf("\n");
}
}

void multiplicacion(int aux[][topeCol], int res[]){


int i, k;
for(k=0; k<topeCol; ++k){
res[k]=1;
for(i=0; i<topeFil; ++i){
res[k] = res[k] * aux[i][k];
}
printf("\nEl resultado de la columna %i es =>%i", k+1, res[k]);
}
}

NGGA/ngga

Вам также может понравиться