Ejercicio de punteros convertirlo c a c++

Cerrado
sara - 9 jun 2021 a las 05:09
 usuario anónimo - 12 jul 2021 a las 02:05
Hola, tengo un ejercicio en C y necesito hacerlo c++, lo que necesito es ayuda para poder pasarlo de un lenguaje a otro.

Si me pueden ayudar lo agradecería de todo corazón, es que estoy desesperada.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OK 1
#define ERR -10001
#define MAX_DIM 100
int enteros[MAX_DIM];
int num_total;
int lectura(void);
int sacarpantalla(int max, int min, int num_total);
int calcular(int *max, int *min, int total);
int es_digito(char caracter[]);

int main(){
int menor;
int mayor;

if (lectura() == ERR){
printf("Error al leer el numero de terminos.\n");
return ERR;
}

if (calcular(&mayor, &menor, num_total) == ERR){
printf("Error al intentar calcular el mayor y el menor");
return ERR;
}

if (sacarpantalla(mayor, menor, num_total) == ERR){
printf("Error al mostrar por pantalla.\n");
return ERR;
}
return OK;
}

int lectura(void){
int continuar = OK;
int n;
char numeros[MAX_DIM];
for (n = 0; n < (int) strlen(numeros); n++)
numeros[n] = '0';
printf("\nCuantos numeros va a introducir? --> ");

do{
gets(numeros);
continuar = OK;
if ((num_total = es_digito(numeros)) == ERR)
continuar = ERR; if (num_total <= 0)
{
printf("Debe introducir un numero positivo.\n");
continuar = ERR;
}
} while (continuar != OK);

printf("\nIntroduzca los numeros: \n");
for (n = 0; n < num_total; n++){
gets(numeros);
if ((enteros[n] = es_digito(numeros)) == ERR){
printf("Error al leer el numero, por favor repita introduccion.\n");
n--;
}
} return OK;
}

int calcular(int *max, int *min, int total){
int n; *min = *max = enteros[0];
for (n = 1; n < total; n++){
if (*min > enteros[n])
  • min = enteros[n];


if (*max < enteros[n])
  • max = enteros[n];

} return OK;
}

int sacarpantalla(int max, int min, int num_total){
int n;
printf("Los numeros introducidos son: ");
for (n = 0; n < num_total; n++)
printf("%d, ", enteros[n]);
printf("\nMinimo: %d", min);
printf("\nMaximo: %d\n", max);
return OK;
}

int es_digito(char caracter[]){
int i;
int num = 0;
int rango;
if (caracter[0] == 0)
return ERR;
if (caracter[0] == '-'){
i = 1;
rango = 5;
}else
{
i = 0;
rango = 4;
}
if ((int) strlen(caracter) > rango){
printf("No puede introducir esa cantidad de numeros!!!\n");
printf("Es demasiado grande. Introduzca numeros entre -9999 y 9999\n");
return ERR;
}
for (i = i; i < (int) strlen(caracter); i++)
if (caracter[i] < '0' || caracter[i] > '9')
{ printf("\nIntroduzca unicamente digitos, por favor.\n");
return ERR;
}
if (strlen(caracter) == 1)
return num = caracter[0] - '0';

for (i = 0; i != (int) strlen(caracter); i++)
num = (num * 10) + (caracter[i] - '0');
return num;
}

1 respuesta

Hola ahí está, el código, como c++ tiene alta compatibilidad sintáctica con c, no fueron demasiados cambios, de todas maneras asegúrate que no hayan errores de sintaxis y que el programa funcione bien, suerte espero te ayude, saludos.

#include <iostream>
#include <cstdlib> //está librería no está siendo utilizada
#include <cstring>

using namespace std;

#define OK 1
#define ERR -10001
#define MAX_DIM 100

int enteros[MAX_DIM];
int num_total;

int lectura(void);
int sacarpantalla(int max, int min, int num_total);
int calcular(int *max, int *min, int total);
int es_digito(char caracter[]);

int main(){

int menor;
int mayor;

if (lectura() == ERR){
cout << "error al leer el numero de terminos.\n";

return ERR;
}

if (calcular(&mayor, &menor, num_total) == ERR){
cout << "Error al intentar calcular el mayor y el menor";

return ERR;
}

if (sacarpantalla(mayor, menor, num_total) == ERR){
cout << "Error al mostrar por pantalla.\n";
return ERR;
}

return OK;
}

int lectura(void){
int continuar = OK;
char numeros[MAX_DIM];
int n;

for (n = 0; n < static_cast<int> (strlen(numeros)); ++n)
numeros[n] = '0';

cout << "numeros va a introducir? --> ";

do{
con >> numeros;
continuar = OK;

if ((num_total = es_digito(numeros)) == ERR)
continuar = ERR;

if (num_total <= 0)
{
cout << "Debe introducir un numero positivo.\n";

continuar = ERR;
}

} while (continuar != OK);

cout << "introduzca los numeros: \n";

for (n = 0; n < num_total; ++n){
cin >> numeros;

if ((enteros[n] = es_digito(numeros)) == ERR){
cout << "Error al leer el numero, por favor repita introduccion.\n");

--n;
}

}

return OK;
}

int calcular(int *max, int *min, int total){
  • min = *max = enteros[0];


for (int n = 1; n < total; ++n){
if (*min > enteros[n])
  • min = enteros[n];


if (*max < enteros[n])
  • max = enteros[n];

}

return OK;
}

int sacarpantalla(int max, int min, int num_total){

cout << "Los numeros introducidos son: ";

for (int n = 0; n < num_total; ++n)
cout << enteros[n] << " ,";

cout << "\nMinimo: " << min;
cout << "\nMaximo: " << max << endl;

return OK;
}

int es_digito(char caracter[]){
int i;
int num = 0;
int rango;

if (caracter[0] == 0)
return ERR;
if (caracter[0] == '-'){
i = 1;
rango = 5;
}
else
{
i = 0;
rango = 4;
}

if (static_cast<int> (strlen(caracter)) > rango){
cout << "No puede introducir esa cantidad de numeros!!!\n";

cout << "Es demasiado grande. Introduzca numeros entre -9999 y 9999\n";

return ERR;
}

for (; i < static_cast<int> (strlen(caracter)); ++i)
if (caracter[i] < '0' || caracter[i] > '9')
{
cout <<"\nIntroduzca unicamente digitos, por favor.\n");

return ERR;
}
if (strlen(caracter) == 1)
return (num = (caracter[0] - '0'));

for (i = 0; i != static_cast<int> (strlen(caracter)); ++i)
num = ((num * 10) + (caracter[i] - '0'));
return num;
}
0