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 - MessageBoxA

#11
Programación C/C++ / Re: estructuras dinamicas
2 Noviembre 2014, 13:15 PM
bueno mi duda seria como hago las otras dos estructuras, en el enunciado dice que tengo que hacer una lista para los CDs y una lista para la disqueras y como la relaciono con la primera que hice que es la de "interprete"
#12
Programación C/C++ / estructuras dinamicas
2 Noviembre 2014, 04:06 AM
SALUDOS A TODOS!!!!  ;D
bien quiero informar que se que aqui no se hacen tareas pero cuando la persona que solicita ayuda por lo menos ya a adelantado parte de su proyecto entonces se hace la ecepcion y se ayuda en algo a la persona y yo soy uno de esas personas, estoy haciendo un codigo y bueno e realizado parte de el pero estoy algo trancado y solicito de su ayuda colegas programadores

aqui el enunciado (algo largo)

Código (java) [Seleccionar]
La empresa disquera "TEMPTATIONS" desea obtener información rápida de sus CD´s e Intérpretes, es decir; que por el titulo de un CD desea conocer el interprete y, dado un intérprete conocer todos los CD´s que él posee.
Se sabe que están disponibles las siguientes estructuras de listas, almacenadas en forma dinámica:
LISTAS DE INTÉRPRETES: Sus nodos contienen la siguiente información:
- Nombre del intérprete,
- Apuntador al principio de la lista de CD´s que posee el interprete,
- Apuntador al final de la lista de CD´s que posee ese interprete,
- Apuntador al sucesor de la lista del intérprete.
LISTAS DE CD´s: Sus nodos contienen la siguiente información:
- Nombre del CD,
- Apuntador al sucesor de la lista de CD´s de ese interprete.
LISTA DE DISQUERAS:
- Nombre de la Disquera,
- Apuntador al sucesor de la lista de Disquera de ese CD.
Nota: Suponga que un CD consta de un único interprete y de una sola disquera, y un intérprete puede tener uno o más CD´s y haber grabado con una o más disqueras.
Basado en la información anterior:
Diseñe un algoritmo y un programa en C, muestre un menú cuya primera opción sea para agregar los elementos de la lista, la segunda opción debe mostrar el nombre de los intérpretes y todos sus CD´s y estos a su vez la disquera, si este existe o envíe un mensaje de error en caso contrario, la opción de eliminar elementos de la lista y la última opción de salir.


y aqui mi code
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

using namespace std;

typedef struct TEMPTATIONS
{
  char interprete[20];
  char CDs[15];
  TEMPTATIONS *siguiente;
  } TEMPTATIONS;
 
 
void mostrar_menu();
void agregar_elemento();
void mostrar_lista();
void eliminar();
 
TEMPTATIONS *primero, *ultimo;

int main()
{
    char opcion;
    primero=(TEMPTATIONS *)NULL;
    ultimo=(TEMPTATIONS *)NULL;
    do
    {
       mostrar_menu();
       opcion=getche();
       switch(opcion)
       {
                     
           case '1': agregar_elemento();
           break;
           case '2': mostrar_lista();
           break;
           case '3': eliminar();
           break;
           case '4': exit(1);
           
           default: printf("Opcion no valida\n");
           break;
       }
    }while(opcion!='4');
     



   void mostrar_menu()
   {
      printf("1.- Anadir Interprete \n");
  printf("2.- Mostrar Lista de Interpretes?\n");     
  printf("3.- Eliminar Interprete?\n");
      printf("4.- Salir\n\n");
      printf("Escoge una opcion: \n");
      fflush(stdin);
     
       
   }
                   
  void agregar_elemento()
  {
    TEMPTATIONS *nuevo;
    nuevo=(TEMPTATIONS *)malloc(sizeof(TEMPTATIONS));
    if(nuevo==NULL)
     printf("No hay memoria disponible!!! \n");
     
     else
     {
             printf("\n");
      printf("Agregar \n");
      printf("Interprete: ");
      fflush(stdin);
      gets(nuevo->interprete);
      printf("CDs: ");
      fflush(stdin);
      gets(nuevo->CDs);
      nuevo->siguiente=NULL;
         
         
       if(primero==NULL)
       {
       
       
       
        primero=nuevo;
        ultimo=nuevo;
     
       }
       else
       {                         
       ultimo->siguiente=nuevo;
       ultimo=nuevo;
       }
      }
       system("pause");
        system("cls");
  }
 
  void mostrar_lista()
  {
    TEMPTATIONS *auxiliar;
    int i;
    i=0;
    auxiliar=primero;
    printf("\n Mostrando la lista completa:\n");
    while(auxiliar!=NULL){   
       printf("Interprete: %s, CDs: %s\n",auxiliar->interprete, auxiliar->CDs);
       auxiliar= auxiliar->siguiente;
       i++;
     
    } 
    if(i==0){
    printf("\nLa lista esta vacia!!\n");
    }
  }

   void eliminar()
   {
    TEMPTATIONS *aux2, *aux1, *auxiliar1;
    int j, borralo;

auxiliar1=primero;
     j=1;
     
      if(auxiliar1==NULL)
      {
        printf("--->La lista esta vacia\n");
       }
   else
       {
        while(auxiliar1!=NULL)
        {
     printf("\n %d Interprete: %s y su CDs es:%s \n",j,auxiliar1->interprete,auxiliar1->CDs);
     auxiliar1=auxiliar1->siguiente;
     j++;
        }
         printf("Cual desea eliminar\n");
         scanf("%d",&borralo);
         aux2=primero;
        for(j=1;j<borralo-1;j++)
        {
           aux2=aux2->siguiente;
        }
         if(borralo==1)
         {
            primero=aux2->siguiente;
            aux2->siguiente=NULL;
         }
                   else
                   {
                       aux1=aux2;
                       aux2=aux2->siguiente;
                       aux1->siguiente=aux2->siguiente;
                       aux2->siguiente=NULL;
                    }
                                                                       
        }
         }
#13
buenas e estado realizando un proyecto de la universidad y e logrado hacer muchas cosas ahora luego que finalice el proyecto a mi profesor se le ocurrio la idea de hacer que en vez de un barco sea  igual a una sola posicion de la matriz, quiere que sea un barco formado por varias secciones y con sentidos definidos.



aqui el codigo que entregue y quiere q sea el mismo code que modifique pero realmente si me cuesta evaluar con una sola posicion no se como hacer con varias posiciones al mismo tiempo para determinar si esta undido el barco y tambien el colocarlos en el tablero por ser de varias secciones.

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>

// Posiciones: '0'=desocupado | '1'=Hay barco | '2'=Barco destruido

void wait(int seconds) // Funcion 'clock' para el tiempo de juego
{
   clock_t endwait;
   endwait = clock() + seconds * CLOCKS_PER_SEC;
   while( clock() < endwait )
   {}
}

void imprimir();
void iniciar();

int i, j, k, jugador[10][10], oponente[10][10], opcion1, opcion2, puntajejugador=0, puntajeoponente=0; // Variables globales
time_t start,end;
double dif, tiempototal=0;

//________________________________________________________________________________________________
void imprimir() // Funcion que imprime el tablero de juego
{  
   printf("\t\t\t\t\t    Tiempo transcurrido= %.1f segundos\n\n", tiempototal);
   
   for(i=1;i<=10;i++) // Imprime tablero del oponente
   {
       printf("\n\t");
       for(j=1;j<=10;j++)
       {
           if(oponente[i][j]==3)
           {
               printf("  #");
           }
           else
           {
               if(oponente[i][j]==2) // Imprime 'X' si vale 2
               {
                   printf("  X");
               }
               else
               {
                   printf("  -");
               }
           }                                    
       }
       if(i==3)
       {
           printf("\tOPONENTE");
       }
       else
       {
           if(i==1)
           {
               printf("\t\t\tPuntaje oponente: %d", puntajeoponente);
           }
       }
   }
   
   printf("\n\n\t ______________________________\n\n");
   
   for(i=1;i<=10;i++) // Imprime el tablero del jugador
   {
       printf("\n\t");
       for(j=1;j<=10;j++)
       {
           if(jugador[i][j]==3)
           {
               printf("  #");
           }
           else
           {
               if(jugador[i][j]==2) // Imprime 'X' si vale 2 || 'O' si vale 1
               {
                   printf("  X");
               }
               else
               {
                   if(jugador[i][j]==1)
                   {
                       printf("  O");
                   }
                   else
                   {
                       printf("  -");
                   }
               }
           }                                    
       }
       if(i==3)
       {
           printf("\tJUGADOR");
       }
       else
       {
           if(i==1)
           {
               printf("\t\t\tPuntaje jugador: %d", puntajejugador);
           }
       }
   }

   printf("\n\n");  
}
//_______________________________________________________________________________________________

void iniciar() // Rellena con '0' el arreglo y coloca los barcos
{
       
   for(i=1;i<=10;i++) // Llena todo con '0'
   {
       for(j=1;j<=10;j++)
       {
           jugador[i][j]=0;
           oponente[i][j]=0;
       }
   }
   
   printf("\n\n Dame las coordenadas de tus barcos~\n\n");
   
   srand(time(NULL));
   for(k=1;k<=10;k++) // Distribuye los barcos
   {
       imprimir();
                     
       i=1+rand()%10; // Distribuye los barcos oponentes
       j=1+rand()%10;
       while(oponente[i][j]==1)
       {
           i=1+rand()%10; j=1+rand()%10;
       }
       oponente[i][j]=1; // La posicion de los barcos valdra 1
                     
       printf("\n\tX%d = ", k);
       scanf("%d", &opcion2);
       while(opcion2<1 || opcion2>10)
       {
           printf("    Escoje un valor valido ( 1 a 10 )\n\n\tX%d = ", k);
           scanf("%d", &opcion2);
       }
                       
       printf("\n\tY%d = ", k);
       scanf("%d", &opcion1);
       while(opcion1<1 || opcion1>10)
       {
           printf("\n    Escoje un valor valido ( 1 a 10 )\n\n\tY%d = ", k);
           scanf("%d", &opcion1);
       }
                       
       if(jugador[opcion1][opcion2]==1)
       {
           printf("\n Ese valor ya existe...");
           getche();
           k=k-1;
       }
       jugador[opcion1][opcion2]=1;
                     
       system("cls");
                                                       
   }  
   
}

void presentacion()
{
system("color 0B");

   printf("\n\n\t    ~BATALLA NAVAL~\n\n\t\t#\n\t\t#|\n\t\t#|#\n\t\t#|##\n\t\t#|###\n\t\t#|####");
   printf("\n\t\t#|#####\n\t\t#|######\n\t#########################\n\t _______________________");
   printf("\n\t  ####/)###############\n\t   ###(/##############\n\t    #################\n\t     ###############");
   printf("\n\n\n\t1- JUGAR\n\n\t2- SALIR\n\n\n\tDame tu opcion:");
}
//_______________________________________________________________________________________________

main() // Inicia el programa (main)
{
   int res, auxiliar, probabilidadcpu, destruidosoponente=0, destruidosjugador=0, ganador;
   float dificultadcpu=0.5;
   
   presentacion();
   scanf("%d", &res);
   system("cls");
     
   switch(res)
   { // Eliges la opcion Jugar o Salir
     
      case 1:
      {
          iniciar(); // Llama a la funcion iniciar
          printf("\n\n\n\t\t Preparado?\n\n");
          wait(2);
          printf("\n\t\t AHORA!!!");
          wait(1);
                           
          do
          {
              time(&start);
              system("cls"); // Limpia la pantalla
                             
              imprimir();
                             
              printf(" Es tu turno! Dame la posicion que deseas atacar~\n\n");
              printf("\tX = ");
              scanf("%d", &opcion2);
              while(opcion2<1 || opcion2>10)
              {
                  printf("\n    Escoje un valor valido ( 1 a 10 )\n\n\tX = ");
                  scanf("%d", &opcion2);
              }
                             
              printf("\tY = ");
              scanf("%d", &opcion1);
              while(opcion1<1 || opcion1>10)
              {
                  printf("\n    Escoje un valor valido ( 1 a 10 )\n\n\tY = ");
                  scanf("%d", &opcion1);
              }
                             
              auxiliar=oponente[opcion1][opcion2];
              oponente[opcion1][opcion2]=3;
              system("cls");
              imprimir();
              oponente[opcion1][opcion2]=auxiliar;                          
                             
              if(oponente[opcion1][opcion2]==1)
              {
                  oponente[opcion1][opcion2]=2;
                  destruidosoponente=destruidosoponente+1;
                  puntajejugador=puntajejugador+200;
                  printf("\n Haz acertado!!\n\n");
              }
              else
              {
                  printf("\n Haz fallado...\n\n");
              }
                             
              system("PAUSE");
              system("cls");
              if(destruidosoponente==5)
              {
                  printf("\n\n\n\n\t\t\tHAZ GANADO!!");
                  getche();
              }                              
#14
Programación C/C++ / funcion tangente
16 Julio 2014, 21:01 PM
BUENAS ESTOY REALIZANDO UN CODIGO DONDE GRAFIQUE LA FUNCION SENO, COSE Y TANGENTE, YA TENGO HECHAS LAS 2 PRIMERAS PERO NO SE ME OCURRE COMO PODRIA GRAFICAR LA TANGENTE YA QUE ES EN FORMA VERTICAL, ME PODRIAN DAR ALGUN TIPS O IDEA DE COMO GRAFICARLA DE FORMA GENERAL, ES DECIR, SI INTRODUCIR PARAMETROS POR EL USUARIO. GRACIAS DE ANTE MANO
#15
agradecido por su colaboracion, ahora piensen en eso... creo que en el segundo for para evaluar el menor tiene un error y es que de manera premeditada asigne votacion de la siguiente manera. japon =7  brazil=2 suecia=1 mexico=0
y me sale bien el del mayor pero en el menor me imprime que el de menor votos es suecia con 1 voto cuando en realidad es mexico
#16
ok me quedo mejor con la segunda sugerencia. ahora como para imprimir el pais que esta en la posicion del mayor y menor??

e intentado de varias formas pero nada

Código (cpp) [Seleccionar]
printf("\n\nEL PAIS GANADOR ES %s con %d votos",paises_postulados[(int)posicion1], mayor);
printf("\n\nEL PAIS GANADOR ES %s con %d votos",paises_postulados[posicion1], mayor);
printf("\n\nEL PAIS GANADOR ES %s con %d votos",paises_postulados[*posicion1], mayor);





Cita de: CalgaryCorpus en 11 Julio 2014, 16:30 PM
Es superfluo asignar los punteros en cada vuelta.
Si se eliminan esas asignaciones el resultado será el mismo.


si eso lo acabo de notar, donde me dices que quite los asteriscos? en la declaracion o en la asignacion dentro del for??
#17
entiendo ya hice la modificacion pero tengo otro problema y no hayo la solucion y es que cuando llamo a la funcion mayor_menor el programa se me congela, dejo lo que llevo hecho

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <conio.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

const char *paises_miembros[] = {"Argentina","Belgica","Estados Unidos","Francia","Reino Unido",
"Grecia","Hungria","Italia","Nueva Zelanda","Rusia","Suecia","Japon"};

const char *paises_postulados[] = {"Japon","Brasil","Suecia","Mexico"};

int contador=0;

void mayor_menor(int array[]);

int main() {



int votos[]={0,0,0,0};

printf("BIENVENIDO AL SISTEMA DE VOTACION PARA LA ELECCION DE LA SEDE DE LOS JUEGOS OLIMPICOS\n");

printf("\npara iniciar las votaciones presiones cualquier tecla...");

getch();


printf("\n\nlos paises miembros del comite son los siguientes: ");



for(contador=0;contador<12;contador++)
{
printf(" %s ",paises_miembros[contador]);
}

getch();

printf("\n\nlos paises postulados son los siguientes: ");

for(contador=0;contador<4;contador++)
{
printf(" %s ",paises_postulados[contador]);
}

getch();


printf("\n\n \t\t\t INICIA PROCESO DE VOTACION");

getch();
contador=0;
int opcion=0;

while(contador<10)
{
opcion=0;
printf("\n\n %s cual de las siguientes opciones elige para que sea la sede de los proximos juegos olimpicos?",paises_miembros[contador]);
printf ("\n\n 1.%s 2.%s 3.%s 4.%s",paises_postulados[0],paises_postulados[1],paises_postulados[2],paises_postulados[3]);
printf("\n elija una opcion del 1 al 4: ");
scanf("%d",&opcion);
if(opcion>0 && opcion<5)
{
votos[opcion-1]=votos[opcion-1]+1;
contador++;
}
else
{
printf("\n\nOPCION INVALIDA!!!");
}

}

  mayor_menor(votos);
 
return 0;
}


void mayor_menor(int array[])
{

  int  mayor,menor,*posicion1=0, *posicion2=0;

mayor=votos[0];

for(contador=1;contador<4;contador++)
{
if (votos[contador]>mayor)
{
mayor=votos[contador];
*posicion1=contador;
}
}

menor=votos[0];

for(contador=1;contador<4;contador++)
{
if (votos[contador]<menor)
{
menor=votos[contador];
*posicion2=contador;
}
}  
  printf("\n\nEL PAIS GANADOR ES %s con %d votos",paises_postulados[*posicion1], mayor);
 
 
      printf("\n\nEL PAIS CON MENOS VOTOS ES %s con %d votos",paises_postulados[*posicion2],menor);

}
#18
tengo el problema con esta linea
char *paises_miembros[] = {"Argentina","Belgica","Estados Unidos","Francia","Reino Unido",
"Grecia","Hungria","Italia","Nueva Zelanda","Rusia","Suecia","Japon"};

y es que el compilador me da un error


9 77 C:\Users\Nerys\Desktop\main.cpp [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
#19
buenas estoy haciendo un juego de rol donde una de las condiciones es que no se pueda utilizar 2 poderes iguales por el mismo jugador, y no logro dar con el code adecuado

aqui una muetra de lo que hice pero esta mal debido a que el valor que ingrese lo almacena pero despues en el for caigo en decir que esta repetido aunque en realidad solo esta en una sola posicion

ayudenme gracias

Código (cpp) [Seleccionar]

scanf("%d",&res2);
                           poderj1[indice]=res2;
                           
                for(int cc=0;cc<=res2;cc++)
                  {
                  if(poderj1[cc]==res2)
                  {
                  printf("\n no puedes utilizar dos poderes iguales!!!\n");
                  getch();
                 
                  }
                }
                     indice=indice+1;   
#20
ya lo arregle e hice unas modificaciones. dejo el codigo para que si ven que tiene algun bugs escondido me lo hagan saber. gracias!!

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct datos {

    char primer_nombre [45];
    char segundo_nombre [45];
    char apellido_persona [45];
   
};


void lista_personas()

{

printf("Ingresar la cantidad de personas que se generara en su lista: ");

int k=0;

scanf("%d",&k);

printf("\n\nla cantidad de personas en su lista es de %d: ",k);

datos datos_estruct[k];

for( int m=0;m<k;m++)

{

          printf("\n\nEl I.D Registro de la persona es: %d\n\n",m+1);
          printf("Ingrese el Primer nombre de la persona:\n");
          scanf("%s",&datos_estruct[m].primer_nombre);
          printf("\nIngrese el segundo nombre de la persona:\n");
          scanf("%s",&datos_estruct[m].segundo_nombre);
          printf("\nIngrese el apellido de la persona:\n");
           scanf("%s",&datos_estruct[m].apellido_persona);               
}


FILE *Doc;
Doc=fopen("Documento.txt","w");

if (Doc!= NULL) //2 Se abre para escritura
{
for(int m=0;m<k;m++)
{
fprintf(Doc, "%s  " , &datos_estruct[m].apellido_persona);
fprintf(Doc, "%s  " , &datos_estruct[m].primer_nombre);
fprintf(Doc, "%s  \n" , &datos_estruct[m].segundo_nombre);
}
}
else{
exit(0);
}

fclose(Doc);
       //fin listado_personas
}

// Inicio main
main(){
       
       
lista_personas();
printf("\n\n\nSus datos fueron guardados satisfactoriamente.\n\n\n");

system("pause");       
}