PDA

Visualizza la versione completa : [c++] selezione totale elementi


cleaner
29-08-2008, 18:11
se ad esempio avessi un array di questa dimensione.

array[100]

e volessi selezionare tutti i valori che precentemente sono stati assegnati da input_tastiera, come posso fare?

se faccio cout << array[0-100]

mi restituisce un valore insensato, grazie.

Metflar
29-08-2008, 18:14
Originariamente inviato da cleaner
se ad esempio avessi un array di questa dimensione.

array[100]

e volessi selezionare tutti i valori che precentemente sono stati assegnati da input_tastiera, come posso fare?

se faccio cout << array[0-100]

mi restituisce un valore insensato, grazie.


for(int i=0;i<100;i++){
cout<<array[i];
}
:ciauz:

cleaner
29-08-2008, 19:00
mmm, facendo così funziona solo in parte, in quanto mi stampa i numeri precedentemente dichiarati da tastiera e assegnati alla variabile n e successivamente inseriti nell'array..MA anche un'altra serie di numeri insensati, vi posto il code che forse è meglio..


#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{

int array[100];
int i;
int n;
cout << "\n QUANTI SONO I NUMERI CHE INTENDI UTILIZZARE?";
cin >> n;

for (i=0; i < n; i++)
{
cout << "definisci il numero";
cin >> array[i];

}
for (i=0; i<100; i++)
{

cout<<array[i];

}

system("PAUSE");
return 0;
}


io nel secondo ciclo mi servirebbe selezionarli tutti appunto per effettuarci poi una operazione nel cout..
:berto: grazie;)

shodan
29-08-2008, 19:34
La condizione nei due cicli for dev'essere identica, altrimenti tutto ciò non ha senso ( e non ha senso nemmeno dichiarare un array di 100 elementi in quel modo e consentire all'utente di chiedere quanti ne vuole. Se inserisci 3000 come input, cosa succede?)

cleaner
29-08-2008, 21:54
mm, prima di tutto ti ringrazio della risposta, in secondo luogo:

1) il fatto di un array di dimensione 100, è insensato, ma essendo un esercizio semplice semplice, mi interessava sopratutto la parte dl selezione_array, in ogni caso è possibile gestire l'eventuale errore con un condizionale if.

2)apportando la tua modifica avviene lo stesso errore di prima, compilando con g++ da linux, l'output del programma è:


241134513633-12113898601345131601-1208705036-1208702944 ecc ecc


stampando giustamente i primi 3 numeri, li altri non capisco cosa siano..O_o

shodan
29-08-2008, 22:21
Immaginavo fosse un esercizio per quello ho postato l'osservazione tra parentesi. Un approccio corretto e di chiedere la dimensione dell'array e dimensionarlo di conseguenza, tuttavia essendo un puro esercizio, dubito che qualcuno abbia la voglia di inserire troppi elementi.

Per il secondo punto: se l'indice in cui inserisci i valori acquisiti va da 0 a n-1, l'unico output significativo è quello che parte da 0 a n-1. Oltre (pur essendoci spazio valido) ci saranno solo valori casuali dal momento che un array locale (come qualsiasi altra variabile locale) non viene azzerato come avviene invece per una variabile globale.

cleaner
30-08-2008, 12:03
ah, ok, ora ho capito il perchè dei numeri successivi..però mi rimangono dei dubbi in riferimento alla prima domanda del post; come faccio selezionare lo spazio di numeri che va 0 a n-1??
ho provato così:
cout<<array[0,n-1]; // non va..


Ed inoltre, riesciresti a spiegarmi con parole perchè propio l' "n-1" e non n?
grazie

shodan
30-08-2008, 12:20
L'unico modo è usare un ciclo for indicando come indice cosa vuoi vedere.
Per esempio supponendo che ti interessi il range da 10 a 20:


for (int i=10; i<20;i++) {
cout << array[i];
}


Per il secondo punto.
In C e C++ un array di dimensione N contiene N elementi nel range da 0 a N-1 in quanto il conteggio delle varie locazioni parte da 0 non da 1.

cleaner
30-08-2008, 12:30
grazie mille :zizi: direi che ti sei spiegato perfettamente, adesso uso questo come esercizio,



for (int i=0; i<n ; i++)
{

cout<<array[i];

}


il range così è determinato e non ho problemi di numeri casuali..

poi vedo di seguire un'altra strada, magari più immediata logicamente, per raggiungere lo scopo.
grazie ancora.

Loading