miércoles, 4 de junio de 2025

03.- Programación I - Parcial Nro. 3 (Semestre 2025-II) - Solución del Profesor


Solución


/*
Programa para calcular el coseno del ángulo cuarto
a partir de cinco valores que representan el 
seno del ángulo doble - 1er reto de Deadpool
Parcial Nro. 3 - Semestre 2025-II

Elaborado por: Carlos Ferrer 
Fecha: 04 de Jun de 2025
Rev. 0
*/

#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;

main()
{
double seno2Q[6]; //senos del ángulo doble
double coseno4Q[6]; //cosenos del ángulo cuarto
int i;
double ang_4Q; // Angulo cuarto
/*Voy a ponerle a la función "usm". Esta función enlaza el programa con la libreria fstream
ifstream significa lectura desde un archivo - input usando fstream*/
/*Voy a ponerle a la función "Prog1". Esta función enlaza el programa con la libreria fstream
ofstream significa escritura desde un archivo - output usando fstream*/
ifstream usm; 
ofstream prog1;
/*El open abre el archivo. Se debe colocar los dos barras invertidas backslah.
el ios::in permite lectura desde el archivo*/
usm.open("C:\\Users\\Deadpool.txt",ios::in); 
prog1.open("C:\\Users\\Salida.txt",ios::out); 

  /*Voy a verificar si la apertura del archivo falló, si así fue le digo que se salga
  del programa, esto podría pasar debido a que el archivo no existe o fue mal escrito.
  La función fail se activa si la apertura del archivo falla.*/
if(usm.fail()) 
{
cout <<"El archivo de lectura no pudo abrirse"<<endl;
exit(0);
}
if(prog1.fail()) 
{
cout <<"El archivo de escritura no pudo abrirse"<<endl;
exit(0);
}
// Imprimimos el encabezado en el archivo de salida
    
        prog1 <<" Seno 2Q      Coseno 4Q      Angulo Q"<<endl<<endl;
        
        // Procedemos a leer del archivo
        for (i=1;i<=5;i=i+1)
{
usm >>seno2Q[i];  // Leemos el seno de 2Q
ang_4Q=2*asin(seno2Q[i]); // Obtenemos 4Q
coseno4Q[i]=cos(ang_4Q);  // Obtenemos el coseno de 4Q
        //Escribimos el archivo de salida
prog1 <<"Seno2Q = "<<seno2Q[i]<<"     Coseno4Q = "<<coseno4Q[i];
prog1 <<"           Angulo Q = "<<ang_4Q*180/(M_PI*4)<<endl;
}
         
       // Cierro el archivo
       usm.close();
    
  prog1.close();

  cout <<" Archivo actualizado satisfactoriamente !!!!"<<endl;
}

2.- 

¿Que hace el programa?

El programa muestra en pantalla todos los números primos que se encuentran entre el número dos (2) y un numero ingresado, adicionalmente, los números son guardados en un arreglo y el programa muestra en pantalla las posiciones de memoria de cada elemento del arreglo en donde se guarda un numero primo (En hexadecimal) y por ultimo presenta un contador con la cantidad de números primos encontrados.


¿Para que se usa la variable "Div"?

La variable Div es una estructura de una variable entera y una doble y se usa para determinar si hay un numero menor que sea capaz de dividir exactamente al numero que se esta evaluando. Si se produce la división el numero "No es Primo" de lo contrario "El Numero es Primo".

¿Para que se usa el puntero memoria?

El puntero memoria registra la posición de memoria de cada elemento del arreglo usado y lo presenta en pantalla.


viernes, 23 de mayo de 2025

04.- Programación I - Manejo de Archivos de texto (ESCRITURA) - clase 23 de May 2025

En la misma clase se planteo un programa que creara un archivo de texto en el escritorio de nombre Yoyo y le vaciaba cierta cantidad de datos. Inicialmente determinamos cual es la ruta del escritorio de nuestra maquina, para esto, vemos las propiedades de un archivo en el escritorio 8scritorio y copiamos la ruta del escritorio:





PROGRAMA 1

/*Programa para probar la creación de un archivo texto y el vaciado de datos
dentro del archivo usando la libreria "fstream"

Elaborado por: Carlos Ferrer 
Fecha: 29 de Nov de 2024*/




