Dev - C++ - Dado un arreglo de 5 elementos verificar si hay por lo menos dos o mas elementos que sean iguales

 
Vista:
Imágen de perfil de Francisco
Val: 55
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Dado un arreglo de 5 elementos verificar si hay por lo menos dos o mas elementos que sean iguales

Publicado por Francisco (36 intervenciones) el 15/02/2018 02:56:02
Hola, ¿Cómo están?, el ejercicio pide ingresar los valores de un arreglo de 5 elementos y decir si son iguales.
Yo lo hice, pero cuando lo compilo y ejecuto ingreso por ej 2,2,3,4,5 y me dice que ningun valor es igual.
Deberia mostrarme que hay dos o mas valores iguales.
Necesito que me ayuden por favor, que me digan donde está la falla.
Acá va el código.

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
#include<iostream>
using namespace std;
int main(){
    int arr[5];
    int i=0,j=0;
    char verdad='t';
    cout<<"ingrese valores del arreglo "<<endl;
    for(i=0;i<5;i++){
        cin >> arr[i];
    }
    for(i=0;i<5;i++){
            for(j=0;j<5;j++){
                if(i!=j){
                if(arr[i]==arr[j]){
                    verdad='t';
                }
                else{
                    verdad='f';
                }
           }
    }
    }
    if(verdad=='t'){
        cout<<"hay por lo menos dos valores iguales"<<endl;
    }
    else{
        cout<<"no hay ningun valor igual"<<endl;
    }
    return 0;
}
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

Dado un arreglo de 5 elementos verificar si hay por lo menos dos o mas elementos que sean iguales

Publicado por harol (31 intervenciones) el 15/02/2018 05:29:30
cuando analiza primero el arr[0] con los demás elementos , tu variable verdad tomará el valor de ´t´, cuando analiza el arr[1], con los demás elementos también tu variable verdad tomará el valor de 't', pero cuando analice el arr[2], entonces como no hay ni un elemento igual , y tú has puesto :
else{
verdad='f';
}
entonces, tu variable tomará el valor de 'f' y así con los elementos que siguen es por eso que cuando salgas del for, se irá defrente a
else{
cout<<"no hay ningun valor igual"<<endl;
}
y por eso te sale, que no hay valor igual
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
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Dado un arreglo de 5 elementos verificar si hay por lo menos dos o mas elementos que sean iguales

Publicado por Thanatos (199 intervenciones) el 15/02/2018 07:20: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
#include <iostream>
 
using namespace std;
 
int main() {
    const int kSize = 5;
    int arr[kSize] = { };
 
    cout << "Ingrese los " << kSize << " valores del array:\n";
    for (int i = 0; i < kSize; ++i) {
        cin >> arr[i];
    }
 
    bool seRepiten = false;
    for (int i = 0; i < kSize - 1; ++i) {
        for (int j = i + 1; j < kSize; ++j) {
            if (arr[i] ==  arr[j]) {
                seRepiten = true;
                break;
            }
        }
    }
 
    cout << (seRepiten ? "Al menos dos valores son iguales" : "No se repiten");
 
    return 0;
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
#include <array>
 
int main()
{
    std::array<int, 5> arr{};
 
    std::cout << "Ingrese los " << arr.size() << " valores del array:\n";
    for (std::size_t i{}; i < arr.size(); ++i) {
        std::cin >> arr.at(i);
    }
 
    std::sort(arr.begin(), arr.end());
 
    std::cout << (std::unique(arr.begin(), arr.end()) != arr.end()
                 ? "Al menos dos valores son iguales"
                 : "No se repiten");
 
    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