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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Necesito convertir este código de C++ a C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Necesito convertir este código de C++ a C  (Leído 18,327 veces)
Xcution

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Necesito convertir este código de C++ a C
« en: 1 Noviembre 2013, 02:47 am »

Buenas noches amigos, ¿Qué tal?. He de necesitar convertir este código de C++ a C, conozco muy poco de C++ y este programa es un ejemplo igual al que necesito en C, espero que me brinden su ayuda por favor y gracias de antemano.

Código:
#include <iostream>
#include <stdlib.h>
using namespace std;
 
struct nodo{
    int nro;
    struct nodo *sgte;
};
 
typedef nodo *ptrPila;   // creando nodo tipo puntero( tipo de dato )
 
/*                        Apilar elemento     
---------------------------------------------------------------------*/
void push( ptrPila &p, int valor )
{
     ptrPila aux;
     aux = new(struct nodo);  // apuntamos al nuevo nodo creado
     aux->nro = valor;
     
     aux->sgte = p ;
     p = aux ;
}
 
/*                Desapilar elemento(devuelve elemento)     
---------------------------------------------------------------------*/
int pop( ptrPila &p )
{
     int num ;
     ptrPila aux;
     
     aux = p ;
     num = aux->nro;   // asignamos el primer vamor de la pila
     
     p = aux->sgte ;
     delete(aux);
     
     return num;
}
 
/*                     Muestra elementos de la pila     
---------------------------------------------------------------------*/
void mostrar_pila( ptrPila p )
{
     ptrPila aux;
     aux = p;     // apunta al inicio de la lista
     
     while( aux !=NULL )
     {
            cout<<"\t"<< aux->nro <<endl;
            aux = aux->sgte;
     }   
}
 
/*                Eliminar todos los elementos de la pila     
---------------------------------------------------------------------*/
void destruir_pila( ptrPila &p)
{
     ptrPila aux;
     
     while( p != NULL)
     {
           aux = p;
           p = aux->sgte;
           delete(aux);
     }
}
 
/*                        Menu de opciones   
----------------------------------------------------------------------*/
void menu()
{
    cout<<"\n\t IMPLEMENTACION DE PILAS EN C++\n\n";
    cout<<" 1. Insertar Libros                               "<<endl;
    cout<<" 2. Sacar libro                         "<<endl;
    cout<<" 3. MOSTRAR PILA                          "<<endl;
    cout<<" 4. DESTRUIR PILA                         "<<endl;
    cout<<" 5. SALIR                                 "<<endl;
 
    cout<<"\n INGRESE OPCION: ";
}
 
/*                        Funcion Principal       
----------------------------------------------------------------------*/
int main()
{
    ptrPila p = NULL;  // creando pila
    int dato;
    int op;
    int x ; // numero que devuelve la funcon pop
   
   
 
    do
    {
        menu();  cin>> op;
 
        switch(op)
        {
            case 1:
 
                 cout<< "\n NUMERO A APILAR: "; cin>> dato;
                 push( p, dato );
                 cout<<"\n\n\t\tNumero " << dato << " apilado...\n\n";
            break;
 
 
            case 2:
 
                 x = pop( p );
                 cout<<"\n\n\t\tNumero "<< x <<" desapilado...\n\n";
            break;
                 
 
            case 3:
 
                 cout << "\n\n MOSTRANDO PILA\n\n";
                 if(p!=NULL)
                    mostrar_pila( p );
                 else
                    cout<<"\n\n\tPila vacia..!"<<endl;
            break;
 
 
            case 4:
 
                 destruir_pila( p );
                 cout<<"\n\n\t\tPila eliminada...\n\n";
            break;
           
         }
 
        cout<<endl<<endl;
        system("pause");
  system("cls");
 
    }while(op!=5);
   
   
    return 0;
}


En línea

edr89

Desconectado Desconectado

Mensajes: 105


Ver Perfil
Re: Necesito convertir este código de C++ a C
« Respuesta #1 en: 1 Noviembre 2013, 06:53 am »

cout<< es a printf()
 y cin>> un scanf()

tampoco conozco C++ pero el código parece de C, no hay clases sino estructuras. Qué es lo que no puedes traducir? o no entiendes?. Estas trabajando con listas ligadas sencillas y el contexto esta dentro de C.


En línea

Xcution

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Necesito convertir este código de C++ a C
« Respuesta #2 en: 1 Noviembre 2013, 11:29 am »

No entiendo como traducirlo... como llevaría esto a un equivalente en C <<>> :S
En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Necesito convertir este código de C++ a C
« Respuesta #3 en: 1 Noviembre 2013, 11:58 am »

que cout<< se usa para imprimir
ejemplo
int variabl = 32;
cout << "loque va dentro de colmillas es lo que ves" << variable << endl;
verias asi:

lo  que va dentro de colmillas es lo que ves 32

endl es lo mismo que \n

y cin >> variable;

el comando cin mete en la variable lo que recibo del teclado.

debes cambiar las 2 instrucciones.

cout por la que usas en c que es printf.
cin por la que usas en c que es scanf.

te doy un ejemplopara cada.

hola mundo en c++ es asi
cout << "hola mundo" << endl;
Y en c asi:
printf("holamundo");

hay mas diferencias pero en el código tuyo básicamente debes convertir eso lo que se refiere a entrada y salida.

En entrada tendríamos algo así:
supongamos que creamos una variable llamada numero1 que es del tipo int, queremos meter el numero 30 mediante teclado.

Código
  1. /*En c seria algo así:*/
  2. int numero1 = 0;
  3. scanf("%d",&numero1);

Código
  1. //En c++ es así:
  2. int numero1 = 0;
  3. cin>> numero1;

No es difícil de entender creo.

Ademas es mas que recomendable aprender usar cin y cout aun que estudies c por que hay muchos códigos buenos en c++ que como este al convertir te sirven de ejemplo para estudio.
No te digo que dejes c solo que aprendas algo mas como lo básico solo por si tienes problemas como este.
cout:
http://minidosis.org/C++/Primeros%20Programas/Salida%201/
cin
http://minidosis.org/C++/Primeros%20Programas/Entrada%201/

2 videos de mas o menos de 10 minutos para que aprendas como va entrada y salida en c++.
Si los comprendes mas fácil te va hacer.  :-*
« Última modificación: 1 Noviembre 2013, 11:59 am por vangodp » En línea

Xcution

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Necesito convertir este código de C++ a C
« Respuesta #4 en: 1 Noviembre 2013, 12:17 pm »

Eso ya lo sé, gracias.. pero además me refiero a lo que sale en el código como using namespace std; hice lo que me dijiste para llevarlo a C, y en los void me dan errores que no entiendo me dice que p no está declarado :S, necesito su ayuda urgente.. me disculpan si le monto presión.. Gracias
En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Necesito convertir este código de C++ a C
« Respuesta #5 en: 1 Noviembre 2013, 20:18 pm »

mira lo de using namespace std es por el siguiente.
si tienes muchas lineas tipo cout es mas facil escribir así cout que así std::cout no?
Bien para que te quede mas claro a ver si puedo explicar algo mas.
si pongo using namespace std; debajo de los include luego al principio del código.

todas las lineas en todas las funciones que lleve cout no hace falta poner el std:: delante del cout.

si ves using namespace std como si fuera una global eso quiere decir que todos los cout, cin, endl y no que que mas son "estándar".
Ahora si acaso no ves using namespace std;
entonces lo tendrías que poner delante de los cout, cin y endl el std::
De manera que quedara así
std::cout << "hola mundo" << std::endl;
std::cin >> variable;
Eso es facil si haces 3 lineas pero si escribes 500 lineas en un autentico coña... XD
Por eso el using name blablabla ese, es para ahorar los std:: delante.
Eso es parte de código c++, y lo debes eliminar junto con los cout cin y endl de tu programa c.
El #include <iostream> lo sustituye por la stdio.h.
El using namespace este también hace parte de la librería iostrem de c++ de ahí el error.
Mira, pon aquí lo que tengas echo y en menos de 5 minutos te contesta la peña, lo que no van a hacerte el trabajo por que son normas del foro o yo que se.
Ademas no seriamos justo contigo si te lo hiciéramos el trabajo no cres?
Pega el código aquí y lo tendrás solucionado en seguida, por lo demás no se que decirte.  :rolleyes:
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Necesito ayuda con este código en C++
Programación C/C++
Frihet 0 3,332 Último mensaje 6 Mayo 2011, 15:54 pm
por Frihet
IMPOSIBLE convertir de Hex a ASCII este código « 1 2 »
Hacking Wireless
guillegf84 11 8,646 Último mensaje 20 Octubre 2011, 15:32 pm
por ChimoC
Necesito el codigo de este programa en C.
Programación C/C++
Parda 1 1,968 Último mensaje 7 Octubre 2012, 15:11 pm
por xiruko
Me pueden ayudar a convertir este codigo C++ a C
Programación C/C++
aguss33 4 3,469 Último mensaje 16 Enero 2017, 09:00 am
por class_OpenGL
Error en este código: no se puede convertir de 'byte[]' a 'char[]'
.NET (C#, VB.NET, ASP)
Meta 5 6,022 Último mensaje 29 Diciembre 2023, 18:20 pm
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines