Dev - C++ - calcule si existe algún numero en el vector cuyo valor equivale a la suma del resto de numeros

 
Vista:

calcule si existe algún numero en el vector cuyo valor equivale a la suma del resto de numeros

Publicado por Luis (2 intervenciones) el 24/04/2020 22:13:06
Escribe un programa que defina un vector de numeros y calcule si existe algun numero en el vector cuyo valor equivale a la suma del resto de numeros del vector. Es para c++
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-2
Responder
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++

calcule si existe algún numero en el vector cuyo valor equivale a la suma del resto de numeros

Publicado por Alfil (1444 intervenciones) el 25/04/2020 00:01:42
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
#include <iostream>
 
using namespace std;
 
void leerVector(int v[], int sz);
int sumaVector(int v[], int sz, int pos);
bool funcion(int v[], int sz, int& pos);
 
int main()
{
    int sz, pos;
    bool encontrado = false;
 
    cout << "\nTamanio del vector: ";
    cin >> sz;
    int vector[sz];
 
    leerVector(vector, sz);
 
    if (funcion(vector, sz, pos))
        cout << "\nEl valor " << pos << " es equivalente a la suma del resto de valores" << endl;
    else
        cout << "\nNo hay ningun valor equivalente a la suma del resto de valores" << endl;
 
    return EXIT_SUCCESS;
}
 
void leerVector(int v[], int sz)
{
    cout << "\nDatos del vector:\n";
    for (size_t i = 0; i < sz; i++)
    {
        cout << "(" << i + 1 << "/" << sz << "): ";
        cin >> v[i];
    }
}
 
int sumaVector(int v[], int sz, int pos)
{
    int suma = 0;
 
    for (size_t i = 0; i < sz; i++)
        if (i != pos)
            suma += v[i];
 
    return suma;
}
 
bool funcion(int v[], int sz, int& pos)
{
    bool encontrado = false;
 
    for (size_t i = 0; i < sz; i++)
        if (v[i] == sumaVector(v, sz, i))
        {
            pos = v[i];
            encontrado = true;
            break;
        }
 
    return encontrado;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

calcule si existe algún numero en el vector cuyo valor equivale a la suma del resto de numeros

Publicado por Rodrigo (539 intervenciones) el 25/04/2020 03:36:24
Suma todos los numeros, divide la suma por 2, busca si el numero resultante esta en el arreglo. Si esta, esa es la respuesta.

Ahora, dado que si existe, ese numero tiene que ser mayor que todo el resto, busca en 1 pasada el maximo. Y luego, en vez de "buscar" si la mitad de la suma esta en el arreglo, solo compara si la mitad de la suma es igual al maximo, y si es, esa es la respuesta.
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