Cita:
Iniciado por Pantaláimon Buenas!
Ahí van dos problemas más:
1) Ordena un array:
Crea una función
ordena que dado un array con n enteros, lo transforme en otro con sus elementos ordenados de menor a mayor. El prototipo de la función es:
Este problema lo recomiendo hacer 100% recursivo, al menos los participantes habituales, que en eso reside la gracia del problema.
.................................................
Código BASH:
Ver original2 = 2
3 = 3
4 = 2^2
5 = 5
6 = 2 * 3
7 = 7
8 = 2^3
9 = 3^2
10 = 2 * 5
- los factores se mostraran ordenados de menor a mayor
- si el factor no existe no se escribirá
- si el factor sólo aparece una vez no se mostrará elevado a 1 ("5 = 5" y no 5 = 5^1)
- habrá un espacio a izquierda y derecha de los simbolos = y *
- no habrá espacios entre el símbolo de elevar ^
El prototipo de la función es el siguiente:
Código C:
Ver originalvoid descompon(int a, int b, int ver);
Cuando
ver != 0 se mostrará la salida tal como he explicado.
Si
ver == 0 se ejecuran los calculos que hayáis implementado pero no se mostrará nada por la salida estándar.
Este lo podéis hacer como queráis,
Pues ahora... ¡a petar la pila! O no...
Un saludo!
¡¡¡ Por fin sin ataduras ¡¡¡ . A pelo a mi me queda esto:
Código C++:
Ver original#include<stdio.h>
void descompon ( int a , int b , int ver ) ;
int main ( ) {
return descompon ( 1500 , 1550 , 0 ) , 0 ;
}
void descompon( int a , int b , int ver ) {
int i , numero , n ;
for ( numero = a ; numero <= b ; numero ++) {
n = numero ;
while ( n > 1 ) {
for ( i = 2 ; i <= n ; i++ , ver = 0 ) {
while ( n % i == 0 ) n /= i , ver++ ;
if ( ver != 0 ) {
if ( ver == 1 && i < n )
else if ( ver == 1 && i > n )
else if ( ver > 1 && i < n )
printf( "%d^%d * " ,i
, ver
) ; else if ( ver > 1 && i > n )
}
}
}
}
}
Pero que veo:
Cita:
Iniciado por Pantaláimon Buenas!
Ahí van dos problemas más:
..........................
pero recursivo conseguiréis más puntos. Pues nada, a por el recursivo y los puntitos:
Código C++:
Ver original#include<stdio.h>
int descompon ( int a , int b , int ver ) ;
int factorizar1 ( int i , int numero , int b , int ver ) ;
void factorizar2 ( int i , int *n , int b , int ver ) ;
void imprimir( int i , int n, int b , int ver ) ;
int main ( void ) {
return descompon ( 1500 , 1550, 0 ) , 0 ;
}
int descompon ( int a , int b , int ver ) {
if ( a <= b ) {
factorizar1 ( 2 , a , b , ver ) ;
return descompon ( a + 1 , b , ver ) ;
}
return 0 ;
}
int factorizar1 ( int i , int numero , int b , int ver ) {
int n = numero ;
if ( i <= n ) {
factorizar2 ( i , &n , b , ver ) ;
return factorizar1 ( i + 1 , n , b , ver ) ;
}
return 0 ;
}
void factorizar2 ( int i , int *n , int b , int ver ) {
while ( *n % i == 0 )
*n /= i , ver++ ;
imprimir( i , *n , b , ver ) ;
}
void imprimir( int i , int n, int b , int ver ) {
if ( ver != 0 ) {
if ( ver == 1 && i < n )
else if ( ver == 1 && i > n )
else if ( ver > 1 && i < n )
printf( "%d^%d * " ,i
, ver
) ; else if ( ver > 1 && i > n )
}
}
Y aquí una salida de muestra:
Código BASH:
Ver original1500 = 2^2 * 3 * 5^3
1501 = 19 * 79
1502 = 2 * 751
1503 = 3^2 * 167
1504 = 2^5 * 47
1505 = 5 * 7 * 43
1506 = 2 * 3 * 251
1507 = 11 * 137
1508 = 2^2 * 13 * 29
1509 = 3 * 503
1510 = 2 * 5 * 151
1511 = 1511
1512 = 2^3 * 3^3 * 7
1513 = 17 * 89
1514 = 2 * 757
1515 = 3 * 5 * 101
1516 = 2^2 * 379
1517 = 37 * 41
1518 = 2 * 3 * 11 * 23
1519 = 7^2 * 31
1520 = 2^4 * 5 * 19
1521 = 3^2 * 13^2
1522 = 2 * 761
1523 = 1523
1524 = 2^2 * 3 * 127
1525 = 5^2 * 61
NOTITA: He visto en los últimos códigos que no incluyen la función main. Vamos compañeros que al público en general le puede resultar un mundo obtenerla y, al fin y al cabo, son unas pocas líneas de más, ánimo e incluir a a
main.
¡¡¡Saluditos!!!