Pasar código de c++ a C

Iniciado por remphenter, 20 Agosto 2018, 08:54 AM

0 Miembros y 1 Visitante están viendo este tema.

remphenter

El código hecho en C++ es así:

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
using namespace std;
float a,b,c;

class calificacion{
private:
float numeroA, numeroB, numeroC;
public:
void inicio(float, float, float);
void pedirnumeros();
float operacion();
void mostrar ();
};

void calificacion::inicio(float _numeroA,float _numeroB,float _numeroC)
{
numeroA = _numeroA;
numeroB= _numeroB;
numeroC = _numeroC;

}

void calificacion::pedirnumeros(){
printf("Escribe el primero numero : ");
scanf("%f",&a);
printf("Escribe el segundo numero: ");
scanf("%f",&b);
printf("Escribe el tercer numero: ");
scanf("%f",&c);
}

float calificacion::operacion()
{
a = a/3;
b = b/3;
c = c/3;

float promedio;
promedio = a + b + c;
return promedio;

}

void calificacion::mostrar(){
cout<<"El promedio es: "<<calificacion::operacion();
}

int main(int argc, char *argv[]) {
calificacion c1;
c1.inicio(a,b,c);
c1.pedirnumeros();

c1.mostrar();


return 0;
}

Funciona perfectamente,
Pero cuando lo intento pasar a C me quedó así:
#include <stdio.h>
#include <stdlib.h>

float a,b,c;

struct calificacion{
private:
float numeroA, numeroB, numeroC;
public:
void inicio(float, float, float);
void pedirnumeros();
float operacion();
void mostrar ();
};

void calificacion::inicio(float _numeroA,float _numeroB,float _numeroC)
{
numeroA = _numeroA;
numeroB= _numeroB;
numeroC = _numeroC;

}

void calificacion::pedirnumeros(){
printf("Escribe el primero numero : ");
scanf("%f",&a);
printf("Escribe el segundo numero: ");
scanf("%f",&b);
printf("Escribe el tercer numero: ");
scanf("%f",&c);
}

float calificacion::operacion()
{
a = a/3;
b = b/3;
c = c/3;

float promedio;
promedio = a + b + c;
return promedio;

}

void calificacion::mostrar(){
printf("El promedio es: %f",calificacion::operacion());
}

int main(int argc, char *argv[]) {
calificacion c1;
c1.inicio(a,b,c);
c1.pedirnumeros();

c1.mostrar();


return 0;
}


Los errores están al nombrar las estructuras el programa no me acepta los "::" por ejemplo: calificacion::operacion()

Y todo lo que está dentro del main() en C no lo acepta.

Al igual que no se como se puede reemplazar el "private:" y el "public:"


Saludos!

engel lex

no puedes reemplazarlo así como así... el "::" es el operador de alcance en C++ y es un asunto inherente a OOP, lo primero que tienes que plantearte es como hacer tu sistema sin usar objetos... justamente lo que C++ tiene agregado en relación a C es el OOP... lo más cercano son los structs y no son ni cerca de lo completo que necesitas
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MAFUS

#2
En C no existeix públic: ni private: todo es público.
Las estructuras no tienen métodos, éstos son funciones de ámbito global que deberán tener como uno de sus argumentos un puntero a la estructura con la que van a interactuar.
Es normal que las funciones hagan referencia en su nombre al tipo de dato con que van a interactuar.

He hecho unos arreglillos para que se trabajen con los datos de la estructura. En tu código original no usabas los datos de la clase, sino unos floats globales y sólo usabas los métodos. De igual forma si se definen en orden oportuno las funciones en un único archivo no hace falta escribir los prototipos.

#include <stdio.h>

typedef struct {
    float numeroA;
    float numeroB;
    float numeroC;
} calificacion;

void calificacion_pedirnumeros(calificacion *cal) {
    printf("Escribe el primero numero : ");
    scanf("%f", &cal->numeroA);

    printf("Escribe el segundo numero: ");
    scanf("%f", &cal->numeroB);

    printf("Escribe el tercer numero: ");
    scanf("%f", &cal->numeroC);
}

float calificacion_operacion(calificacion *cal) {
return (cal->numeroA + cal->numeroB + cal->numeroC)/3;
}

void calificacion_mostrar(calificacion *cal) {
    printf("El promedio es: %f\n", calificacion_operacion(cal));
}

int main() {
    calificacion c1;
    calificacion_pedirnumeros(&c1);
    calificacion_mostrar(&c1);
}