• Lunes 29 de Abril de 2024, 22:27

Autor Tema:  Re: ayuda urgente!!!!!  (Leído 1320 veces)

akito0i

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: ayuda urgente!!!!!
« en: Miércoles 19 de Marzo de 2003, 21:28 »
0
texto Blue necesito ayuda para el siguiente codigo, si lo corren, esta bien, funciona, pero lo que yo quiero que haga es que solo llegue al ABC, y no muestre las demas comboinasciones...

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

void Combinaciones(int o,int n);

char cinta[31];
char palabra[100];
char temp[2];

int main (void){


   printf("tt      Programa que muestra Subcadenasnn");

   int a;

   for(a=0;a<31;a=a+3){

      cinta[a]='A';
      cinta[a+1]='B';
      cinta[a+2]='C';
   }


   int l=0;
   int m=1;
   printf("0n");


   do{


   
   Combinaciones(l,m);
   printf("%sn", palabra);
   l=l+1;
    m=m+1;
    if(l>2){ l=0;m=m-2;}

   }while(m!=10);

   return 0;

}

void Combinaciones(int o,int n){
      int a;

      for(a=0;a<101;a++){

         palabra[a]='';
      }

      cinta[0]='A';

      for(a=o;a<n;a++){

       temp[0]= cinta[a];
       temp[1]='';
       strcat(palabra,temp);

      }


}


en pocas palabras solo deme de mostrarme lo siguiente...
0
A
B
C
AB
AC
BC
ABC

AYUDA!!!:think:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: ayuda urgente!!!!!
« Respuesta #1 en: Viernes 21 de Marzo de 2003, 15:04 »
0
No entiendo que es lo que pretendes hacer...:
for(a=0;a<31;a=a+3)
{
  cinta[a]='A';
  cinta[a+1]='B';
  cinta[a+2]='C';
}

Aqui entiendo que llenas 'cinta' con valores :
[A][C][A]<b>[C][A]<b>[C][A]<b>[C][A]<b>[C][A]<b>[C]..
Hasta llegar al indice 30.
Seguidamente, si te fijas lo primero que haces en cada vuelta del <b>do
:

do
  {
    Combinaciones(l,m);

es llamar a la funcion Combinacion, y cada que invocas esta funcion llenas el arreglo palabra del caracter ''
  for(a=0;a<101;a++)
  {
    palabra[a]='';
  }
hasta ahi todo va bien, pero luego haces algo innecesario:
cinta[0]='A';
asi que cada vez que llamas a combinacion cinta[0] que da igual a 'A'.. no es necesario que hagas siempre lo mismo.
luego haces esto:
for(a=o;a<n;a++)
  {
    temp[0]= cinta[a];
    temp[1]='';
    strcat(palabra,temp);
  }
para que?  si te fijas el arreglo temp solo tiene dos pocisiones asi que cada entrada al for le borras lo que le acabas de colocar para dejar en temp[1] el mismo '' y cambiar el valor de temp[0], si te fijas el ciclo no hace nada diferente de cambiar siempre los valores de temp.

Revisa muy bien tu programa porque tiene bastntes inconsistencias, acostumbrate siempre a hacer pruebas de escritorio y a correr los programas paso por paso , para asi poder revisar que valores toman las variables en los diferentes momentos de ejecucion.

Suerte. :lightsabre:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

akito0i

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: ayuda urgente!!!!!
« Respuesta #2 en: Lunes 24 de Marzo de 2003, 07:31 »
0
AHHHHH mira, lo que pasa es que queria hacer un programa que recibiera "n" numero de combinaciones, y pues hiciera todas las combinaciones posibles sin que se repitieran, por ejemplo con 3 variables, A,B,C.... las combinaciones serian..:
0
A
B
C
AB
AC
BC
ABC
eso seria lo que yo queria que saliera en pantalla, pero no se como hacerlo jejejeje, por eso me doy de cocos ahorita, una sugerencia para este programa?

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
ayuda urgente!!!!!
« Respuesta #3 en: Miércoles 26 de Marzo de 2003, 18:01 »
0
si lo requieres hacer con "n" numero de items, debes emplear una estructura dinamica y no un arreglo
es decir no
char cinta[31];

sino algo asi como

struct cadena
{
  struct cinta *back;
  char item;
  struct cinta *next;
}cinta;

La verdad no esta dificil pero si bastante dispendioso, ya que hacer n combinaciones implica que elabores una funcion que te diga la cantidad de nodos en la estructura, otra  que haga iteraciones en cada nodo, otra que controle el numero total de iteraciones en fin...
suerte.
coimo recomendacion borra el codigo que tienes y comienza desde cero ya que tienes bastantes bug... por ahi.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io