#include<iostream>
#include<fstream>
using namespace std;

main()
{
int cantidad=79; //Cantidad de alumnos
/*Voy a ponerle a la función "verde". Esta función enlaza el programa con la librería
ofstream significa salida usando fstream - Output fstream*/

ofstream verde; 
/*El open crea y abre el archivo. Se debe colocar los dos barras invertidas backslah.
el ios::out hace que si el archivo existe cada vez que se corre el programa el 
archivo es sobreescrito*/
verde.open("C:\\Users\\Carlos Javier\\Desktop\\yoyo.txt",ios::out); 

/*Voy a verificar la apertura del archivo falló, si asi fue le digo que se salga
  del programa, esto podria pasar debido a que no hay espacio en el disco duro
  o porque tu antivirus los borra, asegurense de desactivar el antivirus mientras hace
  esta prueba.
 La función fail se activa si la apertura del archivo falla.*/
if(verde.fail()) 
{
cout <<"El archivo no pudo abrirse"<<endl;
exit(0);
}
// Procedemos a escribir en el archivo
    verde <<"Mi nombre es Carlos Ferrer "<<"soy profesor de Prog I"<<endl;
    verde <<"tengo mas de "<<cantidad<<" de alumnos de Prog I ";
    
    
    // Se recomienda usar la función Flush para limpiar la memoria del programa
    verde.flush();
    // Cierro el archivo
    verde.close();
cout <<"Archivo creado y data ingresada!!"<<endl<<endl;
}

RESULTADO PROGRAMA 1




**********************************************************************************************

Ahora vamos a modificar el programa para que solicite la ruta y para que añada texto al archivo existente.

PROGRAMA 2

/*Programa para agregar datos a un archivo de texto existente usando la libreria "fstream"

Elaborado por: Carlos Ferrer 
Fecha: 29 de Nov de 2024*/




#include<iostream>
#include<fstream>
using namespace std;

main()
{
string ruta; //ruta y nombre del archivo a modificar (sin la doble Barra backslah)
int cantidad_damas=34; //Cantidad de Señoritas en la clase
//Ingresamos la ruta y el nombre del archivo a modificar
cout <<"Ingrese ruta y nombre de archivo, recuerde colocar"<<endl;
cout <<"la extension del archivo:"<<endl;
getline (cin,ruta);
/*Voy a ponerle a la función "zapato". Esta función enlaza el programa con la librería
ofstream significa salida usando fstream - Output fstream*/

ofstream zapato; 
/*El open abre el archivo. A la variable que contiene la ruta se le debe colocar c_str
para poder leer su contenido. El ios::app es el comando que hace que los datos sean 
agregados al archivo existente*/
zapato.open(ruta.c_str(),ios::app); 

/*Voy a verificar la apertura del archivo falló, si asi fue le digo que se salga
  del programa, esto podría pasar debido a que no hay espacio en el disco duro
  o porque tu antivirus los borra, asegúrense de desactivar el antivirus mientras hace
  esta prueba.
  La función fail se activa si la apertura del archivo falla*/
if(zapato.fail()) 
{
cout <<"El archivo no pudo abrirse"<<endl;
exit(0);
}
// Procedemos a escribir en el archivo
    zapato <<endl<<"de los cuales "<<cantidad_damas<<" son damas."<<endl;
    
    
    
    // Se recomienda usar la función Flush para limpiar la memoria del programa
    zapato.flush();
    // Cierro el archivo
    zapato.close();
cout <<"Archivo creado y data ingresada!!"<<endl<<endl;
}

RESULTADO PROGRAMA 2







04.- Programación I - Manejo de Archivos de texto (LECTURA) - clase 23 de May 2025

Durante la clase se planteo un programa que lee los datos contenidos en un archivo de texto ubicado en el escritorio de nombre Yoyo.txt. Inicialmente determinamos cual es la ruta del escritorio de nuestra maquina, para esto, vemos las propiedades de el archivo en el escritorio y copiamos la ruta del escritorio:



El programa a elaborar leerá las primeras cuatro (4) palabras contenidas en el archivo.

PROGRAMA 1


/*Programa para probar la lectura "parcial" de un archivo texto. Los datos leídos se presentarán 
en pantalla. Se empleará la librería "fstream"

Elaborado por: Carlos Ferrer 
Fecha: 29 de Nov de 2024*/

#include<iostream>
#include<fstream>
using namespace std;

main()
{
string palabra1,palabra2,palabra3,palabra4; //variables tipo string
/*Voy a ponerle a la función "usm". Esta función enlaza el programa con la libreria fstream
ifstream significa lectura desde un archivo - input usando fstream*/
ifstream usm; 
/*El open abre el archivo. Se debe colocar los dos barras invertidas backslah.
el ios::in permite lectura desde el archivo*/
usm.open("C:\\Users\\Sheila Orta\\OneDrive\\Desktop\\yoyo.txt",ios::in); 

/*Voy a verificar si la apertura del archivo falló, si así fue le digo que se salga
  del programa, esto podría pasar debido a que el archivo no existe o fue mal escrito.
  La función fail se activa si la apertura del archivo falla.*/
if(usm.fail()) 
{
cout <<"El archivo no pudo abrirse"<<endl;
exit(0);
}
// Procedemos a leer del archivo
    usm >>palabra1;
    usm >>palabra2;
usm >>palabra3;
usm >>palabra4;
    
        
    // Cierro el archivo
    usm.close();
//Presento los datos en la consola
cout <<palabra1<<" "<<palabra2<<" "<<palabra3<<" "<<palabra4<<endl<<endl;
system("pause");
}

RESULTADO PROGRAMA 1



Ahora modificamos el programa para que lea todo el contenido del archivo de texto.


PROGRAMA 2

/*Programa para probar la lectura "total" de un archivo texto. Los datos leídos se presentarán 
en pantalla. Se empleará la libreria "fstream"

Elaborado por: Carlos Ferrer 
Fecha: 29 de Nov de 2024*/

#include<iostream>
#include<fstream>
using namespace std;

main()
{
string texto; //variables tipo string
/*Voy a ponerle a la función "prog1". Esta función enlaza el programa con la libreria fstream
ifstream significa lectura desde un archivo - input usando fstream*/
ifstream prog1; 
/*El open abre el archivo. Se debe colocar los dos barras invertidas backslah.
el ios::in permite lectura desde el archivo*/
prog1.open("C:\\Users\\Sheila Orta\\OneDrive\\Desktop\\yoyo.txt",ios::in); 

/*Voy a verificar si la apertura del archivo falló, si asi fue le digo que se salga
  del programa, esto podria pasar debido a que el archivo no existe o fue mal escrito.
  La función fail se activa si la apertura del archivo falla.*/
if(prog1.fail()) 
{
cout <<"El archivo no pudo abrirse"<<endl;
exit(0);
}
/* Procedemos a leer del archivo y presentamos los datos en la consola,
esto lo hacemos hasta que lleguemos al fin del archivo - eof = end of file*/

    while(not(prog1.eof()))
    {
    getline(prog1,texto);
cout <<texto<<endl;
}    
        
    // Cierro el archivo
    prog1.close();
cout <<endl;
system("pause");
}

RESULTADO PROGRAMA 2




03.- Programación I - Programa desarrollado en el laboratorio para estudiar triángulos basado en ESTRUCTURAS

Programa


/* Programa que calcula todas las partes de un triangulo

y el tipo del triangulo a partir de dos lados y el angulo 

opuesto al lado faltante.

En el programa se aplico el concepto de la estructura.

Elaborado por Carlos Ferrer

Revisión Mayo de 2025

*/

#include <iostream>

#include <math.h>

#include <locale.h>

using namespace std;


//Creamos la estructura

struct Elementos_de_un_triangulo

{

float Q1,Q2,Q3;

float L1,L2,L3;

string tipo;

};


main()

{

setlocale(LC_ALL, "spanish");

// Creamos la variable t1 con todos los datos de la estructura

Elementos_de_un_triangulo t1;


// Ingresamos los datos

cout <<"Ingrese el tamaño del lado Nro. 1 = ";

cin >>t1.L1;

cout <<"Ingrese el tamaño del lado Nro. 2 = ";

cin >>t1.L2;

cout <<"Ingrese el valor del ángulo contrario al Lado Nro. 3 en grados = ";

cin >>t1.Q3;


// Calculamos el lado faltante usan ley del coseno

t1.L3= sqrt(pow(t1.L1,2)+pow(t1.L2,2)-2*t1.L1*t1.L2*cos(t1.Q3*M_PI/180));


// Calculamos los ángulos faltantes usando ley del seno

t1.Q2=asin(sin(t1.Q3*M_PI/180)*t1.L2/t1.L3);

t1.Q1=asin(sin(t1.Q3*M_PI/180)*t1.L1/t1.L3);


// Determinamos el tipo de triangulo

if (t1.L1!=t1.L2 and t1.L1!=t1.L3 )

{

t1.tipo="Escaleno";

}

else if (t1.L1==t1.L2 and t1.L1==t1.L3 )

{

t1.tipo="Equilatero";

}

else

{

t1.tipo="Isosceles";

}

if (t1.Q1*180/M_PI==90 or t1.Q2*180/M_PI==90 or t1.Q3==90)

{

t1.tipo=t1.tipo +" y Rectángulo";

}


system("cls");


// presentamos los resultados

cout <<"********** Resultados *********"<<endl;

cout <<endl<<"Lado Nro. 1 = "<<t1.L1;

cout <<endl<<"Lado Nro. 2 = "<<t1.L2;

cout <<endl<<"Lado Nro. 3 = "<<t1.L3;

cout <<endl<<"Ángulo Nro. 1 = "<<t1.Q1*180/M_PI;

cout <<endl<<"Ángulo Nro. 2 = "<<t1.Q2*180/M_PI;

cout <<endl<<"Ángulo Nro. 3 = "<<t1.Q3;

cout <<endl<<endl<<"El triangulo es = "<<t1.tipo<<endl;

system("pause");

}

viernes, 16 de mayo de 2025

03.- Programación I - Apuntadores y Memoria

La siguiente publicación es sobre el uso de apuntadores, la misma contiene tres (3) programas. Copie y ejecute el primer programa, posteriormente compare los programas 2 y 3. El nro. 2 se elaboró sin el uso de apuntadores. El nro. 3 es el mismo programa con el uso de apuntadores



/* Programa Nro 1 muestra el uso del ampersen & y el * con el

manejo de Punteros

Elaborado por Carlos Ferrer*/


#include<iostream>

using namespace std;


main()

{

    int valor=14;

    int *apuntador;


cout <<"    *************** Manejo de memoria *******************                       Pag 1 de 5"<<endl<<endl;

cout <<"    El ampersand (&) es un operador de C++ y es comunmente"<<endl; 

cout <<"    utilizado. Este operador nos permite obtener la direccion"<<endl; 

cout <<"    de memoria de una variable cualquiera y es justo esto"<<endl; 

cout <<"    (la direccion en memoria) es lo que utilizan los programas"<<endl; 

cout <<"    para almacenar los datos o sea los valores asignados a las"<<endl;  

cout <<"    variables"<<endl<<endl; 

cout <<"    Veamos un ejemplo:"<<endl;

cout <<"    Declaremos una variable entera y asignemosle el numero 14=>"<<endl<<endl;

cout <<"                 int valor=14"<<endl<<endl;

cout <<"    Ahora procedamos a imprimir en pantalla la posicion de"<<endl;

cout <<"    memoria, para esto usamos:"<<endl<<endl;

cout <<"                 cout<<&valor;"<<endl<<endl;

cout <<"    El resultado es el siguiente:"<<endl<<endl;

cout<<"                 "<<&valor<<endl<<endl;

cout <<"    En consecuencia en la posicion de memoria "<<&valor<<endl;

cout <<"    es donde esta guardado el numero 14 "<<endl<<endl;

cout <<"    . . . ";

system ("pause");

system ("cls");


cout <<"    *************** Apuntadores *******************                             Pag 2 de 5"<<endl<<endl;

cout <<"    El asterisco (*) es el operador por excelencia"<<endl; 

cout <<"    de los punteros. Su utilidad radica en que si"<<endl; 

cout <<"    el valor de dicho apuntador corresponde a una"<<endl; 

cout <<"    direccion de memoria, el asterisco nos permite"<<endl; 

cout <<"    acceder al valor almacenado alli."<<endl<<endl; 

cout <<"    Viendolo desde otro enfoque, un apuntador permite"<<endl; 

cout <<"    extraer el valor almacenado en una direccion de memoria."<<endl<<endl;

cout <<"    IMPORTANTE: Los apuntadores deben ser del mismo tipo"<<endl; 

cout <<"    que el dato que se desea apuntar."<<endl<<endl; 


cout <<"    Veamos un ejemplo:"<<endl;

cout <<"    Declaremos un apuntador del tipo entero=>"<<endl<<endl;

cout <<"                 int *apuntador"<<endl<<endl;

cout <<"    Ahora hagamos que el apuntador contenga una"<<endl;

cout <<"    posicion de memoria, para esto usaremos el & =>"<<endl<<endl;

cout <<"                 apuntador=&valor"<<endl<<endl;

cout <<"    . . . ";

system ("pause");

system ("cls");

cout <<"    Si imprimimos la variable apuntador                                         Pag 3 de 5"<<endl<<endl; 

cout <<"    cout <<apuntador;"<<endl<<endl; 

cout <<"    que dato esperas que aparezca en pantalla:"<<endl<<endl;

cout <<"    a) La posicion de memoria que donde esta el numero 14 "<<endl; 

cout <<"    b) El numero 14 "<<endl<<endl; 


cout <<"    . . . ";

system ("pause");

system ("cls");


cout <<"    *************** RESPUESTA *******************                               Pag 4 de 5"<<endl<<endl;

cout <<"    Si imprimimos la variable apuntador"<<endl<<endl; 

cout <<"    cout <<apuntador;"<<endl<<endl; 

cout <<"    que dato esperas que aparezca en pantalla:"<<endl<<endl;

cout <<"    Opcion A=>"<<endl<<endl;

apuntador=&valor;

cout <<"    La posicion de memoria que donde esta el numero 14 "<<endl<<endl;

cout <<"                    "<<apuntador<<endl<<endl;  

cout <<"    . . . ";

system ("pause");

system ("cls"); 

cout <<"    Si queremos imprimir el valor de la posicion de memoria                     Pag 5 de 5"<<endl;  

cout <<"    corresponde usar el operador *"<<endl<<endl;  

cout <<"    para imprimir el dato de la posicion de memoria debemos"<<endl;

cout <<"    cambiar => cout <<apuntador;"<<endl; 

cout <<"        por => cout <<*apuntador;"<<endl<<endl; 

cout <<"            El resultado sera = "<<*apuntador<<endl<<endl; 


cout <<"                EXITO!!!!"<<endl<<endl;  

system ("pause");

}

--------------------------------------------------------------------

Programa Nro2

/*Este programa contabiliza la cantidad de letras A dentro de 

una cadena de caracteres sin el uso de punteros*/

#include<iostream>

using namespace std;

string texto;

main()

{

int i;

int contador=0;

cout <<"ingrese la cadena de caracteres"<<endl;

getline(cin, texto);

for (i=0;i<=29;i=i+1)

         {

if(texto[i]=='A' or texto[i]=='a')

            {

    contador=contador+1;

            }

                }


cout <<"Tu cadena de caracteres tiene la cantidad de "<<contador<< " letras A"<<endl;

system("pause");

}

-------------------------------------------------------------------

Programa Nro3

/*Este programa contabiliza la cantidad de letras A dentro de 

una cadena de caracteres usando punteros*/


#include<iostream>

using namespace std;

string texto;

main()

{

int contador;

char *puntero;

cout <<"ingrese la cadena de caracteres (1 palabra)"<<endl;

getline(cin, texto);

puntero=&texto[0];

while(*puntero)

{

if(*puntero=='A' or *puntero=='a')

         {

contador=contador+1;

        }

puntero=puntero+1;

}

cout <<"Tu cadena de caracteres tiene la cantidad de "<<contador<< " letras A"<<endl;

system("pause");

}

-------------------------------------------------------------------

Programa Nro4

Otro ejemplo veamos un programa que le envía dos arreglos a una función y este le retorna el valor máximo y mínimo contenido en cada arreglo (usando punteros).


#include<iostream>

using namespace std;


void funcion_unica (double aux1[],double aux2[],int aux1_largo,int aux2_largo,double *a1_min,double *a1_max,double *a2_min,double *a2_max)

{

double aux1_max,aux1_min,aux2_max,aux2_min;

int i;

aux1_max=aux1[0];

aux2_max=aux2[0];

aux1_min=aux1[0];

aux2_min=aux2[0];

for (i=1;i<aux1_largo;i=i+1)

{

if(aux1[i]>aux1_max)

{

aux1_max=aux1[i];

}

if(aux1[i]<aux1_min)

{

aux1_min=aux1[i];

}

*a1_min=aux1_min;

*a1_max=aux1_max;

}

for (i=1;i<aux2_largo;i=i+1)

{

if(aux2[i]>aux2_max)

{

aux2_max=aux2[i];

}

if(aux2[i]<aux2_min)

{

aux2_min=aux2[i];

}

}

*a2_min=aux2_min;

*a2_max=aux2_max;

}

main()

{

double a1[]={12,13,14,15,1,2,1,6,7,8,9,0,12};

double a2[]={1,-23,3.2,4,5,6,7,8,9,12,12,1,0,34,23};

double min_a1,max_a1,min_a2,max_a2;

    int largo_a1, largo_a2;

     largo_a1=sizeof(a1)/sizeof(a1[0]);

largo_a2=sizeof(a2)/sizeof(a2[0]);

funcion_unica(a1,a2,largo_a1,largo_a2,&min_a1,&max_a1,&min_a2,&max_a2);

cout<<min_a1<<endl;

cout<<max_a1<<endl;

cout<<min_a2<<endl;

cout<<max_a2<<endl;


}

jueves, 15 de mayo de 2025

03.- Programación I - Funciones

Una función en C++ es un fragmento de código que se puede llamar desde cualquier punto de un programa principal (main). En C++ podemos diferenciar entre dos tipos de funciones:

  • Aquellas que no tienen retorno void  (Vacias).
  • Aquellas que retornan un tipo de dato (como int, double o cualquier otro),

IMPORTANTE: NO SOBREUTILICE LAS FUNCIONES, EL USO DE LAS MISMAS SE JUSTIFICA SI DENTRO DE LOS PROGRAMAS HAY PROCEDIMIENTOS QUE SE REPITEN MULTIPLES VECES.

ORGANIZAR UN PROGRAMA CON EL USO DE LAS FUNCIONES  PUEDE SER UNA COSTUMBRE INAPROPIADA.


Ejemplo de función tipo void:



#include <iostream>
using namespace std;

void sumaDosEnteros (int entero1, int entero2) 
{
    int resultado = 0;
    resultado = entero1 + entero2;
  cout <<endl<<"Si sumamos "<<entero1<<" + "<<entero2<< " obtenemos el numero = "<<resultado<<endl<<endl;
     system("pause");
     return; 
}
int main() 
{
 int numero[3]={0};
 int i;
 cout<<"Bienvenidos al programa que suma 2 numeros usando funciones con void"<<endl;
 cout<<"Elaborado por Carlos Ferrer"<<endl;

 for(i=1;i<=2;i=i+1)
     {
     cout <<endl<<"Ingrese numero "<<i<<" = ";
     cin >>numero[i];
     }

 sumaDosEnteros(numero[1],numero[2]);
 return 0;
}

Veamos el mismo programa usando función de retorno:

#include <iostream>
using namespace std;

int sumaDosEnteros (int entero1, int entero2) 
    {
     int resultado = 0;
     resultado = entero1 + entero2;
     return resultado; 
    }

main() 
{
 int numero[3]={0};
 int i;
 cout<<"Bienvenidos al programa que suma 2 numeros usando funciones de retorno de dato"<<endl;
 cout<<"Elaborado por Carlos Ferrer"<<endl;

 for(i=1;i<=2;i=i+1)
     {
     cout <<endl<<"Ingrese numero "<<i<<" = ";
     cin >>numero[i];
     }
cout <<endl<<"Si sumamos "<<numero[1]<<" + "<<numero[2]<< " obtenemos el numero = "<<sumaDosEnteros(numero[1],numero[2])<<endl<<endl;
 system("pause");
 }

Como vemos, las funciones las hemos situado antes de la función main. Alternativamente, podemos situar el cuerpo de las funciones después de la función main. Veamos nuevamente los dos programas haciendo ese ajuste de posición (Colocando la función al final).

 

Ejemplo de función tipo void - colocando la función al final (Noten la doble declaración):


#include <iostream>
using namespace std;

int main() 
{
 int numero[3]={0};
 int i;
 void sumaDosEnteros (int entero1, int entero2); //PRIMERA DECLARACIÓN

 cout<<"Bienvenidos al programa que suma 2 numeros usando funciones con void"<<endl;
 cout<<"Elaborado por Carlos Ferrer"<<endl;

  for(i=1;i<=2;i=i+1)
 {
 cout <<endl<<"Ingrese numero "<<i<<" = ";
 cin >>numero[i];
 }

sumaDosEnteros(numero[1],numero[2]); 
return 0;

}

void sumaDosEnteros (int entero1, int entero2) //2da DECLARACION Y DESARROLLO
{
 int resultado = 0;
 resultado = entero1 + entero2;
cout <<endl<<"Si sumamos "<<entero1<<" + "<<entero2<< " obtenemos el numero = "<<resultado<<endl<<endl;

 system("pause");
 return; 
}

Veamos el mismo programa usando función de retorno - colocando la función al final (Noten nuevamente la doble declaración):


#include <iostream>
using namespace std;

int main() 

{

 int numero[3]={0};
 int i;
 int sumaDosEnteros (int entero1, int entero2);  //1ra DECLARACIÓN

 cout<<"Bienvenidos al programa que suma 2 numeros usando funciones de retorno de dato"<<endl;
 cout<<"Elaborado por Carlos Ferrer"<<endl;

 for(i=1;i<=2;i=i+1)
 {
 cout <<endl<<"Ingrese numero "<<i<<" = ";
 cin >>numero[i];
 }

 cout <<endl<<"Si sumamos "<<numero[1]<<" + "<<numero[2]<< " obtenemos el numero = "<<sumaDosEnteros(numero[1],numero[2])<<endl<<endl;
 system("pause");

 return 0;

}

int sumaDosEnteros (int entero1, int entero2) //2da DECLARACIÓN Y DESARROLLO
{
 int resultado = 0;
 resultado = entero1 + entero2;
 return resultado; 
}

Por último, les dejo un programa sencillo, con el cual un profesor de primaria calcula la nota promedio de sus alumnos - máximo 20 alumnos, que pueden cursar hasta un máximo de 10 materias distintas. El ejemplo usa una función de retorno de datos. En este caso especifico se le envía un arreglo a la función, y la función recibe el arreglo sin importar la cantidad de elementos que son enviados.

#include <iostream>
using namespace std;

main() 
{

    float notas[11];
    string nombre[21]={""};
    string opcion="s";
    int n, i, j=1;
    float notas_finales[21]={0};
    float promedio(float valores[], int cantidad); 

   cout<<"Elaborado por Carlos Ferrer"<<endl;

    while ((opcion== "s" or opcion == "S") and j<20)
    {
        cout<<"Escriba el apellido del alumno nro "<<j<<" (Max 20)= ";
        cin>> nombre[j];
n=0;
while(n<1 or n>10)
{
cout<<"Cuantas notas tiene "<<nombre[j]<<" (Max 10)= ";
    cin>> n;
}

       for (i = 0; i < n; i=i+1) 
      {
         notas[i]=-1;
         while(notas[i]<0 or notas[i]>20)
{
cout<<"  Nota "<< i + 1<<" (Rango 0-20)= ";
                cin>> notas[i];
                }
      }
        notas_finales[j]=promedio(notas, n);
        cout<<"El promedio de "<<nombre[j]<<" es: "<< notas_finales[j]<<endl;

        cout<<"Desea calcular mas promedios (S=continuar)? ";
        cin>> opcion;
        j=j+1;
       system ("cls");

    }
    i=1;
    cout <<endl<<"RESUMEN"<<endl;
    while (nombre[i] != "" and i<21)
    {
    cout<<"El alumno "<<nombre[i]<<" tiene un promedio de = "<<notas_finales[i]<<endl;
    i=i+1;
   }

}



float promedio (float valores[], int cantidad) 

{

    int i;
    float suma = 0.0;     /*El ciclo for cuenta el número de notas que desea promediar*/

    for (i = 0; i < cantidad; i=i+1)

    {
    suma=suma+valores[i];
    }

    suma=suma/cantidad;
    return suma;

}

IMPORTANTE: Para retornar mas de un datos desde una función se puede utilizar datos de memoria con la técnica de los apuntadores.

Éxitos !!!!