Ritrovare un valore k in un array e stampare la posizione.

di il
5 risposte

Ritrovare un valore k in un array e stampare la posizione.

Il testo del problema è il seguente: Si richieda all'utente di inserire un array di n caratteri, i numeri inseriti nell'array dovranno essere positivi, dopo ciò l'utente inserirà un numero k, se è presente nell'array bisognerà stampare la posizione,
se è presente due volte dovrà stampare l'ultima posizione, se non è presente dovrà stampare -1.

Diciamo che non ho ancora inserito il controllo dei numeri positivi suppongo con un WHILE giusto?ma come?..
E poi non mi ritrovo con la posizione in quanto mi da sempre la posizione 0..
#include <iostream>
using namespace std;

/*Si richieda all'utente di inserire un array di n caratteri, i numeri inseriti nell'array dovranno essere positivi, dopo ciò l'utente inserirà un numero k, se è presente nell'array bisognerà stampare la posizione,
se è presente due volte dovrà stampare l'ultima posizione, se non è presente dovrà stampare -1*/
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	int i,n,vector[i],k,posizione;
	
	cout <<" Quanti caratteri vuoi inserire nell'array :  ";
	cin >> n;
	
	for (i=0; i<n; i++)
	{
		cout << "Inserire dato positivo nell'array :  ";
		cin >> vector[i];
	}
	
cout << " Nell'array sono presenti i seguenti numeri :  ";
	for (i=0; i<n; i++)
	{
		cout << vector[i] << " " << endl;
	}
	
	cout << " Inserire un valore k da ricercare nell'array ";
	cin >> k;
	
	
	posizione = 0;

	
	for (i=0; i<n; i++)
	{		
	
		if (vector[i]=k)
		{
			vector [i] = k;
			posizione = i;
			cout << " numero trovato nella posizione " << posizione << endl;
		}
	
		
			for (i=0; i<n; i++)
	{
		if (vector[i]!=k)
		{
			posizione == -1;
			cout << " Numero trovato nella posizione " << posizione << endl;
		}

	return 0;
}
}
}
Scusate la mia ignoranza ma sono nuovo nel mondo del c++.

5 Risposte

  • Re: Ritrovare un valore k in un array e stampare la posizione.

    di inserire un array di n caratteri, i numeri inseriti nell'array
    ma si tratta di caratteri o interi? Chiarisci questo.
    Come da post in altro thread, questo non va bene:
    int i,n,vector[i]...
    Qual è la dimensione di vector? Molto meglio fare
    #define MAX_DIM  128
    ...
    int vector[ MAX_DIM ];
    Per proseguire l'esercizio, scomponi il problema in sottoproblemi che potrai affrontare a compartimenti stagni (fai una funzione per ciascun blocco):
    - inserimento dati da tastiera
    - inserimento valore da ricercare
    - ricerca ultima posizione.
    Il controllo sui numeri positivi lo puoi fare in fase di inserimento...
  • Re: Ritrovare un valore k in un array e stampare la posizione.

    N caratteri interi.
    Non è possibile quindi fare tutto in uno stesso programma?
  • Re: Ritrovare un valore k in un array e stampare la posizione.

    Sì puoi farlo tutto in uno stesso programma ma è ragionevole suddividerlo in sottoproblemi, così come quando scali una montagna fai delle tappe.
    Il cuore del problema è ritrovare un valore k all'interno di un array, quindi parti scrivendo una funzione che abbia il seguente prototipo:
    int SearchK( int v[], int n, int k )
    Questa funzione prima la richiamerai dal main() con dei dati di test, es.:
    v[0]=1; v[1]=3; v[2]=12;
    pos = SearchK( v, 3, 12 );
    if( pos != -1 )
      printf( "Trovato alla posizione %d!\n", pos );
    Successivamente farai in modo di caricare il vettore v[] con l'input dell'utente (se ne fai una funzione potrai poi riutilizzarla in tutti i tuoi esercizi senza dover ogni volta riscrivere le stesse cose).
    n caratteri interi
    continuo a non capire cosa voglia dire, o sono caratteri o sono interi... comunque prosegui con int.
  • Re: Ritrovare un valore k in un array e stampare la posizione.

    Numeri interi intendo.
  • Re: Ritrovare un valore k in un array e stampare la posizione.

    Ok, procedi con l'implementazione della SearchK(), che ti ritorna la posizione trovata oppure -1 se non ha trovato
Devi accedere o registrarti per scrivere nel forum
5 risposte