Hola a todos, soy Cotolon. Y tengo una duda. Bueno voy a explicar el código antes de la pregunta (después del código está la pregunta). hace esto :
- (Input) Pide al usuario tamaño del array
- (Input) Pide al usuario introducir los valores tipo int del array
- (Output) Muestra el array
- (Output) Muestra el primer elemento sumado 2, por cada 0 que haya en el array
- (Output) Muestra el array
#include <iostream>
#include <conio.h>
using namespace std;
int suma2PrimeroPorCadaCero(int[], int);
int main()
{
int cantidad;
cout << "Tamanio array?: "; cin >> cantidad;
cout << endl;
int vec[cantidad], i;
for(i = 0; i < cantidad; i++ ) cin >> vec[i];
cout << endl << endl;
//Tu vector:
for(i = 0; i < cantidad; i++ ) cout << vec[i] << " ";
cout << endl << endl;
//Primer elemento sumado 2 por cada cero
cout << "Primer elemento: " << suma2PrimeroPorCadaCero(vec, cantidad);
cout << endl << endl;
//Tu vector:
for(i = 0; i < cantidad; i++ ) cout << vec[i] << " ";
cout << endl << endl;
getche();
return 0;
}
int suma2PrimeroPorCadaCero(int arr[], int tamanio){
for (int x = 0; x < tamanio; x++)
if (arr[x] == 0)
arr[0] +=2;
return arr[0];
}
Bueno esta es mi duda:
Yo ingrese por ejemplo 6 -> 6 = tamaño array
Ingreso estos valores: 4 5 0 3 0 0
Me muestra el array: 4 5 0 3 0 0
Hay 3 ceros así que suma +6 al 4.
Muestra Primer elemento array: 10
Muestra el array 10 5 0 3 0 0
El problema aquí, es que creo que el parámetro "arr[]" está funcionando como un puntero ya que me cambia el valor del primer elemento de 4 a 10.
¿Hay alguna forma de pasar el array "vec" a la función, sin que me cambie el valor de algún elemento de "vec"
La única solución por ahora que hice fue en main crear un "rvec" que sería un array de respaldo que contiene los valores de "vec" y después de llamar a la función, le asignaría a los valores de "vec" los valores de "rvec"
Gracias a todos por pasar y comentar