elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con un programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con un programa  (Leído 1,989 veces)
norris

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Ayuda con un programa
« en: 2 Noviembre 2012, 16:36 pm »

Escribir un programa que muestre al usuario el primer número medio y a continuación le  pregunte si quiere el siguiente. Si el usuario responde que sí ('s'), el programa ha de  calcular y mostrar el siguiente número medio y ha de volver a preguntar al usuario si quiere el siguiente. El proceso se repetirá hasta que el usuario responda que no ('n'). Cada vez que el usuario tenga que responder con una 's' o una 'n', no se admitirá ninguna otra respuesta, repitiendo la pregunta hasta obtener uno de esos dos caracteres.

Un número entero n que sea mayor o igual que 1 es medio si la suma de sus predecesores (1 + 2 + 3 + … + n – 1) se puede obtener también sumando algunos números contiguos que le siguen:

Ejemplos de números medios y no medios:
 6 es medio porque 1 + 2 + 3 + 4 + 5 = 15 y 7 + 8 = 15. Es decir, la suma de los
predecesores de 6 es obtenible sumando algunos sucesores contiguos de 6.
 35 es medio porque 1 + 2 +...+ 34 = 595 y 36 + 37 +…+ 49 = 595 Es decir, la
suma de los predecesores de 35 es obtenible sumando algunos sucesores contiguos  de 35.
 7 no es medio porque 1 + 2 + 3 + 4 + 5 + 6 = 21 y no se puede obtener el valor 21 sumando números contiguos a partir de 8: 8 ≠ 21, 8 + 9 ≠ 21, 8 + 9 + 10 ≠ 21,


Nose por donde cogerlo, podría hacer dos funciones pero nose como. Gracias de antemano


En línea

$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: Ayuda con un programa
« Respuesta #1 en: 2 Noviembre 2012, 17:04 pm »

Papel y lapicera siempre ayuda para plantearte todo.

Create primero la estructura del programa, que seria la forma en que mostrara el mensaje y preguntara si quiere otro o no.

Hacer:
    Mostrar numero medio -Llamar funcion-;
   
        Mientras: Respuesta es distinto a 'n' o 's'.
             Preguntar si continua o no;
             Guardar respuesta en variable Respuesta;

Mientras: Respuesta sea igual a 's'.   

Salir del programa:

Ahora la funcion es lo mas dificil, que ideas tenes pensadas? porque dices dos funciones? si das alguna idea y haces la parte de la estructura que te deje y la mostras aca, me pongo a pensar luego el algoritmo para eso que no quiero pensar en vano xD Saludos!


En línea

norris

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Ayuda con un programa
« Respuesta #2 en: 2 Noviembre 2012, 17:16 pm »

pues tenia pensado dos funciones.

la primera funcion, si  numero x >= 1, decide si es medio o no. Si x
es medio, la función devolverá un 1 y si no devolverá un 0

y la segunda, la funcion que pregunte al usuario si desea otro medio.

la primera funcion es la que no se por donde pillarla. Y gracias por responder
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda con un programa
« Respuesta #3 en: 2 Noviembre 2012, 17:55 pm »

Citar
Tienes la base del programa en
http://foro.elhacker.net/programacion_cc/ayuda_urgente_en_c_calcular_centros_numericos-t373982.0.html
En línea

norris

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Ayuda con un programa
« Respuesta #4 en: 2 Noviembre 2012, 19:21 pm »

Muchísimas gracias.

En cuanto lo acabe pongo el código por si alguien lo necesita. Un saludo
En línea

norris

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Ayuda con un programa
« Respuesta #5 en: 3 Noviembre 2012, 15:12 pm »

Pff no consigo hacerlo. Con el codigo que me has puesto pense que iba a salir.Sin embargo el programa tiene que salir por partalla de la siguiente forma:

El primer numero medio es: 6
Quieres el siguiente numero medio?(s/n): q
El dato introducido no es adecuado.
Quieres el siguiente numero medio?(s/n): s
El siguiente numero medio es: 35
Quieres el siguiente numero medio?(s/n): n
Pulsa una tecla para terminar.
En línea

BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: Ayuda con un programa
« Respuesta #6 en: 3 Noviembre 2012, 15:43 pm »

La idea de los ciclos para el control del programa es cosa tuya ya que es muy sencillo. Con referencia al algoritmo pues también.

Lo puedes resolver con ciclos anidados. La idea es la siguiente

Sea N el número que se quiere averiguar si es medio.

Sea S1 = Sumatorio desde 1 hasta N-1
Sea S2 = Sumatorio desde N+1 hasta m, con m siendo el término que hace que S2 >= S1.

Si S2 = S1, N es medio. Si S2 > S1, N no es medio.

Un poco de código chapuza:

Código
  1. #include <stdio.h>
  2.  
  3. int main (void) {
  4.  
  5.    int N = 6, i;
  6.    int sumaAntecesores = 0; // S1
  7.    int sumaPredecesores = 0; // S2
  8.  
  9.    for (i=1; i<N; i++) sumaAntecesores += i;
  10.  
  11.    while (sumaPredecesores < sumaAntecesores) sumaPredecesores += ++N;
  12.  
  13.    printf("%d\n", (sumaAntecesores == sumaPredecesores ? 1 : 0));
  14.  
  15.    return 0;
  16. }

Ahí hago el proceso iterativo para verificar si un número N es medio o no.

En tu caso N varía entre 1 y una MACRO de tamaño máximo, por ejemplo, el tamaño aceptado por la máquina. O usar un while (true) {}, teniendo una variable que recorra los Z+ y de la cual averiguaremos si es medio o no en cada iteración.

Para mejorar el proceso podrías llevar sumas parciales en el proceso...

Aunque el algoritmo de leosansan es mucho más eficiente.
« Última modificación: 3 Noviembre 2012, 16:04 pm por BatchianoISpyxolo » En línea

Puede que desees aprender a programar desde 0: www.espascal.es
norris

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Ayuda con un programa
« Respuesta #7 en: 3 Noviembre 2012, 16:57 pm »

LLevo poco tiempo en lo de la programación. La cuestion es que el programa no dice dame un numero y a partir de eso numero te da el primer centrico. sino que

imprime por pantalla:(lo que viene en negrita es lo que tienes que introducir, solo tienes que introducir s,n u otra letra( si imprime otra letra le dira que el dato no es adecuado)


El primer numero medio es: 6
Quieres el siguiente numero medio?(s/n): q
El dato introducido no es adecuado.
Quieres el siguiente numero medio?(s/n): s
El siguiente numero medio es: 35
Quieres el siguiente numero medio?(s/n): s
El siguiente numero medio es: 204
Quieres el siguiente numero medio?(s/n): n
Pulsa una tecla para terminar.
En línea

BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: Ayuda con un programa
« Respuesta #8 en: 3 Noviembre 2012, 17:56 pm »

Pues sencillo con un ciclo.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main () {
  5.  
  6.    char * c = malloc(sizeof(char));
  7.  
  8.    do scanf("%c", c);
  9.    while( (*c != 's') && (*c != 'n') );
  10.  
  11.    puts((*c == 's') ? "salir" : "continuar");
  12.  
  13.    free(c);
  14.    c = NULL;
  15.  
  16.    return 0;
  17. }
Cuando sea n, continuas buscando un siguiente medio...

Es simplemente pedir un carácter hasta que sea s o n, en cuyo caso saldrá del bucle y en c tendremos el carácter que introdujo y con él poder realizar una acción u otra.
« Última modificación: 3 Noviembre 2012, 17:59 pm por BatchianoISpyxolo » En línea

Puede que desees aprender a programar desde 0: www.espascal.es
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA CON PROGRAMA
Diseño Gráfico
Luisango 1 2,456 Último mensaje 17 Abril 2005, 13:25 pm
por Sub_Cero
ayuda con mi programa
Programación Visual Basic
nitrox 2 2,355 Último mensaje 31 Julio 2005, 00:48 am
por Slasher-K
ayuda programa!!
Programación C/C++
rodrigo_103 4 3,375 Último mensaje 16 Septiembre 2012, 21:58 pm
por rodrigo_103
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines