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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Alguien me puede ayudar con este programa?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿Alguien me puede ayudar con este programa?  (Leído 9,453 veces)
ivorybom

Desconectado Desconectado

Mensajes: 3


Ver Perfil
¿Alguien me puede ayudar con este programa?
« en: 4 Noviembre 2012, 14:23 pm »

Hola. El motivo por el que abro este tema es que no se como programar este ejercicio y quería saber si me pueden ayudar a programarlo. Es un poco urgente, así que agradecería respuestas rápidas.

Se pide la implementación de un programa en lenguaje C para rellenar un vector de 10 números enteros sin que se repita ningún valor. El programa deberá controlar que cuando el usuario introduzca un nuevo valor éste no haya sido introducido previamente; si dicho valor ya existe en el vector el programa deberá volver a pedir otro hasta que el que se introduzca no exista.

Gracias de antemano.

MOD: No se hacen tareas!


« Última modificación: 4 Noviembre 2012, 19:27 pm por Aprendiz-Oscuro » En línea

crazykenny


Desconectado Desconectado

Mensajes: 4.238



Ver Perfil WWW
Re: ¿Alguien me puede ayudar con este programa?
« Respuesta #1 en: 4 Noviembre 2012, 14:34 pm »

Hola; por mi parte, una opcion es crear una matriz de 10 valores, y, luego, con el comando input insertado dentro de un bucle for-next que se repita 10 veces para insertar los diez valores.
Por ultimo, y, despues del comando input (el cual asigna el valor a una variable), habria que poner otro bucle for-next (el cual tambien se repite 10 veces) con una comprobacion a traves del comando if, de tal forma que compruebe si el valor de la variabe esta dentro de alguno de los diez de la matriz, de tal forma que, si esta, vuelva al comando input para que vuelva a pedir insertar el mismo valor (y yo lo realizaria con el comando "Goto"); no obstante, y, si el valor de la variable no esta en la matriz, pues el programa tendria que seguir, de tal forma que asigne el valor de la variable a la respectiva posicion de la matriz; cabe destacar que, bueno, los bucles for-next utilizan una variable para determinar cuantas repeticiones del bucle se han realizado, y, por mi parte, esta la utilizaria para determinar que posicion de la matriz hay que asignarle el valor del input.
Espero haberte podido ser de ayuda.
Muchas gracias por vuestra atencion.
Saludos.


En línea

A nivel personal, lo que me da mas miedo no son los planteamientos y acciones individuales, sino las realizadas en grupo, ya que estas ultimas pueden acabar con consecuencias especialmente nefastas para todos.
Se responsable, consecuente y da ejemplo.
https://informaticayotrostemas.blogspot.com/

Mi canal de Youtube:

https://www.youtube.com
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: ¿Alguien me puede ayudar con este programa?
« Respuesta #2 en: 4 Noviembre 2012, 15:33 pm »

Citar
Creo que esto es justo lo que pides:
Código
  1. #include <stdio.h>
  2. #define N   10
  3. int main(){
  4.    int array[N],array_[N],i,j;
  5.    for (i=0;i<N;i++){
  6.            printf ("Introducir numero:");
  7.            scanf ("%d",&array[i]);
  8.            for (j=0;j<i;j++) {
  9.                    if (array[j]==array[i]){
  10.                           printf ("Numero repetido.  ");i--;break;
  11.                       }
  12.                }
  13.        }
  14.    for (i=0;i<N;i++)
  15.        printf ("%d  ",array[i]);
  16.    return 0;
  17. }
Saludos!.
« Última modificación: 4 Noviembre 2012, 18:51 pm por leosansan » En línea

crazykenny


Desconectado Desconectado

Mensajes: 4.238



Ver Perfil WWW
Re: ¿Alguien me puede ayudar con este programa?
« Respuesta #3 en: 4 Noviembre 2012, 16:28 pm »

Hola leosansan; una cosa sobre tu codigo, y sin animo de ofender, ni nada por el estilo, pero, en el segundo bucle "for", y, en caso de que el bucle estuviese repetido, ¿no deberia haber un goto que redirija (u algo asi) hacia la pregunta del numero, con la respectiva etiqueta antes de pedir el numero?, no se, es que, a lo mejor me he liado, pero no lo he visto (creo), pese a que no se programar en C++.
Por ultimo, una ultima pregunta, si me lo permites, y sin animo de criticar, ni nada por el estilo, pero, creo que falta lo que es la asignacion de la posicion actual a la matriz, en el sentido de, por ejemplo, poner algo asi como;
matriz(posicion)=variable
Se que suena algo chapucero esto que acabo de escribir en la linea anterior, pero creo que falta ponerlo, y me disculpo por las molestias causadas.
Muchas gracias por vuestra atencion.
Saludos.
En línea

A nivel personal, lo que me da mas miedo no son los planteamientos y acciones individuales, sino las realizadas en grupo, ya que estas ultimas pueden acabar con consecuencias especialmente nefastas para todos.
Se responsable, consecuente y da ejemplo.
https://informaticayotrostemas.blogspot.com/

Mi canal de Youtube:

https://www.youtube.com
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: ¿Alguien me puede ayudar con este programa?
« Respuesta #4 en: 4 Noviembre 2012, 16:53 pm »

El segundo for compara cada nuevo valor con todos los anteriores introducidos y si encuentra uno igual sale del bucle y no se toma ese valor, y como no se toma se restituye los contadores con i--  y j--, retornando a continuación al primer for, donde se continua la introducción de los números. No hace falta ningún goto.
Si quieres la posición del valor puedes cambiar

Código
  1. printf ("%d  ",array[i]);
por esta otra:
Código
  1. printf ("\ncomponente %d =  %d",i+1,array[i]);
Por cierto, el código está en C, no en C++.
« Última modificación: 4 Noviembre 2012, 17:06 pm por leosansan » En línea

crazykenny


Desconectado Desconectado

Mensajes: 4.238



Ver Perfil WWW
Re: ¿Alguien me puede ayudar con este programa?
« Respuesta #5 en: 4 Noviembre 2012, 17:11 pm »

Gracias por la aclaracion, leosansan, pero ivorybom creo que ha comentado acerca de que, si el valor ya existe, tiene que pedir otro hasta que deje de repetirse, y, bueno, me imagino que sera de forma "indefinida", motivo por el cual he comentado acerca de lo de insertar el goto para que vuelva a preguntar el numero, y no pasar al siguiente como me comentas, puesto que, bueno, al pasar otra vez al bucle principal, preguntaria hasta un limite, en este caso, hasta que i no sea superior a N, y por esto he comentado acerca del goto hacia la pregunta del valor.
Muchas gracias por vuestra atencion.
Saludos.
En línea

A nivel personal, lo que me da mas miedo no son los planteamientos y acciones individuales, sino las realizadas en grupo, ya que estas ultimas pueden acabar con consecuencias especialmente nefastas para todos.
Se responsable, consecuente y da ejemplo.
https://informaticayotrostemas.blogspot.com/

Mi canal de Youtube:

https://www.youtube.com
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: ¿Alguien me puede ayudar con este programa?
« Respuesta #6 en: 4 Noviembre 2012, 17:18 pm »

O puedes hacerlo asi para que la salida sea mas atractiva  ;D

Código
  1. #include <stdio.h>
  2. #define N 10
  3.  
  4. int main(){
  5.    int array[N], i, j;
  6.  
  7.    for(i=0; i<N; i++){
  8.       printf ("Introducir numero para la posicion[%i]: ", i);
  9.       scanf ("%d", &array[i]);
  10.  
  11.    for(j=0; j<i; j++) {
  12.       if(array[j]==array[i]){
  13.         printf ("Numero repetido!!!\n");i--;j--;break; }
  14.                }
  15.        }
  16.    return 0;
  17. }

Un saludo!!
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ¿Alguien me puede ayudar con este programa?
« Respuesta #7 en: 4 Noviembre 2012, 17:24 pm »

pero ivorybom creo que ha comentado acerca de que, si el valor ya existe, tiene que pedir otro hasta que deje de repetirse, y, bueno, me imagino que sera de forma "indefinida", motivo por el cual he comentado acerca de lo de insertar el goto para que vuelva a preguntar el numero
No es necesaria una sentencia de salto "goto" porque si el numero esta repetido la iteracion se repite debido al decremento:
Código
  1. if (array[j]==array[i]){
  2.   printf("Numero repetido.  ");
  3.   i--; /* <== Al decrementar se repite la operacion */
  4.   j--;
  5.   break;
  6. }

Y sin animo de molestar les recuerdo que una de las políticas de estos foros es no hacer las tareas del prójimo.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
crazykenny


Desconectado Desconectado

Mensajes: 4.238



Ver Perfil WWW
Re: ¿Alguien me puede ayudar con este programa?
« Respuesta #8 en: 4 Noviembre 2012, 17:30 pm »

Ah, es cierto, y muchas gracias por comentar lo del "i--", rir3760, y me disculpo por el malentendido relacionado con el goto y demas, puesto que no recordaba esto que comentas.
Muchas gracias por vuestra atencion.
Saludos.
En línea

A nivel personal, lo que me da mas miedo no son los planteamientos y acciones individuales, sino las realizadas en grupo, ya que estas ultimas pueden acabar con consecuencias especialmente nefastas para todos.
Se responsable, consecuente y da ejemplo.
https://informaticayotrostemas.blogspot.com/

Mi canal de Youtube:

https://www.youtube.com
BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: ¿Alguien me puede ayudar con este programa?
« Respuesta #9 en: 4 Noviembre 2012, 17:36 pm »

rir3760, claro que no debemos resolver las tareas del prójimo, porque además así no le ayudamos en nada pero, en este caso, crazykenny, se molestó en preguntar cosas y en tratar de entenderlas y eso también es importante.

De nada sirve que exponga un código sin ningún sentido y sin saber realmente lo que hace cada cosa aunque para aprender a programar hay que programar y programar.

Saludos y perdón por el off-topic xD
En línea

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

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines