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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pasar codigo a lenguaje C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar codigo a lenguaje C++  (Leído 2,293 veces)
diamonroyor

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Pasar codigo a lenguaje C++
« en: 19 Junio 2012, 00:38 am »

Por favor me podrian ayudar a pasar este codigo a C++.


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

#define MAXCAD 1000

enum {   Anyadir=1, BuscarPorTituloDisco, BuscarPorInterprete, BuscarPorTituloCancion,
         Mostrar, EliminarDisco, Salir};


struct Cancion {
  char * titulo;
  struct Cancion * sig;
};

typedef struct Cancion * TipoListaCanciones;

struct Disco {
  char * titulo;
  char * interprete;
  int anyo;
  TipoListaCanciones canciones;
  struct Disco * sig;
};

typedef struct Disco * TipoColeccion;

TipoListaCanciones crea_lista_canciones(void)
{
  return NULL;
}

TipoListaCanciones anyade_cancion(TipoListaCanciones lista, char titulo[])
{
  struct Cancion * nuevo = malloc(sizeof(struct Cancion));
 
  nuevo->titulo = malloc((strlen(titulo)+1)*sizeof(char));
  strcpy(nuevo->titulo, titulo);
  nuevo->sig = lista;
  lista = nuevo;
  return lista;
}

TipoListaCanciones libera_canciones(TipoListaCanciones lista)
{
  struct Cancion * aux, * siguiente;
 
  aux = lista;
  while (aux != NULL) {
    siguiente = aux->sig;
    free(aux->titulo);
    free(aux);
    aux = siguiente;
  }
  return NULL;
}

int contiene_cancion_con_titulo(TipoListaCanciones lista, char titulo[])
{
  struct Cancion * aux;

  for (aux=lista; aux!=NULL; aux=aux->sig)
    if (strcmp(aux->titulo, titulo)==0)
      return 1;
  return 0;
}

struct Disco * busca_disco_por_titulo_cancion(TipoColeccion coleccion, char titulo[])
{
  struct Disco * aux;
 
  for (aux=coleccion; aux!=NULL; aux=aux->sig)
    if (contiene_cancion_con_titulo(aux->canciones, titulo))
      return aux;
  return NULL;
}

struct Disco * busca_disco_por_titulo_disco(TipoColeccion coleccion, char titulo[])
{
  struct Disco * aux;
 
  for (aux=coleccion; aux!=NULL; aux=aux->sig)
    if (strcmp(aux->titulo, titulo) == 0)
      return aux;
  return NULL;
}

struct Disco * busca_disco_por_interprete(TipoColeccion coleccion, char interprete[])
{
  struct Disco * aux;
 
  for (aux=coleccion; aux!=NULL; aux=aux->sig)
    if (strcmp(aux->interprete, interprete) == 0)
      return aux;
  return NULL;
}

TipoColeccion borra_disco_por_titulo_e_interprete(  TipoColeccion coleccion, char titulo[],
                                                  char interprete[])
{
  struct Disco *aux, *atras;

  for (atras = NULL, aux=coleccion; aux != NULL; atras = aux, aux = aux->sig)
    if (strcmp(aux->titulo, titulo) == 0 && strcmp(aux->interprete, interprete) == 0) {
      if (atras == NULL)
        coleccion = aux->sig;
      else
        atras->sig = aux->sig;
      free(aux->titulo);
      free(aux->interprete);
      libera_canciones(aux->canciones);
      free(aux);
      return coleccion;
    }
  return coleccion;   
}

TipoColeccion crea_coleccion(void)
{
  return NULL;
}

TipoColeccion anyade_disco(  TipoColeccion lista, char titulo[], char interprete[],
                           int anyo, TipoListaCanciones canciones)
{
  struct Disco * disco;

  disco = malloc(sizeof(struct Disco));
  disco->titulo = malloc((strlen(titulo)+1)*sizeof(char));
  strcpy(disco->titulo, titulo);
  disco->interprete = malloc((strlen(interprete)+1)*sizeof(char));
  strcpy(disco->interprete, interprete);
  disco->anyo = anyo;
  disco->canciones = canciones;
  disco->sig = lista;
  lista = disco;
  return lista;
}

TipoColeccion libera_coleccion(TipoColeccion lista)
{
  struct Disco * aux, * siguiente;

  aux = lista;
  while (aux != NULL) {
    siguiente = aux->sig;
    free(aux->titulo);
    free(aux->interprete);
    aux->canciones = libera_canciones(aux->canciones);
    free(aux);
    aux = siguiente;
  }
  return NULL;
}

void muestra_canciones(TipoListaCanciones lista)
{
  struct Cancion * aux;

  for (aux=lista; aux!=NULL; aux=aux->sig)
    printf("  %s\n\n", aux->titulo);
}

void muestra_disco(struct Disco eldisco)
{
  printf("Titulo: %s\n", eldisco.titulo);
  printf("Interprete: %s\n", eldisco.interprete);
  printf("Fecha de edicion: %d\n", eldisco.anyo);
  printf("Canciones: ");
  muestra_canciones(eldisco.canciones);
}

void muestra_coleccion(TipoColeccion lista)
{
  struct Disco * aux;
 
  for (aux=lista; aux!=NULL; aux=aux->sig)
    muestra_disco(*aux);


int main(void)
{
  int opcion;
  TipoColeccion coleccion;
  char titulo_disco[MAXCAD+1], titulo_cancion[MAXCAD+1], interprete[MAXCAD+1];
  char linea[MAXCAD+1];
  int anyo;
  struct Disco * undisco;
  TipoListaCanciones lista_canciones;

  coleccion = crea_coleccion();
 
  do {
    printf("\n\nMenu\n");
    printf(" 1) Agregar disco\n");
    printf(" 2) Buscar por titulo del disco\n");
    printf(" 3) Buscar por interprete\n");
    printf(" 4) Buscar por titulo de cancion\n");
    printf(" 5) Mostrar todo\n");
    printf(" 6) Eliminar un disco por titulo e interprete\n");
    printf(" 7) Finalizar\n");
    printf("Opcion: "); gets(linea); sscanf(linea, "%d", &opcion);
    system ("cls");
    switch(opcion) {
      case Anyadir:
        printf("Titulo: "); gets(titulo_disco);
        printf("Interprete: "); gets(interprete);
        printf("Fecha de edicion: "); gets(linea); sscanf(linea, "%d", &anyo);
        lista_canciones = crea_lista_canciones();
        do {
          printf("Titulo de cancion (pulse esc para acabar):  ");
          gets(titulo_cancion);
          if (strlen(titulo_cancion) > 0)
            lista_canciones = anyade_cancion(lista_canciones, titulo_cancion);
        } while (strlen(titulo_cancion) > 0);
        coleccion = anyade_disco(coleccion, titulo_disco, interprete, anyo, lista_canciones);
        break;

      case BuscarPorTituloDisco:
        printf("Titulo: "); gets(titulo_disco);
        undisco = busca_disco_por_titulo_disco(coleccion, titulo_disco);
        if (undisco != NULL)
          muestra_disco(*undisco);
        else
          printf("No hay discos con titulo '%s'n", titulo_disco);
        break;

      case BuscarPorInterprete:
        printf("Interprete: "); gets(interprete);
        undisco = busca_disco_por_interprete(coleccion, interprete);
        if (undisco != NULL)
          muestra_disco(*undisco);
        else
          printf("No hay discos de %sn", interprete);
        break; 

      case BuscarPorTituloCancion:
        printf("Titulo: "); gets(titulo_cancion);
        undisco = busca_disco_por_titulo_cancion(coleccion, titulo_cancion);
        if (undisco != NULL)
          muestra_disco(*undisco);
        else
          printf("No hay discos con alguna cancion titulada '%s'n", titulo_cancion);
        break;

      case Mostrar:
        muestra_coleccion(coleccion);
        break;

      case EliminarDisco:
        printf("Titulo: "); gets(titulo_cancion);
        printf("Interprete: "); gets(interprete);
        coleccion = borra_disco_por_titulo_e_interprete(coleccion, titulo_cancion, interprete);
        break;
    }
  } while (opcion != Salir);

  coleccion = libera_coleccion(coleccion);

  return 0;
}


En línea

KLuffy

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Pasar codigo a lenguaje C++
« Respuesta #1 en: 19 Junio 2012, 00:54 am »

Mira trata de convertirlo poco a poco en vez de printf(""); escribe cout<<""; y en vez de gets utiliza cin>> y nos avizas en donde te da error vale segun recuerdo los punteros se manejan igual, trata de hacerlo y nos avizas  ::)


En línea

Saberuneko


Desconectado Desconectado

Mensajes: 2.182



Ver Perfil WWW
Re: Pasar codigo a lenguaje C++
« Respuesta #2 en: 19 Junio 2012, 12:00 pm »

Por otro lado, sería también interesante si conviertes alguna de esas estructuras en objetos.

Las estructuras y los objetos son muy parecidos, la diferencia radica en que los objetos también pueden contener funciones.

Así que ya sabes, en los nuevos objetos, pon tanto los datos que ya tienes, como las funciones que trabajan sobre los mismos.

Dale un intento por tu cuenta y pregúntanos en caso de duda, cuando tengas algo ya hecho.

Un Saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
aporte - Editor de codigo fuente de varios lenguaje « 1 2 »
Programación Visual Basic
d(-_-)b 13 5,931 Último mensaje 18 Julio 2007, 02:09 am
por Freeze.
¿Como Puedo Obtener el Codigo Desensamblado en Lenguaje C?
Ingeniería Inversa
[Yeikox] 8 8,047 Último mensaje 11 Octubre 2008, 03:13 am
por ...........
Pasar vb a cualquier lenguaje
Programación Visual Basic
SOMBRIO 2 6,480 Último mensaje 11 Enero 2010, 04:07 am
por SOMBRIO
En que lenguaje se desarrolla el código de esta web.
Desarrollo Web
chocola 7 7,109 Último mensaje 15 Noviembre 2011, 21:49 pm
por chocola
Pasar cifra numérica a letra en lenguaje C
Programación C/C++
NOB2014 4 1,979 Último mensaje 28 Marzo 2016, 03:58 am
por NOB2014
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines