PDA

View Full Version : [C++] programma che ridà valori singoli


Dius0
28-04-2008, 17:46
Aiuto, mi serve un programma (console application).
Il testo del programma è il seguente:
-scrivere un programma in linguaggio c++ con un array di max 100 numeri, che stampi tutti gli eventuali valori singoli (CHE NON HANNO DOPPIONI) e le posizioni relative all'interno del vettore stesso.
es 4,2,3,5,6,2.
il progr mi ridà 4,3,5,6 e le relative posizioni all'interno del vettore
Se è possibile fare questo programma con solo
-array
-condizioni if else
-cicli
Ringrazio di cuore chiunque mi aiuti.


Io ho fatto questo poi mi non so come fare

"
#include "stdafx.h"
#include "iostream"
#define max 100
using namespace std;

void main()
{
int v[max],i,j,l,k,o;
l=0;
do{
cout<<"lunghezza vettore ";
cin>>j;
}while(j>max);
for(i=0;i<j;i++)
{
cout<<"inserisci elementi ";
cin>>v[i];
}
"

wizard1993
28-04-2008, 17:52
implementazione semplice semplice
#include <iostream>

using namespace std;


int main()
{
const int size=10;
int array[size]={3,5,3,5,78,12,76,98,32,54};
//sorting
int i,j,min,minat;
for(i=0;i<size-1;i++)
{
minat=i;
min=array[i];

for(j=i+1;j<size;j++) //select the min of the rest of array
{
if(min>array[j]) //ascending order for descending reverse
{
minat=j; //the position of the min element
min=array[j];
}
}
int temp=array[i] ;
array[i]=array[minat]; //swap
array[minat]=temp;


}
for(int i=1;i<=size;i++){
if(array[i-1]==array[i])
continue;
cout<<endl<<array[i-1];
}


}

Dius0
28-04-2008, 18:02
implementazione semplice semplice
#include <iostream>

using namespace std;


int main()
{
const int size=10;
int array[size]={3,5,3,5,78,12,76,98,32,54};
//sorting
int i,j,min,minat;
for(i=0;i<size-1;i++)
{
minat=i;
min=array[i];

for(j=i+1;j<size;j++) //select the min of the rest of array
{
if(min>array[j]) //ascending order for descending reverse
{
minat=j; //the position of the min element
min=array[j];
}
}
int temp=array[i] ;
array[i]=array[minat]; //swap
array[minat]=temp;


}
for(int i=1;i<=size;i++){
if(array[i-1]==array[i])
continue;
cout<<endl<<array[i-1];
}


}





potresti ripostarlo con i commenti in ita magari così lo capisco.

wizard1993
28-04-2008, 18:35
allora
#include <iostream>

using namespace std;


int main()
{
const int size=10;
int array[size]={3,5,3,5,78,12,76,98,32,54};
//ordinamento con selection sort, molto basilare e molto inefficente,
int i,j,min,minat;
for(i=0;i<size-1;i++)
{
minat=i;
min=array[i];

for(j=i+1;j<size;j++) //cicla per trovare il valore minimo seleziona il valore minimo
{
if(min>array[j]) //seleziona il valore minimo
{
minat=j; //posizione del valore minimo
min=array[j];
}
}
int temp=array[i] ;
array[i]=array[minat]; //scambio
array[minat]=temp;


}
for(int i=1;i<=size;i++){ //visualizza i valori
if(array[i-1]==array[i]) //se due valori consecutivi sono uguali il ciclo salta
continue;
cout<<endl<<array[i-1];
}

linki per la spiegazione del selection sort
http://it.wikipedia.org/wiki/Selection_sort

Dius0
28-04-2008, 18:48
grazie