Dev - C++ - Convertir codigo C++ a C

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Convertir codigo C++ a C

Publicado por Diego (1 intervención) el 17/06/2019 22:11:30
Hola estoy en un curso de C y C+, lo cual nos pasaron un código de github, en el cual tengo que transformar un código de C++ a Lenguaje C y hay muchas cosas que no entiendo como algunos prototipos de datos y validaciones de la estructura C++ a Lenguaje C este es el código, Ayuda a convertir el código o algún arreglo, consejo, gracias.
Igual al intentar llevarlo a lenguaje C me da muchos errores por la variable 'empleado', de todas formas tengo que llegar hacerlo funcionar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
//DECLARACION DE LIBRERIAS
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
//declaracion de constantes
#define MAX_10 10
#define MAX_30 30
 
//declaracion de variables globales
int ID_g;
char cedula_g[MAX_10];
char apellidos_g[MAX_30];
char nombres_g[MAX_30];
char telefono_g[MAX_10];
double sueldo_g;
char estado_g;
char tipo_pariente_g;
int edad_g;
 
//declaracion de estructuras
//estructura con campos para los empleados
struct empleado {
    int ID;
    char cedula[MAX_10];
    char apellidos[MAX_30];
    char nombres[MAX_30];
    char telefono[MAX_10];
    double sueldo;
    char estado;
    empleado *sig;
};
//estructura con campos para las cargas familiares
struct empleado_carga_familiar {
    char cedula_empleado[MAX_10];
    char apellidos[MAX_30];
    char nombres[MAX_30];
    char tipo_pariente;
    int edad;
    empleado_carga_familiar *sig;
};
 
//prototipo de funciones
int vacia_empleado(empleado**);
int vacia_carga_familiar(empleado_carga_familiar **);
void ingreso_empleado(empleado **,empleado **);
int compara(empleado **);
void ingreso_carga_familiar(empleado_carga_familiar **,empleado_carga_familiar **, empleado**);
void mostrar_todos_empleados(empleado **);
void mostrar_carga_familiar(empleado_carga_familiar **);
void inactivar(empleado **);
 
//funcion main
using namespace std;
int main(){
    empleado *cab1=NULL, *ult1=NULL;
    empleado_carga_familiar *cab2=NULL, *ult2=NULL;
    int opc, opcion, cont=0;
    do{
		system("cls");
		fflush(stdin);//elimina caracteres en memoria 
 
		cout << "1.-INGRESO EMPLEADOS" << endl;
		cout << "2.-INGRESO CARGAS FAMILIARES" << endl;
		cout << "3.-ELIMINAR(INACTIVAR) UN EMPLEADO" << endl;
		cout << "4.-CONSULTA" << endl;
		cout << "5.-SALIR" << endl;
		cout << "digite opcion: ";
		cin >> opc;
        switch(opc){
            case 1:
                system("cls");
				cout << "--------------INGRESO DE INFORMACION DE LOS EMPLEADOS--------------" << endl;
 
				ID_g = ++cont;//validación autogenerado
				cout << "EMPLEADO CON ID NUMERO " << ID_g << endl;
                fflush(stdin);
				cout << "Ingrese la cedula: ";
                gets(cedula_g);
                cout << "Apellidos: ";
                gets(apellidos_g);
                cout << "Nombres: ";
                gets(nombres_g);
                cout << "Numero de telefono: ";
                gets(telefono_g);
                cout << "Sueldo percibido(en dolares): ";
                char c[MAX_10];//una variable temporal, aqui se almacena el sueldo
                gets(c);
                if(c[0]=='\x0')
                    sueldo_g = 0;//validacion autogenerado por defecto $0
                else
                    sueldo_g = atof(c);//transforma la cadena de char almacenada en c, en entero
 
				estado_g='A';//por defecto el empleado se encuentra activo				
                ingreso_empleado(&cab1, &ult1);
 
				getch();
                break;
			case 2:
				system("cls");
				fflush(stdin);
 
                cout << "-----------Registro de cargas familiares-----------" << endl;
				cout << "Ingrese la cedula del empleado: ";
                gets(cedula_g);
				cout << "Ingrese apellidos: ";
				gets(apellidos_g);
				cout << "Ingrese nombres: ";
				gets(nombres_g);
				cout << "Ingrese el parentesco:  E(esposa),H(hijo), P(padre):  ";
				cin >> tipo_pariente_g;
				tipo_pariente_g = toupper(tipo_pariente_g);//Transforma un caracter de minúscula a mayúscula
				cout << "Ingrese edad: ";
				cin >> edad_g;
				ingreso_carga_familiar(&cab2, &ult2, &cab1);
 
				getch();
				break;
			case 3:
				system("cls");
				fflush(stdin);
 
                cout << "-------ELIMINAR A UN EMPLEADO-------" << endl;
				cout << "Ingrese la cedula: ";
                gets(cedula_g);
                if (compara(&cab1))
                	inactivar(&cab1);
                else
                	cout << "No se encontró coincidencia con la cedula!";
 
				getch();
                break;
			case 4:
				do{
					system("cls");
					fflush(stdin);
 
					cout <<"1.-TODOS LOS EMPLEADOS" << endl;
					cout << "2.-CARGAS FAMILIARES POR EMPLEADOS"<<endl;
					cout <<"3.-REGRESAR AL MENU PRINCIPAL"<<endl;
					cout << endl << "digite opcion: ";
					cin >> opcion;
					switch(opcion){
						case 1:
							system("cls");
							cout << "-----------TODOS LOS EMPLEADOS-----------" << endl;
							mostrar_todos_empleados(&cab1);
							getch();
							break;
 
						case 2:
							system("cls");
							fflush(stdin);
 
							cout << "-----------CONSULTA DE CARGAS FAMILIARES-----------" << endl;
							cout << "Ingrese la cedula del empleado: ";
							gets(cedula_g);
							if(compara(&cab1)){
								cout << endl << "\tSUS CARGAS FAMILIARES SON" << endl << endl;
								mostrar_carga_familiar(&cab2);
							}
							else
								cout << "No se encontro coincidencia con la cedula empleado!";
 
							getch();
							break;
					}
				}while(opcion != 3);
				break;
		}
 
 
 
    }while(opc!=5);
    getch();
    return 0;
}
//cuerpo de las funciones prototipo
//funcion que determina si hay datos de empleados 
int vacia_empleado(empleado **cab1){
    if(*cab1==NULL)
        return 1;
    else
        return 0;
}
 
//funcion que determina si hay datos de  carga familiar 
int vacia_carga_familiar(empleado_carga_familiar **cab2){
    if(*cab2==NULL)
        return 1;
    else
        return 0;
}
 
//funcion para insertar información de los empleados
void ingreso_empleado(empleado **cab1, empleado **ult1){
    empleado *p, *aux = NULL;
    p = new empleado();
    p->ID = ID_g;
    strcpy(p->cedula, cedula_g);
    strcpy(p->apellidos, apellidos_g);
    strcpy(p->nombres, nombres_g);
    strcpy(p->telefono, telefono_g);
    p->sueldo = sueldo_g;
    p->estado = estado_g;
    p->sig = NULL;
 
    if(vacia_empleado(cab1))
    	*cab1 = p;
    else{
    	aux = *ult1;
    	aux->sig = p;
 
    }
    *ult1 = p;
    cout << endl << "\tINFORMACION INSERTADA CORRECTAMENTE";
}
//funcion que retorna 1 si existe la cédula empleado y retorna 0 si no existe la cédula del empleado
int compara(empleado **cab1){
	empleado *aux = NULL;
	if(vacia_empleado(cab1)==0) {
		aux = *cab1;
		while(aux!=NULL){
			if(strcmp(aux->cedula, cedula_g)==0)
				return 1;
			aux = aux->sig;
		}
	}
	return 0;
}
//funcion para insertar información de las cargas familiares
void ingreso_carga_familiar(empleado_carga_familiar **cab2, empleado_carga_familiar **ult2, empleado **cab1){
    empleado_carga_familiar *q, *aux = NULL;
	if(compara(cab1)){
		q = new empleado_carga_familiar();
		strcpy(q->cedula_empleado, cedula_g);
		strcpy(q->apellidos, apellidos_g);
		strcpy(q->nombres, nombres_g);
		q->tipo_pariente =tipo_pariente_g;
		q->edad = edad_g;
		q->sig = NULL;
		if(vacia_carga_familiar(cab2))
			*cab2 = q;
		else{
			aux = *ult2;
			aux->sig = q;
		}
		*ult2 = q;
		cout << "\tINFORMACION INGRESADA CON EXITO!";
	}
	else
		cout << "\tInformacion no ingresada. No se encontro coincidencia con la cedula empleado";
}
 
//funcion que muestra la información de los empleados con estado activo
void mostrar_todos_empleados(empleado **cab1){
	empleado *p = NULL;
	if(vacia_empleado(cab1))
      	cout <<"\tNO HAY INFORMACION EN LA COLA";
	else{
		p = *cab1;
		while(p!=NULL){
			if(p->estado=='A'){
				cout << "\nEMPLEADO CON ID " << p->ID << endl;
				cout << "C.I. ";
				puts(p->cedula);
				cout << "Apellidos: ";
				puts(p->apellidos);
				cout << "Nombres: ";
				puts(p->nombres);
				cout << "Tel. ";
				puts(p->telefono);
				cout << "salario(en dolares): " << p->sueldo << endl << endl;
			}
			p = p->sig;
		}
	}
}
 
//funcion que muestra la informacion de las cargas familiares 
void mostrar_carga_familiar(empleado_carga_familiar **cab2){
	empleado_carga_familiar *aux = NULL;
	if(vacia_carga_familiar(cab2))
		cout <<"\tNO HAY INFORMACION EN LA COLA";
	else {
		aux = *cab2;
		while(aux!=NULL){
			if(strcmp(aux->cedula_empleado, cedula_g)==0){
				cout << "Apellidos: ";
				puts(aux->apellidos);
				cout << "Nombres: ";
				puts(aux->nombres);
 
				cout << "Parentesco: ";
				switch(aux->tipo_pariente){
					case 'E':
						cout << "Esposa" << endl;
						break;
					case 'H':
						cout << "Hijo" << endl;
						break;
					case 'P':
						cout << "Padre" << endl;
						break;
				}
				cout << "Edad: " << aux->edad << endl << endl;
			}
			aux = aux ->sig;
		}
	}
}
//función que inactiva a un empleado	
void inactivar(empleado **cab1){
	empleado *aux;
 
	aux = *cab1;
	while(aux != NULL){
		if(strcmp(aux->cedula, cedula_g)==0)
			aux->estado = 'I';
	aux = aux->sig;
	}
	cout << endl << "EMPLEADO INACTIVADO CON EXITO";
}
-----------------------------------------------------------------------------------------------------------------------------------------------------
Intentando llevarlo a lenguaje C

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
//DECLARACION DE LIBRERIAS
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
//declaracion de constantes
#define MAX_10 10
#define MAX_30 30
 
//declaracion de variables globales
int ID_g;
char cedula_g[MAX_10];
char apellidos_g[MAX_30];
char nombres_g[MAX_30];
char telefono_g[MAX_10];
double sueldo_g;
char estado_g;
char tipo_pariente_g;
int edad_g;
 
//declaracion de estructuras
//estructura con campos para los empleados
struct empleado {
    int ID;
    char cedula[MAX_10];
    char apellidos[MAX_30];
    char nombres[MAX_30];
    char telefono[MAX_10];
    double sueldo;
    char estado;
    char empleado [MAX_30];
    int *sig;
};
//estructura con campos para las cargas familiares
struct empleado_carga_familiar {
    char cedula_empleado[MAX_10];
    char apellidos[MAX_30];
    char nombres[MAX_30];
    char tipo_pariente;
    int edad;
    char empleado_carga_familiar[MAX_30];
	int *sig;
};
 
//prototipo de funciones
int vacia_empleado(char **empleado);
int vacia_carga_familiar(char **empleado_carga_familiar);
void ingreso_empleado(int empleado);
int compara(char **empleado);
void ingreso_carga_familiar(char **empleado_carga_familiar, char **empleado);
void mostrar_todos_empleados(char **empleado);
void mostrar_carga_familiar(char **empleado_carga_familiar);
void inactivar(char **empleado);
 
//funcion main
//using namespace std;
int main(){
    char empleado;
	char *cab1=NULL;
	char *ult1=NULL;
    char empleado_carga_familiar, *cab2=NULL, *ult2=NULL;
    int opc, opcion, cont=0;
    do{
		system("cls");
		fflush(stdin);//elimina caracteres en memoria 
		printf ("1.-INGRESO EMPLEADOS");
		printf ("2.-INGRESO CARGAS FAMILIARES");
		printf ("3.-ELIMINAR(INACTIVAR) UN EMPLEADO");
		printf ("4.-CONSULTA");
		printf ("5.-SALIR");
		printf ("digite opcion: ");
		scanf ("%d", &opc);
        switch(opc){
            case 1:
                system("cls");
				printf ("--------------INGRESO DE INFORMACION DE LOS EMPLEADOS--------------" );
				ID_g = ++cont;//validación autogenerado
				printf ("EMPLEADO CON ID NUMERO ", ID_g);
                fflush(stdin);
				printf ("Ingrese la cedula: ");
                gets(cedula_g);
                printf ("Apellidos: ");
                gets(apellidos_g);
                printf ("Nombres: ");
                gets(nombres_g);
                printf ("Numero de telefono: ");
                gets(telefono_g);
                printf ("Sueldo percibido(en dolares): ");
                char c[MAX_10];//una variable temporal, aqui se almacena el sueldo
                gets(c);
                if(c[0]=='\x0')
                    sueldo_g = 0;//validacion autogenerado por defecto $0
                else
                    sueldo_g = atof(c);//transforma la cadena de char almacenada en c, en entero
 
				estado_g='A';//por defecto el empleado se encuentra activo				
                ingreso_empleado(scanf ("%s", &cab1, &ult1));
 
				getch();
                break;
			case 2:
				system("cls");
				fflush(stdin);
 
                printf ("-----------Registro de cargas familiares-----------");
				printf ("Ingrese la cedula del empleado: ");
                gets(cedula_g);
				printf ("Ingrese apellidos: ");
				gets(apellidos_g);
				printf ("Ingrese nombres: ");
				gets(nombres_g);
				printf ("Ingrese el parentesco:  E(esposa),H(hijo), P(padre):  ");
				scanf ("%s", &tipo_pariente_g);
				tipo_pariente_g = toupper(tipo_pariente_g);//Transforma un caracter de minúscula a mayúscula
				printf ("Ingrese edad: ");
				scanf ("%d", &edad_g);
				printf ("ingreso: ", ingreso_carga_familiar);
				scanf ("%s",&cab2, &ult2, &cab1);
 
				getch();
				break;
			case 3:
				system("cls");
				fflush(stdin);
 
                printf ("-------ELIMINAR A UN EMPLEADO-------");
				printf ("Ingrese la cedula: ");
                gets(cedula_g);
                if (compara(&cab1))
                	inactivar(&cab1);
                else
                	printf ("No se encontró coincidencia con la cedula!");
 
				getch();
                break;
			case 4:
				do{
					system("cls");
					fflush(stdin);
 
					printf ("1.-TODOS LOS EMPLEADOS");
					printf ("2.-CARGAS FAMILIARES POR EMPLEADOS");
					printf ("3.-REGRESAR AL MENU PRINCIPAL");
					printf ("digite opcion: ");
					scanf ("%d", &opcion);
					switch(opcion){
						case 1:
							system("cls");
							printf ("-----------TODOS LOS EMPLEADOS-----------");
							mostrar_todos_empleados(&cab1);
							getch();
							break;
 
						case 2:
							system("cls");
							fflush(stdin);
 
							printf ("-----------CONSULTA DE CARGAS FAMILIARES-----------");
							printf ("Ingrese la cedula del empleado: ");
							gets(cedula_g);
							if(compara(&cab1)){
								printf ("\tSUS CARGAS FAMILIARES SON");
								mostrar_carga_familiar(&cab2);
							}
							else
								printf ("No se encontro coincidencia con la cedula empleado!");
 
							getch();
							break;
					}
				}while(opcion != 3);
				break;
		}
 
 
 
    }while(opc!=5);
    getch();
    return 0;
}
//cuerpo de las funciones prototipo
//funcion que determina si hay datos de empleados 
int vacia_empleado(empleado,*cab1){
    if(*cab1==NULL)
        return 1;
    else
        return 0;
}
 
//funcion que determina si hay datos de  carga familiar 
int vacia_carga_familiar(empleado_carga_familiar **cab2){
    if(*cab2==NULL)
        return 1;
    else
        return 0;
}
 
//funcion para insertar información de los empleados
void ingreso_empleado(empleado **cab1, empleado **ult1){
    empleado *p, *aux = NULL;
    p = new empleado();
    p->ID = ID_g;
    strcpy(p->cedula, cedula_g);
    strcpy(p->apellidos, apellidos_g);
    strcpy(p->nombres, nombres_g);
    strcpy(p->telefono, telefono_g);
    p->sueldo = sueldo_g;
    p->estado = estado_g;
    p->sig = NULL;
 
    if(vacia_empleado(cab1))
    	*cab1 = p;
    else{
    	aux = *ult1;
    	aux->sig = p;
 
    }
    *ult1 = p;
    printf ("\tINFORMACION INSERTADA CORRECTAMENTE");
}
//funcion que retorna 1 si existe la cédula empleado y retorna 0 si no existe la cédula del empleado
int compara(empleado **cab1){
	empleado *aux = NULL;
	if(vacia_empleado(cab1)==0) {
		aux = *cab1;
		while(aux!=NULL){
			if(strcmp(aux->cedula, cedula_g)==0)
				return 1;
			aux = aux->sig;
		}
	}
	return 0;
}
//funcion para insertar información de las cargas familiares
void ingreso_carga_familiar(empleado_carga_familiar **cab2, empleado_carga_familiar **ult2, empleado **cab1){
    empleado_carga_familiar *q, *aux = NULL;
	if(compara(cab1)){
		q = new empleado_carga_familiar();
		strcpy(q->cedula_empleado, cedula_g);
		strcpy(q->apellidos, apellidos_g);
		strcpy(q->nombres, nombres_g);
		q->tipo_pariente =tipo_pariente_g;
		q->edad = edad_g;
		q->sig = NULL;
		if(vacia_carga_familiar(cab2))
			*cab2 = q;
		else{
			aux = *ult2;
			aux->sig = q;
		}
		*ult2 = q;
		printf ("\tINFORMACION INGRESADA CON EXITO!");
	}
	else
		printf ("\tInformacion no ingresada. No se encontro coincidencia con la cedula empleado");
}
 
//funcion que muestra la información de los empleados con estado activo
void mostrar_todos_empleados(empleado **cab1){
	empleado *p = NULL;
	if(vacia_empleado(cab1))
      	printf ("\tNO HAY INFORMACION EN LA COLA");
	else{
		p = *cab1;
		while(p!=NULL){
			if(p->estado=='A'){
				printf ("\nEMPLEADO CON ID ", p->ID);
				printf ("C.I. ");
				puts(p->cedula);
				printf ("Apellidos: ");
				puts(p->apellidos);
				printf ("Nombres: ");
				puts(p->nombres);
				printf ("Tel. ");
				puts(p->telefono);
				printf ("salario(en dolares): ", p->sueldo);
			}
			p = p->sig;
		}
	}
}
 
//funcion que muestra la informacion de las cargas familiares 
void mostrar_carga_familiar(empleado_carga_familiar **cab2){
	empleado_carga_familiar *aux = NULL;
	if(vacia_carga_familiar(cab2))
		printf ("\tNO HAY INFORMACION EN LA COLA");
	else {
		aux = *cab2;
		while(aux!=NULL){
			if(strcmp(aux->cedula_empleado, cedula_g)==0){
				printf ("Apellidos: ");
				puts(aux->apellidos);
				printf ("Nombres: ");
				puts(aux->nombres);
 
				printf ("Parentesco: ");
				switch(aux->tipo_pariente){
					case 'E':
						printf ("Esposa");
						break;
					case 'H':
						printf ("Hijo");
						break;
					case 'P':
						printf ("Padre");
						break;
				}
				printf ("Edad: ", aux->edad);
			}
			aux = aux ->sig;
		}
	}
}
//función que inactiva a un empleado	
void inactivar(empleado **cab1){
	empleado *aux;
 
	aux = *cab1;
	while(aux != NULL){
		if(strcmp(aux->cedula, cedula_g)==0)
			aux->estado = 'I';
	aux = aux->sig;
	}
	printf ("EMPLEADO INACTIVADO CON EXITO");
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder