devo fare un piccolo programma per scuola, dove preso in ingresso un vettore (di dimensione definita dall'utente).. devo, con l'utilizzo dei soli puntatori (quindi no vettori), ordinare il vettore in ordine decrescente e calcolare la frequenza (il numero di volte) che un determinato numero è stato insterito..
io il programma l'ho fatto con i vettori, poi ho provato a convertirlo con i puntatori.. non da errori, quindi lo compila, però la funzione dell'ordinamento decrescente e della frequenza non funzionano..
qualcuno può aiutarmi?
codice:
/*
Ongaro Samuele
*/
#include <stdio.h>
//inserisci i valori nel vettore
int insVett(int *dati,int l){
int i,num;
for(i=0;i<l;i++){
printf("Inserisci un numero %d di %d: ",i+1,l);
scanf("%d",& num);
*dati++=num;
}
}
//visualizza vettore
int visVett(int *dati,int l){
int i;
for(i=0;i<l;i++){
printf(" %d ",*dati);
*dati++;
}
}
//ordina i valori in modo Decrescente (TOGLIERE RIPETIZIONI)
int ordinaVettDec(int *dati,int lung){
int scambio=1,i,app;
while(scambio){
scambio=0;
for(i=0;i<lung-1;i++){
if(*dati<*dati){
app=*dati;
*dati=*dati++;
*dati++=app;
scambio=1;
}
}
}
}
//numero con maggior frequenza (TOGLIERE RIPETIZIONI)
int frequenza(int *dati,int lung){
int i,k,cont=0;
for(i=0;i<lung;i++){
cont=0;
for(k=0;k<lung;k++){
if(dati[i]==dati[k]){
cont++;
}
}
printf("\nIl valore %d e' stato inserito %d volte.",dati[i],cont);
}
}
int main(){
int lung1=0,test=-1,scelta;
//while(lung1<=50){
printf("Inserisci il numero di valori da inserire: ");
scanf("%d",&lung1);
//}
int vett1[lung1];
insVett(vett1,lung1);
while(test!=0){
printf("\n1- Ordine Decrescente;");
printf("\n2- Frequenza;");
printf("\n0- Esci;");
printf("\nScelta: ");
scanf("%d",&scelta);
switch(scelta){
case 1:{
printf("\nOrdine Decrescente:\n");
ordinaVettDec(vett1,lung1);
visVett(vett1,lung1);
printf("\n");
break;
}
case 2:{
frequenza(vett1,lung1);
printf("\n");
break;
}
case 0:{
test=0;
break;
}
}
}
getchar();
}
Grazie mille,