duda sobre funcion booleana c++

Iniciado por indict, 12 Diciembre 2012, 01:29 AM

0 Miembros y 2 Visitantes están viendo este tema.

indict

Es un programa que dice que se indique si hay al menos un elemento negativo al vector, el programa que he echo pongo lo que ponga me sale que si hay valor negativo, si cambio el true por el false me imprime que no hay ningún valor negativo, no sé donde está el fallo :(

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

bool parell(vector<int>v){
  int i;
  for(i=0;i<v.size();i++){
if(v[i]%2==0){return false;}}
    return true;}



int main(){
   int i,n,e;
    cout<<"mida";
    cin>>n;
    vector<int>v(n);
    for(i=0;i+1<n;i++){
                     cout<<"lelement"<<i<<"..";
                     cin>>e;
                     v[i]=e;}
    cout<<"lultim element del vector es 0"<<endl;
    v.push_back(0);
   
    if (parell(v)){cout<<"conte almenys un nombre parell";}
    else {cout<<"no conte cap nombre parell";}
   
   
   
    system("pause");
    return 0;}

rir3760

#1
Cita de: indict en 12 Diciembre 2012, 01:29 AMEs un programa que dice que se indique si hay al menos un elemento negativo al vector [...] no sé donde está el fallo :(
El error en tu caso es lógico: ese programa lo único que hace es verificar si existe por lo menos un numero par. Por cierto en la funcion "parell" los valores de retorno estan al reves.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

indict

pero yo mismo me pongo un ejemplo que no haya en el vector ningún número par, y me imprime que si. ¿?

naderST

Como te dijo rir3760 los retornos están invertidos, es decir, al encontrar al menos un número par va a retornar false

indict

ya lo cambié, pero sigue sin funcionar

naderST

Debería funcionar, valida que el cambio que hayas hecho sea correcto. Lo que debes hacer es cambiar el return false por true y el true por false