Ciao a tutti,potreste dirmi se il programma che ho fatto è giusto?
La richiesta è la seguente:
Descrivere un algoritmo codificato in linguaggio C/C++ che:
1. definisce la funzione ScambiaInVett con parametri:
• a di tipo vettore di 100 int;
• b di tipo puntarore/riferimento ad una variabile di tipo int;
• c di tipo int.
La funzione deve scambiare il valore di ogni elemento di posto pari del vettore con il
successivo (posto dispari) solo se è maggiore del valore contenuto nel parametro c e
deve scrivere nell'area di memoria puntata/riferita da b il numero di scambi effettuati.
2. nella funzione main
I. dichiarare un vettore di nome x 100 numeri interi;
II. inserire 100 valori letti da standard input nel vettore x,
III. ripetere le seguenti operazioni fino a quando viene letto da standard input il
numero zero:
a. leggere un valore da standard input e inserirlo in una variabile di nome
n;
b. eseguire la funzione ScambiaInVett applicata al vettore x e alla
variabile n;
c. se il risultato della funzione è maggiore di zero lo visualizza su standard
output.
Io ho provato a risolverlo cosi:
#include<stdlib.h>
#include<stdio.h>
void scambia(int a[100], int *b, int c){
int i=0; int j; int z; int conta=0; *b=0;
while(i<100){
if(a[i]>c){
z=a[i];
a[i]=a[i+1];
a[i+1]=z;
*b=*b+1;
}i=i+2;
}
}
int main(){
int x[100]; int i=0; int risultato; int n;
while(i<100){ scanf("%d",&x[i]); i++;}
i=0;
scanf("%d",&n);
while(n<=0){
scanf("%d",&n);
scambia(x,&risultato,n);
if(risultato>0){ printf("%d",risultato);}
}
system("PAUSE");
return 0;
}