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

#71
Gracias por la ayuda "NikNitro!", te lo agradezco!

El código lo llevo así:

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

#define FALSE 0
#define TRUE 1
int numLlamadas = 0; //CAMBIADO

/* Declaracion de las funciones */
unsigned int f2x3 (int);

/* Menu principal */
int main(void){
    unsigned int n; // Variable "n" donde se guarda el numero y que utilizará la funcion

    printf("Escribe un numero: ");
    fflush(stdin);
    scanf("%d", &n); // guardamos el numero introducido

    printf("\nTotal de llamadas: %d \n", numLlamadas); // Mostramos el total de llamadas de la funcion //CAMBIADO

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

/* Funcion */
unsigned int f2x3 (int n) {
    int i = 0;      //El siguiente número que usaremos  //CAMBIADO
    printf("%i ", n); // Listamos los numeros que va llamando la funcion

    if (n == 1) return 1; // Primer caso, si el valor es igual a 1 entonces retornará 1
    else { //CAMBIADO
      (n % 2 == 0) && (n % 3 == 0) i=n+5; // Caso II //CAMBIADO
      (n % 2 == 0) && (n % 3 != 0) i=n/2; // Caso III //CAMBIADO
      (n % 2 != 0) && (n % 3 == 0) i=n+2; // Caso IV //CAMBIADO
      (n % 2 != 0) && (n % 3 != 0) i=n-1; // Caso V //CAMBIADO
    } //CAMBIADO
   
    numLlamadas++; //CAMBIADO
    return f2x3(i); //CAMBIADO
} // Fin de la funcion




El error que me da es el siguiente:

In function `f2x3':
syntax error before "i"
#72
Me esta dando un error y llevo un rato intentando ver que es y no lo encuentro.


En esta parte:

    if (n == 1) return 1; // Primer caso, si el valor es igual a 1 entonces retornará 1
    else { //CAMBIADO
      (n % 2 == 0) && (n % 3 == 0) i=n+5; // Caso II //CAMBIADO
      (n % 2 == 0) && (n % 3 != 0) i=n/2; // Caso III //CAMBIADO
      (n % 2 != 0) && (n % 3 == 0) i=n+2; // Caso IV //CAMBIADO
      (n % 2 != 0) && (n % 3 != 0) i=n-1; // Caso V //CAMBIADO
    } //CAMBIADO
   
    numLlamadas++; //CAMBIADO


Error: syntax error before "i"
#73
Muchas gracias!

Tenía ya la variable "n" para el total de llamadas.
#74
En el ejemplo que he dado si pongo 18 me dice que el total de llamadas es "1" cuando en verdad son 9.


Saludos
#75
Hola, a ver si me pueden corregir este programa en C jeje

Programa que pedirá un número entero y hace una función int f2x3 con:

1) Si "n" es 1 escribirá "n" por pantalla y devolverá un 1.
2) Si "n" no es 1 y si es múltiplo de 2 y es múltiplo de 3 escribirá "n" por pantalla y
llamará a f2x3 con el valor n+5.
3) Si "n" no es 1 y es múltiplo de 2 pero no es múltiplo de 3 escribirá "n" por
pantalla y llamará a f2x3 con el valor n/2.
4) Si "n" no es 1 y es múltiplo de 3 pero no es múltiplo de 2 escribirá "n" por
pantalla y llamará a f2x3 con el valor n+2.
5) Si "n" no es 1 y no es múltiplo de 2 ni múltiplo de 3 escribirá "n" por pantalla
y llamará a f2x3 con el valor n-1.

Ejemplo: Si introducimos un 18

Escribirá por pantalla: 18,23,22,11,10,5,4,2,1 Total: 9 llamadas


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

#define FALSE 0
#define TRUE 1

/* Declaracion de las funciones */
unsigned int f2x3 (int);

/* Menu principal */
int main(void){
    unsigned int n; // Variable "n" donde se guarda el numero y que utilizará la funcion
   
    printf("Escribe un numero: ");
    fflush(stdin);
    scanf("%d", &n); // guardamos el numero introducido
   
    printf("\nTotal de llamadas: %d \n", f2x3(n)); // Mostramos el total de llamadas de la funcion
   
    getch();       
    return 0;
} // Fin main

/* Funcion */
unsigned int f2x3 (int n) {
   
    printf("%i ", n); // Listamos los numeros que va llamando la funcion
   
    if (n == 1) return 1; // Primer caso, si el valor es igual a 1 entonces retornará 1
    if ((n != 1) && (n % 2 == 0) && (n % 3 == 0)) return f2x3(n+5); // Caso II
    if ((n != 1) && (n % 2 == 0) && (n % 3 != 0)) return f2x3(n/2); // Caso III
    if ((n != 1) && (n % 2 != 0) && (n % 3 == 0)) return f2x3(n+2); // Caso IV
    if ((n != 1) && (n % 2 != 0) && (n % 3 != 0)) return f2x3(n-1); // Caso V
   
} // Fin de la funcion



Gracias y un saludo
#76
Hola compañeros, tengo un ejercicio en C que no se muy bien lo que me pide. Os dejo el enunciado para ver si alguien es tan amable de decirme que es lo que pide  ;D


CitarHacer un programa en lenguaje C que pedirá un número entero positivo "n".
Hacer una función: int funcioRe (int n)
  • Si n es 1 escribirá "n" por pantalla y devolverá un 1.
    En caso contrario:
  • Si "n" es par, entonces escribirá "n" por pantalla y llamará a funcioRe () con
    el valor n / 2, (hay que pensar lo que retornara en este caso)
  • Si es impar entonces escribirá "n" por pantalla y llamará a funcioRe () con el
    valor 3n +1 (hay que pensar lo que retornara en este caso)
    El problema consiste en saber el número de llamadas que se hacen hasta obtener el valor 1.

    Ejemplo: si introducimos: 22
    El algoritmo escribirá:
    22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1
    Total: 16 llamadas
Gracias!
#77
jajaja muchas gracias por las molestias, te estoy muy agradecido!


Un saludo
#78
El código es la solución de un ejercicio de la escuela   ;D

Gracias por tu ayuda, eso era lo que quería, pero he tenido que cambiar la variable "año" por "año" de nuevo porque sino peta por todos los lados, si que lo he mantenido en los "printf".


Saludos
#79
Buenas,

Tengo un programa en C que me pide un año y luego me calcula cuantos años tienen que pasar hasta encontrar una cifra que sea repetida, es decir, año 2014 tiene 6 secuencias de años con cifras NO repetidas, ya que 2020 se repite una cifra (el 2).

He logrado que me diga que faltan 6 secuencias, pero ahora me gustaría que me las listará, ejemplo:

- 2014
- 2015
- 2016
- 2017
- 2018
- 2019

¿Se podría hacer?


Mi código actual:

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

#define FALSE 0
#define TRUE 1

/******* Declaracion de funcions ******/
int obtenerAnio();
int tipoAnio(int año);
int calcularSec (int año);

/******* Variables globales ******/
int obtenerAnioOK=FALSE;  // Para NO acceder a la opción 3 antes
int tipoAnioOK=FALSE;    // Para NO acceder a la opción 3 antes

/* MENU PRINCIPAL */
int main(void){
  int opcion=0;
  int año; // Variable año utilizada en las funciones
  do{
    system("cls");
    printf("\n1.- Obtener año");
    printf("\n2.- Tipo de año");
    printf("\n3.- Calcular secuencia");
    printf("\n0.- Salir\n\n");
    printf("\nIntroduce una opcion: ");
    fflush(stdin);
    scanf("%i", &opcion);
    switch (opcion) {
           case 1:
                obtenerAnioOK=FALSE;   // Hacer antes la opción 1 antes que la 3
                tipoAnioOK=FALSE;     // Hacer antes la opción 2 antes que la 3
                año = obtenerAnio();   // Guardaremos en "any" lo que guarde la función obtenirAny
                break;
           
           case 2:
                if (!tipoAnio(año)) printf("\nEl año %i no tiene ninguna cifra repetida\n", año); // Mientras tipusAny no sea igual a "anyo"
                else printf("\nEl año %i tiene cifras repetidas", año);
                break;
               
           case 3:
                if ((obtenerAnioOK)&&(tipoAnioOK)){ // Después de hacerse la opción 1 y 2 TRUE
                                 printf("\nHay %i secuencias de año con cifras no repetidas.", calcularSec(año));
                } // Fin if
                else ("\nDe momento no se ha introducido el año o el tipo de anyo\n");
                break;
               
           case 0:
                break;
               
           default:
                   printf("ERROR, opcion incorrecta!\n");
                   break;
    } // Fin switch
    getch();
  }while (opcion != 0);
  system("pause");
  return 0;
} // Fin main


/************* OBTENER año ***********/
int obtenerAnio(){
    int año; // Variable "año" para guardar la fecha introducida
    do{
        system("cls");
        printf("\tINTRODUCE EL año\n");
        printf("\nIntroduce un numero de cuatro digitos entre 1000 y 9999: ");
        fflush(stdin);
        scanf("%i", &año); // Guardar
        }while ((año<1000)||(año>9999)); // Hacer mientras anyo sea + pequeño de 1000 y + grande de 9999
               
               obtenerAnioOK=TRUE; // FLAG TRUE
        return año;
} // Fin


/*** TIPO año ***/
int tipoAnio(int año){
    int cifras[10] = {0,0,0,0,0,0,0,0,0,0}; // Todas las cifras valen 0 por defecto
    int i=0, x=0, cont=0;
   
    while (año > 0) {
          x = año % 10;     // Se queda con la resta, la cifra a tratar
          año = año / 10;   // Quita el ultimo digito a la cifra
          cifras[x] = 1;     // Asigna 1 a la posició de la cifra tratada
    } // Fin while
   
    for (i=0; i<10; i++) cont = cont + cifras[i];
   
    tipoAnioOK=TRUE; // FLAG TRUE
   
    if (cont == 4) return 0; // No hay ninguna cifra repetida
    else return 1; // Alguna cifra esta repetida
} // Fin

/*** CALCULAR SECUENCIA ***/
int calcularSec (int año){
    int cont=0;
   
    while (!tipoAnio(año++)) cont++; // Mientras tipusAnio pasando any+1, hasta que la función retorne 0, contador ++
                                     // Osea, retornara el número de veces que se ha ejecutado la función tipuusAny hasta dar 0 pasando una variable +1 todo el rato
    return cont;
} // Fin


Gracias
#80
Buenas,

Tengo un portátil Acer (Aspire 5633WLMi) del año 2007.

Este portátil me venía con Windows Vista, y hace tiempo le puse el Windows 7 y desde que lo formatee no me funcionan algunas teclas que vienen en teclado como son las de subir volumen, bajarlo, reproducir, stop, abrir navegador etc.

Hoy instalé Winwdows 8 y probé estas teclas y tampoco me iban en este Sistema Operativo. ¿Cual puede ser el problema? Rotas no creo que estén ¿no?


Recuerdo una vez que en un Live-CD de ubuntu funcionaban.


Gracias