Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- LAB N°1
- #include <stdio.h>
- #include <stdlib.h>
- unsigned int persistenciaMultiplicativa (unsigned long long);
- int main() {
- //SE LEE EL NUMERO
- unsigned long long numero;
- scanf("%llu",&numero);
- //SE IMPRIME SU PERSISTENCIA MULTIPLICATIVA
- printf("%u\n",persistenciaMultiplicativa(numero));
- return 0;
- }
- unsigned int cont = 0; //Declaro un cont global para poder usar recursividad en la funcion
- unsigned int persistenciaMultiplicativa (unsigned long long num){
- unsigned long long aux=num,producto=1;
- if(num >= 10){ //En caso de que el numero sea menor que 10 no se deben hacer los calculos
- do{
- producto *= aux%10;
- aux = aux/10;
- //printf("dig: %llu\n",producto);
- }while(aux != 0);
- cont++;//El cont aumenta acá, ya que aunque el num sea < 10, ya se le aplicó la multiplicación
- if(producto >= 10){//En caso de que no aun no sea menor que 10 se debe aplicar recursividad para saber
- num = producto;//si el nuevo numero cumple la condicion de ser < 10
- persistenciaMultiplicativa(num);
- }else{//Este else es para que cuando se haya hecho la * y el resultado sea menor que 10
- return cont;
- }
- }
- return cont;//Si el num <10 no entra al if, por ello el cont que se imprime no debe aumentar.
- };
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- LAB N°2
- //gcc 5.4.0
- #include <stdio.h>
- #define MAX 10001
- //void Ordenar(int, int*);
- int Buscar(int, int*);
- int Validar(int);
- int main(void)
- {
- int i=0;
- int num=0;
- int vector[MAX];
- num = Validar(num);
- num--;
- for(i = 0; i < num; i++){
- scanf("%d",&vector[i]);
- }
- int j = 0;
- int aux=0;
- for(i = 0; i < num; i++){
- for(j = i+1; j < num; j++){
- if(vector[i] > vector[j]){
- aux=vector[i];
- vector[i]=vector[j];
- vector[j]=aux;
- }
- }
- }
- //Ordenar(num,vector);
- printf("LA PIEZA QUE FALTA ES LA %d",Buscar(num,vector));
- return 0;
- }
- int Validar(int num){
- do{
- scanf("%d",&num);
- }while(num < 2 || num > 10000);
- return num;
- };
- int Buscar(int largo, int* cadena){
- int izq = 0, der = largo,aux=0;
- do{
- aux = izq+der;
- if(aux % 2 == 0){
- aux = aux / 2;//printf("while izq: %d\n",izq);
- }else{
- aux = (aux / 2) + 1;//printf("While der: %d\n",der);
- }
- if(cadena[aux] == aux+1){
- izq = aux;
- }else{
- der = aux;
- }
- }while(izq != der-1); //printf(" izq: %d",izq);printf(" der: %d\n",der);
- if(cadena[izq] != izq+1){
- return izq+1;
- }
- return der+1;
- };
Advertisement
Add Comment
Please, Sign In to add comment