• Miércoles 20 de Noviembre de 2024, 12:36

Autor Tema:  Ayudenme Porfavor Porfavor  (Leído 3364 veces)

Gero_M

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
    • http://www.nirvanamedia.net
Ayudenme Porfavor Porfavor
« en: Miércoles 23 de Junio de 2004, 04:24 »
0
Hola disculpen que los moleste con estas cosas, pero es que tengo un problema y no lo he podido resolver necesito generar un programa en C con el siguiente problema
“  Juan,  el  cartero,  una  noche  se  aburría  y  para  romper  la  monotonía  llevó  a  cabo  un  experimento  con  una  fila  de  buzones    de  correo.    Estos  buzones  estaban  numerados  del  1  al  150,  y  empezando  con  el  2  abrió  todas  las  puertas  de  los  buzones  numerados  con  un  número  par.      Después,  comenzando  con  el  buzón  3,  fue  de  tres  en  tres  abriendo  las  puertas  si  estaban  cerradas  y  cerrándolas  si  estaban  abiertas.  Volvió  a  repetir  este  proceso  con  los  buzones  haciéndolo  de  cuatro  en  cuatro,  de  cinco  en  cinco,  etc.  Cuando  terminó,  se  sorprendió  de  la  distribución  de  los  buzones  cerrados.  Escriba  un  programa  que  determine  cual  eran  estos  buzones.  “

La  solución  por  Ud.  propuesta  debe:
  Utilizar  vectores
  Utilizar  funciones

espero que puedan ayudarme y nuevamente disculpen por molestar con cosas que yo deberia resolver solo, pero este foro me genero la confianza de preguntar y me genera confianza por sus respuestas...
gracias Atentamente GERO_M :comp:
"Las Estrellas están ahí... Solo debes Mirarlas"

Gero_M

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
    • http://www.nirvanamedia.net
Re: Ayudenme Porfavor Porfavor
« Respuesta #1 en: Miércoles 23 de Junio de 2004, 05:10 »
0
Hola Denuevo se que nadie me ha respondido y que pensaran que solo espero que me hagan la tarea se que uds. no hacen las tareas... pero miren
Yo he echo este codigo para inicializar el vector en 0 que significaria Buzon cerrado pero cuando trato de poner un for(i=1;i<150;i+2) para que valla de 2 en 2 poniendo 1 me manda error esto es lo que tengo:

#include <stdio.h>
#include <conio.h>
int a,b,c,d,i,j;
int vec[150];
main()
{
printf("problema de buzones ");
for(i=0;i<150;i++)
vec=0;
for(i=0;i<150;i++)
if(vec==0)
printf("\nBuzon Cerrado");
else printf("\nBuzon Abierto");
getch();
}
y creo que el programa va por aqui: #include <stdio.h>
#include <conio.h>
int a,b,c,d,i,j;
int vec[150];
main()
{
printf("problema de buzones ");
for(i=0;i<150;i++)
vec=0;
for(i=0;i<150;i+2)
if(vec==0)
vec=1;
i++;
for(i=0;i<150;i++)
if(vec==0)
printf("\nBuzon Cerrado");
else printf("\nBuzon Abierto");
getch();
}
pero el programa corre pero no muestra nada...
espero ayuda gracias.
"Las Estrellas están ahí... Solo debes Mirarlas"

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Ayudenme Porfavor Porfavor
« Respuesta #2 en: Miércoles 23 de Junio de 2004, 06:43 »
0
y entonces cual es tu problema...
por lo menos deberias detectar el problema para que te ayudaramos con cosas mas puntuales..
nadie tiene tiempo para ponerce a hacer seguimiento..
por lo meno yono lo tengo.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Blag

  • Moderador
  • ******
  • Mensajes: 697
    • Ver Perfil
    • http://atejada.blogspot.com
Re: Ayudenme Porfavor Porfavor
« Respuesta #3 en: Miércoles 23 de Junio de 2004, 07:33 »
0
Citar
for(i=1;i<150;i+2)

No debería ser......

Código: Text
  1. for(i=1;i&#60;150;i+=2)
  2.  

Saludos,

Blag  :devil:

Noel Solw

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: Ayudenme Porfavor Porfavor
« Respuesta #4 en: Miércoles 23 de Junio de 2004, 17:59 »
0
Este problema tiene muchisimas versiones, esta de los buzones la veo por primera vez.
Al finalizar el proceso, los buzones numerados con el cuadrado de un numero entero quedan abiertos si los demas estan cerrados (o viceversa).
Esto se debe, a que todos los numeros que nos son cuadrados tienen un numero par de divisores distintos, mientras que los cuadrados lo tienen impar.
Por ejemplo, los disores de 13 son  dos : 1 y 13, los de 32 son seis : 1,2,4,8,16 y 32, mientras que los de 25 son tres : 1,5 y 25 (5 divide dos veces pero es un solo divisor distinto).
En estos momentos estoy muy ocupado, si todavia no has solucionado el problema, avisame a ver si puedo darte una mano.

Gero_M

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
    • http://www.nirvanamedia.net
Re: Ayudenme Porfavor Porfavor
« Respuesta #5 en: Jueves 24 de Junio de 2004, 02:10 »
0
Gracias Noel Solw..
miren he creado un nuevo codigo que es el siguiente

#include <stdio.h>
#include <conio.h>
int i,x,vec[150];
main()
{
printf("Problema de Buzones ");
for(i=0;i<150;i++)
vec=0;

for(x=1;x<150;x=x++);
for(i=x;i<150;i+x)
if(vec==0) vec=1;
else vec=0;

for(i=0;i<150;i++)
if(vec==0)
printf("\nBuzon Cerrado");
else printf("\nBuzon Abierto");
getch();
}

lo hice para ir incrementando el i en razon de x para que valla de 2 en 2 luego de 3 en 3 y asi sucesivamente lo que pasa es que ahora me imprime solo buzon cerrado y no abre ningun buzon ...
"Las Estrellas están ahí... Solo debes Mirarlas"

Gero_M

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
    • http://www.nirvanamedia.net
Re: Ayudenme Porfavor Porfavor
« Respuesta #6 en: Jueves 24 de Junio de 2004, 03:04 »
0
hola he terminado mi programa pero debo hacerlo con funciones y no he podido dejar las funciones quiero hacer una donde el programa haga el procedimiento de abrir y cerrar buzones y otra para imprimirla pero no he podido...
este es mi programa final:
#include <stdio.h>
#include <conio.h>
int i,x,vec[150];
main()
{
printf("\t\t\tProblema de Buzones \n");
for(i=0;i<150;i++)
vec=0;
do
for(x=1;x<150;x=x++)
for(i=x;i<150;i=i+x)
if(vec==0) vec=1;
else vec=0;
while(i==150);

for(i=0;i<150;i++)
if(vec==0)
printf("\n %d : Buzon Cerrado", i+1);
else
printf("\n %d : Buzon Abierto", i+1);
getch();
}  

y creo que las funciones deberian ser asi

#include <stdio.h>
#include <conio.h>
int buzon[150];
int i,x;
main()
{
printf("\t\t\tProblema de Buzones \n");
for(i=0;i<150;i++)
buzon=0;
buzon();
imprimir();
getch();
}

   buzon()
   {
do
for(x=1;x<150;x=x++)
for(i=x;i<150;i=i+x)
if(buzon==0) buzon=1;
else buzon=0;
while(i==150);
   }

      imprimir()
      {
for(i=0;i<150;i++)
if(buzon==0)
printf("\n %d : Buzon Cerrado", i+1);
else
printf("\n %d : Buzon Abierto", i+1);
      }

pero me manda errores:
  called object is not a function
`buzon' redeclared as different kind of symbol
y otros similares pero con imprimir... porfavor ayudenme...
"Las Estrellas están ahí... Solo debes Mirarlas"

Blag

  • Moderador
  • ******
  • Mensajes: 697
    • Ver Perfil
    • http://atejada.blogspot.com
Re: Ayudenme Porfavor Porfavor
« Respuesta #7 en: Jueves 24 de Junio de 2004, 05:26 »
0
Citar
for(x=1;x<150;x=x++)

No necesitas asignar el valor a x, si ya lo estás incrementando con el ++.

Código: Text
  1. for(x=1;x&#60;150;x++)
  2.  

Primero, necesitas declarar un tipo de dato para la función, segundo, necesitas declarar la función antes de llamarla.

Código: Text
  1.  
  2. #include &#60;stdio.h&#62;
  3. #include &#60;conio.h&#62;
  4. int buzon[150];
  5. int i,x;
  6.  
  7. void buzones();
  8. void imprimir();
  9.  
  10. main()
  11. {
  12. printf(&#34;&#092;t&#092;t&#092;tProblema de Buzones &#092;n&#34;);
  13. for(i=0;i&#60;150;i++)
  14. buzon[i]=0;
  15. buzones();
  16. imprimir();
  17. getch();
  18. }
  19.  
  20. void buzones()
  21. {
  22. do
  23. for(x=1;x&#60;150;x++)
  24. for(i=x;i&#60;150;i=i+x)
  25. if(buzon[i]==0) buzon[i]=1;
  26. else buzon[i]=0;
  27. while(i==150);
  28. }
  29.  
  30. void imprimir()
  31. {
  32. for(i=0;i&#60;150;i++)
  33. if(buzon[i]==0)
  34. printf(&#34;&#092;n %d : Buzon Cerrado&#34;, i+1);
  35. else
  36. printf(&#34;&#092;n %d : Buzon Abierto&#34;, i+1);
  37. }
  38.  
  39.  

Saludos,

Blag  :devil:

jejejeje.....Le tuve que quitar los tags de negrita al código, porque no sabía que no funcionaban dentro de un tag de code..... :lol:

Noel Solw

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: Ayudenme Porfavor Porfavor
« Respuesta #8 en: Jueves 24 de Junio de 2004, 09:46 »
0
Estimado Gero, reforme un poco tu programa para que trabaje con funciones.
Exito ! ! !
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Gero_M

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
    • http://www.nirvanamedia.net
Re: Ayudenme Porfavor Porfavor
« Respuesta #9 en: Viernes 25 de Junio de 2004, 03:03 »
0
Muchas Gracias Blaq y Noel Slow... es bueno saber que siempre puede haber alguien te escucha y da la mano...
me despido he terminado bien mi programa se lo agradesco a ambos...
y Noel Slow siempre he esperado tener Exito gracias...
Chao Atte
                                          GERO :hola:
"Las Estrellas están ahí... Solo debes Mirarlas"

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Ayudenme Porfavor Porfavor
« Respuesta #10 en: Viernes 25 de Junio de 2004, 04:12 »
0
Sólo agregar un pequeño truquillo de optimización muy recomendable en estos casos para evitar el "if".   :)

En lugar de
Código: Text
  1.  
  2. if(buzon[i]==0) buzon[i]=1;
  3. else buzon[i]=0;
  4.  
  5.  
es mejor
Código: Text
  1.  
  2. buzon[i]^= 1;
  3.  
  4.  

lidenbrock

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Ayudenme Porfavor Porfavor
« Respuesta #11 en: Jueves 8 de Julio de 2004, 06:22 »
0
:lol: Hola, quizà no sirva de mucho, pero es recomendable (al menos asì lo hago) que al momento de declarar las funciones o las variables, si son del mismo tipo las declares en una sola lìnea hasta el final de la línea visible en el  editor.
Ejemplo: :comp:

//para declarar variables
int contador,m,n,j,i,parar,elige,seleccion;

//para declarar funciones
void estructura(),mapa(),raton(),grafico(),reloj(),xyrata();

De esta manera, evitas el repetir el nombre de las funciones y de las variables, lo que te generaba un error en tu programa. :scream: