Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - sora_ori

#41
Gracias a todos por vuestra respuestas!

He conseguido terminarlo pero creo que no como me pide el ejercicio.

#include<stdio.h>
#include<conio.h>

/* Declaración de funciones */
int potencia(int, int);

int main(void){
int base, exponente;

printf("Base: ");
fflush(stdin);
scanf("%i", &base);

printf("Exponente: ");
fflush(stdin);
scanf("%i", &exponente);

printf("\nLa pontencia del numero %i con exponente %i es %i", base, exponente, potencia(base, exponente));

getch();
return 0;
}

int potencia(int base, int exponente){
if (exponente  == 0) return 1;

else{
return base * potencia(base, exponente -1); // llamada recursiva
}
}
#42
Gracias Stakewinner, lo voy entendiendo solo que al ver esa formula se me esta complicando.

Entonces ahora me quedaría así:

#include<stdio.h>
#include<conio.h>

/* Declaración de funciones */
int potencia (int);

int main(void){
int n;

printf("Esribe un numero para calcular su potencia: ");
scanf("%i", &n);

printf("\nLa pontencia del numero %i es %i", n, potencia(n));

getch();
return 0;
}

int potencia(n){

if (n == 0) return 1;

if (n == 1) return 0;

if (n % 2 == 0){
(potencia^(n/2))^2
}
else{
potencia*(potencia^((n-1)/2))^2
}

}
#43
Hola compañeros, estoy un poco confuso en como puedo realizar el siguiente ejercicio.

Tengo la siguiente función y tengo que calcular la potencia de forma recursiva:

función(x,n):
1 si n = 0
x si n = 1
(x^(n/2))^2 si n es par, n>1
x*(x^((n-1)/2))^2 si n es impar, n>2


Y bueno dejaré mi pobre código esperando un poco de ayuda  :rolleyes: :rolleyes:

#include<stdio.h>
#include<conio.h>

/* Declaración de funciones */
int potencia (int);

int main(void){
int n;

printf("Esribe un numero para calcular su potencia: ");
scanf("%i", &n);

printf("\nLa pontencia del numero %i es %i", n, potencia(n));

getch();
return 0;
}

int potencia(n){

if (n == 0) return 0;

if (n == 1) return 1;

if (n % 2 == 0){
(x^(n/2))^2
}
else{
x*(x^((n-1)/2))^2
}


}
#44
Hola compañeros, ya tengo mejorado el código. Lo que pretendia hacer con la variable "medida" era saber los elementos que habrán en el vector.

Ahora lo verán más claro:

#include<stdio.h>
#include<conio.h>

/* Programa recursivo que muestra el numero menor de un vector */

int valorMenor(int* vector, int num_elementos, int menor_encontrado);

int main(){
    int i, valor;
    int vector[100];
    int num_elementos;
    int menor_encontrado;
   
    printf("Cuantos numeros quieres introducir? "); // Creo que esto no se tiene que poner, hay que rellenar el vector sin pedir el tamaño pero estoy dudando
    scanf("%i", &num_elementos);
   
    for(i=0; i<num_elementos; i++){ // Rellenamos el vector
             printf("Valor %i: ", i+1);
             scanf("%i", &valor);
             vector[i] = valor;
    }
   
    printf("El valor mas pequeno es: %i", valorMenor(vector, num_elementos, menor_encontrado));
   
   
    getch();
    return 0;
}

int valorMenor(int* vector, int num_elementos, int menor_encontrado){

// Caso base
if (num_elementos == 0)
return menor_encontrado;
    else
    return valorMenor(vector, num_elementos -1, min(menor_encontrado, vector[num_elementos -1]));
   
} // Fin función


Gracias por la ayuda!
#45
Programación C/C++ / Numero menor recursivo
13 Abril 2015, 21:11 PM
Hola compañeros, estoy haciendo un programa recursivo en C que mostrará el número menor de un vector.

De momento esto es lo que he planteado:

#include<stdio.h>
#include<conio.h>

/* Programa recursivo que muestra el numero menor de un vector */

int valorMenor(int vector[100], int medida);

int main(){
    int medida, i, valor;
    int vector[100];
   
    printf("Cuantos numeros quieres introducir? "); // Creo que esto no se tiene que poner, hay que rellenar el vector sin pedir el tamaño pero estoy dudando
    scanf("%i", &medida);
   
    for(i=0; i<medida; i++){ // Rellenamos el vector
             printf("Valor %i: ", i+1);
             scanf("%i", &valor);
             vector[i] = valor;
    }
   
    printf("El valor mas pequeno es: %i", valorMenor(vector, medida));
   
   
    getch();
    return 0;
}

int valorMenor(int vector[100], int medida){
    int menor=0;
   
    // Caso base
    if (medida==0){
              if (menor > vector[100]){
                        return vector[100];
                        }
              else{
                   return menor;
                   }
              }
             
              else{
              if (menor > vector[100]){
                        return valorMenor (vector[100], medida-1, menor);
                        }
                        else{
                             return valorMenor (vector, medida-1, menor);
                        }
              }
} // Fin función


Un saludo
#46
Gracias por la ayuda, era solamente eso!!  ;-) ;-)

Tengo otra función parecida, la de mostrar la palabra más larga del String introducido y no me funciona:



/* Función para mostrar la palabra más larga de una frase */
char* palabraLarga(char frase[20]){
char *elemento = strtok ( frase, " " );

strcpy(frase, elemento);

while ( elemento != NULL ) {
if(strlen(elemento) >= strlen(frase))
strcpy(frase, elemento);
elemento = strtok(NULL, " ");
}
return frase;
}


case 3:
system("cls");
printf("La palabra más larga del String es ' %s '", palabraLarga(frase));
break;
#47
Programación C/C++ / 1ra palabra de un String
19 Febrero 2015, 23:29 PM
Hola, que tal?

Les vengo a preguntar sobre una función que me muestra la 1r palabra de un string, tengo esta función hecha, compila bien pero no muestra nada.

char* extraerPalabra(char frase[20]) {

char *elemento = strtok(frase, " ");
   
strcpy(frase, elemento);
   
while (elemento != NULL) {
        if (!strcmp(frase, elemento)) // Comparamos las dos cadenas
elemento = strtok(NULL, " ");
    }
return frase;
}




case 2:
printf("String mostrando la 1r palabra: ' %s '", extraerPalabra(frase));
getch();
break;
#48
Ya lo he podido solucionar TODO!

Gracias por la ayuda compañeros!! :)

Saludos
#49
Buenas,

Ya he podido solventar el problema de leer un String, ahora tengo problemas al pasar por referencia, dejo el código:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int frecuencia(char *, char letra);


int main(){
int opcion=1;
char frase[20], letra;

while(opcion!=5){
system("cls");
printf("1. Introducir frase\n");
printf("2. Frecuencia caracter\n");
printf("3. Quitar primera palabra\n");
printf("4. Sin espacios en blanco\n");
printf("5. Salir\n");
printf("\n\nEscoge una opcion: ");
fflush(stdin);
scanf("%i", &opcion);

switch (opcion){
case 1:
system("cls");
printf("Introduce una frase ");
fflush(stdin);
gets(frase); // Guardamos el String

printf("\n\nLa frase introducida es:\n\n\n");
printf("%s", frase);
fflush(stdin);

getch();
break;

case 2:
system("cls");
printf("\n\nQue letra quieres buscar en la cadena? ");
scanf("%c", &letra); // guardamos la letra que queremos buscar en la cadena
printf("La letra %c aparece %i veces repetidas", letra, frecuencia(frase,letra));
getch();
break;

case 3:
system("cls");
//printf("\nLa frase sin la primera palabra: %s\n", quitarPrimera(frase));
system("pause");
break;
case 4:
system("cls");
//printf("\nLa frase sin espacio es: %s\n", sinEspacios(frase));
break;
case 5:
system("cls");
printf("Hasta luego!");
getch();
return 0;
break;
default:
printf("\nOpcion incorrecta! Intenta de nuevo");

}
getch();

}

getch();
return 0;
}// fin main

// Función para comprobar cuantas veces se repite una letra
int frecuencia(char *frase[20], char letra){
int i, cont=0; // la variable contador será la encargada de sumar cuando se encuentre la letra

for (i=0; frase[i] != '\0'; i++){ // recorremos con un for hasta encontrar el espacio en blanco
if (frase[i] == letra){ // si el punto de la cadena es = a la letra que queremos encontrar
cont++;              // sumara el contador
}
}
return cont; // retornaremos las veces que se ha encontrado el caracter que hemos buscado en el for
}


Al leer un String y pasarlo por referencia se pone " & " delante de la variable pero me da error.

Gracias
#50
Buenas compañeros,

Sigo teniendo problemas a la hora de leer Strings, si leo caracteres no tengo problema pero como quiera escribir un Strings con una frase con espacios me da el siguiente error:


No me permite escribir nada en el String

printf("Introduce el String: ");
gets(frase);

printf("\nLa frase sin la primera palabra: %s\n", quitarPrimera(frase));
system("pause");





char* quitarPrimera(char frase[20]);


int main(){

char frase[20];


Creo que será que tengo que recoger de otra forma la cadena porque con un SCANF puedo pero no me permite coger frases con espacios y no es el objetivo que estoy buscando.

Gracias!!!