Controllo programma per esame

di il
7 risposte

Controllo programma per esame

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;
}

7 Risposte

  • Re: Controllo programma per esame

    Questa parte

    solo se è maggiore del valore contenuto nel parametro c

    dove sta nel tuo codice?
  • Re: Controllo programma per esame

    Hai ragione,c'è un errore di battitura ora correggo subito.
    if(a>c && i%2==0)
  • Re: Controllo programma per esame

    Questa linea

    i=i+2;

    è inserita nel blocco if ... altro errore di battitura?
  • Re: Controllo programma per esame

    Quello no..ora correggo.
    Scusate ma sono ancora alle prime armi
  • Re: Controllo programma per esame

    Se il ciclo si incrementa di 2 passi per volta, questa

    && i%2==0

    non è necessaria.

    Inoltre la variabile cont non serve ... ti basta scrivere

    *b = *b +1;

    quando serve (ovviamente va azzerata all'inizio con *b=0)

    Infine non servono due variabili (z e j) per lo scambio ma una sola.
  • Re: Controllo programma per esame

    Ok..grazie mille! Allora adesso la riscrivo correttamente.
  • Re: Controllo programma per esame

    Potresti usare una for al posto della while ...

    E rivedi il main perché l'ultima while non è corretta ...
Devi accedere o registrarti per scrivere nel forum
7 risposte