Dev - C++ - ayuda sobre apuntadores y la verdad no lo logro comprender

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

ayuda sobre apuntadores y la verdad no lo logro comprender

Publicado por codigo de apuntadores (2 intervenciones) el 30/09/2020 21:05:57
hola buen dia . me gustaria saber si alguien me podria ayudar explicandome un codigo,
estoy estudiando y el tema es sobre apuntadores y la verdad no lo logro comprender
el codigo es el siguiente:

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
#include <conio.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
int funcion(int *bp)
{
	int a=0,i;
	cout<<endl;
		for(i=0;i<8;i++)
		{
			if(*(bp+i)%3==0)
			{
 
				cout<<*(bp+i)<<"\t";
				a+=*(bp+i);
			}
		}
	cout<<endl;
	return a;
}
 
 
int main()
{
	int a[]={12,35,71,15,69,26,47,10};
	for(int i=0;i<8;i++)
		cout<<a[i]<<"\t";
 
	printf("%d",funcion(&a[0]));
	return 0;
}





de ante mano muchas gracias
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

ayuda sobre apuntadores y la verdad no lo logro comprender

Publicado por Nacho (181 intervenciones) el 30/09/2020 21:41:57
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
int funcion(int* bp)
{
    int a = 0, i;
    cout << endl;
    for (i = 0; i < 8; i++)   // bucle de 0 a 8
    {
        if (*(bp + i) % 3 == 0)    // si el valor que hay en el puntero a la tabla +i es divisible entre 3
        {
 
            cout << *(bp + i) << "\t";   // lo imprime
            a += *(bp + i);   // y lo suma a a
        }
    }
    cout << endl;
    return a;    // devuelve el valor de a
}
 
 
int main()
{
    int a[] = { 12,35,71,15,69,26,47,10 };  //tabla de ints a inicializado
    for (int i = 0; i < 8; i++)
        cout << a[i] << "\t";      // imprime todos los valores de la tabla
 
    printf("%d", funcion(&a[0]));   //imprime el resultado de la función funcion a la que le pasa un puntero al inicio de la tabla
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda sobre apuntadores y la verdad no lo logro comprender

Publicado por Alfil (1444 intervenciones) el 30/09/2020 23:37:10
Mismo código un poco más limpio. No declares cabeceras que no vas a utilizar, si estás programando en C ustiliza cabeceras de C, si programas en C++ utiliza cabeceras de C++, y sobretodo, no mezcles instrucciones de I/O de C (printf, scanf), con instrucciones de I/O de C++ (cout / cin).

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
using namespace std;
 
int funcion(int *bp);
 
int main()
{
    int a[] = {12, 35, 71, 15, 69, 26, 47, 10};
 
    for (int i = 0; i < 8; i++)
        cout << a[i] << "\t";
 
    cout << funcion(&a[0]) << endl;
 
    return 0;
}
 
int funcion(int *bp)
{
    int a = 0;
 
    cout << endl;
    for (int i = 0; i < 8; i++)
    {
        if (*(bp + i) % 3 == 0)
        {
            cout << *(bp + i) << "\t";
            a += *(bp + i);
        }
    }
    cout << endl;
 
    return a;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar