Oppure

Loading
18/11/08 14:28
morpheus
salve avrei da kiedervi qlksina. diciamo ke sn alle prime armi kn la programmazione in C e h da fare il seguente problema: si chiede all'utente di inserire 20 n interi. il programma deve copiare il vettore principale in uno sekondario. si ordini il principale in ordine crescente e il sekondario in qllo decrescente . si kiede poi la media dei valori ineriti. Qualkuno mi sa dare una mano xk nn riesco a kapire?? le mie konoscenze sono controlli(if) e cicli for. qlkn mi da una mano x poterlo fare solo in C? grazie
aaa
18/11/08 19:26
Overflow
dovresti iniziare a scrivere il codice anche tu. Non puoi pensare di venire qua e trovare qualcuno che ti scriva il codice.

Comunque il codice potrebbe essere cosi:
#include <stdio.h>
#define MAX 10


void sort_dec(int * num);
void sort_asc(int * num);
void swap(int *a,int *b);
double get_medium_val(int * num);
void print(int * num);

int main()
{
	int n=10,i=0;
	int num[MAX], num_s[MAX];

	printf("Inserisci %d numeri\n",MAX);
	do
	{
		/*salvo i numeri che inserisce l'utente negli array*/
		scanf("%d",&num[i]);
		num_s[i]=num[i++];
	}
	while(--n > 0);
	
	sort_dec(num);	/*ordino in modo decrescente l'array num*/
	sort_asc(num_s); /*ordino in modo crescente l'array num_s*/
	printf("%s\n","I valori in ordine decrescente:");
	print(num);	/*stampo i valori di num*/
	printf("%s\n","I valori in ordine crescente:");
	print(num_s); /*stampo i valori di num_s*/
	printf("Il valore medio e' %2.3f ",get_medium_val(num));/*stampo il valore medio con le opportune cifre decimali*/

	return 0;
}

void sort_dec(int * num)
{
	/*ordinamento decrescente*/
	for(int i=0;i<MAX;i++)
		for(int j=i+1;j<MAX;j++)
			if(num[j]>num[i])
				swap(&num[i],&num[j]);
}

void sort_asc(int * num)
{
	/*ordinamento crescente*/
	for(int i=0;i<MAX;i++)
		for(int j=i+1;j<MAX;j++)
			if(num[j]<num[i])
				swap(&num[i],&num[j]);
}

void swap(int *a,int *b)
{
	/*inverte il valore di due variabili*/
	int tmp = *b;
	*b = *a;
	*a = tmp;
}

double get_medium_val(int * num)
{
	/*ritorna il valore medio di tutti i valori di num*/
	double somma=0;
	for(int i=0;i<MAX;i++)
		somma += num[i];
	return somma/MAX;
}
void print(int * num)
{
	/*stampa tutti i valori di num*/
	for(int i=0;i<MAX;i++)
		printf("%d\t ",num[i]);
}

Ma prova a scrivere un codice tuo e a postarlo. Chiedi quando hai difficoltà e non sai andare avanti, ma non cercare la pappa pronta venendo qui.
aaa