Advertisement
rohan_

algunas (5) funciones recursivas (sin main)

Oct 22nd, 2017
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.51 KB | None | 0 0
  1. /*__________________________________________________________________________________________________________________________________*/
  2. //frases palindromas, se admiten mayusculas y +espacios en blanco
  3. char *aMayusculas(char *frase, int posInicial)
  4. {
  5.     if(!frase[posInicial]) return frase;
  6.     else {
  7.         frase[posInicial]=toupper(frase[posInicial]);
  8.         return aMayusculas(frase,posInicial+1);
  9.     }
  10. }
  11. char *sacaEspacios(char *frase)
  12. {
  13.     int i=0,j=0;
  14.     while(frase[i]) {
  15.         if(frase[i]!=' ') {
  16.             frase[j++]=frase[i];
  17.         }
  18.         i++;
  19.     }
  20.     frase[j]='\0';
  21.     return frase;
  22. }
  23. int esPalindroma (const char *frase, int posInicial, int posFinal)
  24. {
  25.     if(posInicial>posFinal) return 1;
  26.     else {
  27.         if(frase[posInicial]==frase[posFinal]) return esPalindroma(frase, posInicial+1, posFinal-1);
  28.         else return 0;
  29.     }
  30. }
  31. /*__________________________________________________________________________________________________________________________________*/
  32. //encuentra el mayor valor en un arreglo
  33. int mayorValor ( int *vector, int mayor, int posFinal)
  34. {
  35.     if(posFinal==-1) return mayor;
  36.     else {
  37.         if(vector[posFinal]>mayor) return mayorValor(vector, vector[posFinal], posFinal-1);
  38.         else return mayorValor(vector, mayor, posFinal-1);
  39.     }
  40. }
  41. /*__________________________________________________________________________________________________________________________________*/
  42. //realiza la multiplicacion rusa (conocido como metodo del campesino)
  43. int mult_rusa(int multiplicador, int multiplicando)
  44. {
  45.     static int suma=0;
  46.     if(multiplicador==0) return suma;
  47.     else {
  48.         printf("Multiplicador: %i, Multiplicando: %i\n",multiplicador,multiplicando);
  49.         if(multiplicador%2!=0) suma+=multiplicando;
  50.         return mult_rusa(multiplicador/2,multiplicando*2);
  51.     }
  52. }
  53. /*__________________________________________________________________________________________________________________________________*/
  54. //dice si un conjunto de containers esta ordenado o no (los de mayor peso abajo)
  55. /*ejemplo
  56.             3                   9 8 7
  57.             9 8 7               6 5 4
  58.             6 5 4               3 2 1
  59.             3 2 1               Desordenado
  60. */
  61. int Conjunto_Ordenado(int ** Matriz , int tamano, int Fila, int Columna, int Valido)
  62. {
  63.     if (!Valido) return 0;
  64.     if(Columna==tamano) return 1;
  65.     if(!Fila) return Conjunto_Ordenado(Matriz,tamano,tamano-1,Columna+1,1);
  66.     if(Matriz[Fila][Columna] < Matriz[Fila-1][Columna]) return Conjunto_Ordenado(Matriz, tamano, Fila-1, Columna, 0);
  67.     else return Conjunto_Ordenado(Matriz, tamano, Fila-1, Columna, 1);
  68. }
  69. /*__________________________________________________________________________________________________________________________________*/
  70. //dado la cantidad de alumnos y los datos del tipo alumno muestra al mejor y al peor segun su promedio (prioridad: promedio>edad)
  71. /*typedef struct alumno{
  72.    char Nombre[20];
  73.    char Apellido[20];
  74.    float Promedio;
  75.    unsigned short int Edad;
  76. }Alumno;*/
  77.  
  78. Alumno * Ordenar_Promedio(Alumno * Arreglo , int Tamano)
  79. {
  80.     if(!Tamano) return Arreglo;
  81.     else {
  82.         int i;
  83.         for (i=0; i<Tamano-1; i++) {
  84.             if (Arreglo[i].Promedio < Arreglo[i+1].Promedio) {
  85.                 Alumno aux= Arreglo[i];
  86.                 Arreglo[i]= Arreglo[i+1];
  87.                 Arreglo[i+1]= aux;
  88.             }
  89.         }
  90.         return Ordenar_Promedio(Arreglo , Tamano-1);
  91.     }
  92. }
  93. /*__________________________________________________________________________________________________________________________________*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement