PDA

Visualizza la versione completa : domanda su Array C++


BlackLion
26-03-2010, 09:47
Ciao a tutti

avrei un problema nel controllare i valore si un array
dovrei verificare se non sono presenti valori nulli in un array di interi

con matlab facevo così


while any(S( : )==0)
...
...
end

dove S è il mio array

come posso eseguire lo stesso comando in C++

oregon
26-03-2010, 10:02
Valori nulli, nel senso di "uguali a zero" ...?

BlackLion
26-03-2010, 10:10
si certo valori uguali a 0

oregon
26-03-2010, 12:11
Con un ciclo for esamini tutti i valori



for(i=0; i<DIM; i++)
if(S[i]==0)
....

BlackLion
26-03-2010, 12:17
quindi una cosa del genere:


while (K==0)
{
K=1;
for(i=0; i<DIM; i++)
{
if(S[i]==0)
K=0;
}
....
}


ci avevo pensato...speravo esistesse un comando simile ad "any"

grazie

oregon
26-03-2010, 12:48
Sì ... con un break in modo da non completare il ciclo se ne ha trovato almeno uno ...


while (K==0)
{
K=1;
for(i=0; i<DIM; i++)
{
if(S[i]==0)
K=0;
break;
}
....
}



ci avevo pensato...speravo esistesse un comando simile ad "any"

No ... matlab fa quell'operazione grazie a tanto codice C che lavora "al di sotto" ...

BlackLion
26-03-2010, 17:32
Ok grazie mille per l'aiuto :ciauz:

xnavigator
26-03-2010, 19:43
com'è brutto il linguaggio di matlab...

sembra di programmare un giocattolo


per non parlare di tic; toc
:dhò:

BlackLion
26-03-2010, 20:37
si lo so...purtroppo all'uni ci hanno fatto usare quello
sto imparando C++ da solo perchè lo trovo molto + interessante

antotan
26-03-2010, 21:07
Originariamente inviato da BlackLion
Ciao a tutti

avrei un problema nel controllare i valore si un array
dovrei verificare se non sono presenti valori nulli in un array di interi

con matlab facevo così


while any(S( : )==0)
...
...
end

dove S è il mio array

come posso eseguire lo stesso comando in C++

Aggiungo una piccola cosa che certamente non ti risulterà utile ora (alla fine ti basta ciclare sull'intero array), ma un domani potrebbe venirti utile.
Se vuoi utilizzare una funzione su una sequenza, puoi utilizzare l'algoritmo for_each della STL.
Ad esempio, nel tuo caso:



#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <iostream>

using namespace std;

int zeroes = 0;

void isZero(int val)
{
if(val == 0)
zeroes++;
}

int main()
{
const int n = 8;
int array[n];

srand(time(NULL));
for(int i = 0; i < n; i++)
{
array[i] = rand() % 3;
cout << array[i] << " | ";
}
cout << endl;

for_each(&array[0], &array[8], isZero);

cout << "Ci sono " << zeroes << " zero" << endl;
}


giusto per fare un esempio (solitamente non uso variabili globali).

:ciauz:

Loading