Vai al contenuto

[C]vari esercizi in C


stevemb

Messaggi raccomandati

ci son un paio di esercizi che non so fare e non ne vengo a capo.

dunque:

1.scrivere un programma che richieda all utente 2 numeri positivi N e M(con m maggiore o uguale a n) e calcoli la media dei numeri interi appartenenti all intervallo.

ad esempio se n=20 e M=26,il programma deve calcolare(21+22+23+24+25)/5.

2.scrivere un programma che carichi 2 vettori,entrambi con n elementi(n costante,simbolica predefinita),e ne faccia la somma in un terzo vettore,anch'esso di n elementi.(e fin qui ci sono).Il programma dovrà inoltre determinare massimo e minimo del vettore v3.

3.scrivere un programma che carichi 3 vettori,tutti di n elementi,nel modo seguente:

1°vett: 01010101010101....

2°vett: 0,3,-9,27,-81,243 (insomma:potenza di 3,e posizioni pari positive,posizioni dispari negative)

3°vett: 123123123123...

come azzo si fanno???

(il problema per me è l'algoritmo da dare ai vettori per fargli fare quelle robe li,per visualizzarli,caricarli e tutto il resto lo so fare;))

thanks

Link al commento
Condividi su altri siti

scusa la franchezza,

ma l'algoritmo che ti manca è proprio lo scopo dell'esercizio. A imparare un linguaggio di programmazione sono capaci tutti, ogni linguaggio è simile agli altri. Imparare a programmare invece richiede il saper sviluppare algoritmi e questo non lo sanno fare tutti.

Detto ciò, se tu devi fare degli esercizi è perchè devi imparare, quindi sinceramente non posso darti la soluzione perchè verrebbe meno lo scopo del tuo sbattere la testa.

Non voglio farti la morale, però studia, prova e vedrai che 1. ce la farai 2. ne sarai soddisfatto ma soprattutto imparerai che "programmare" è ben diverso da "usare il computer"

Di nuovo, spero tu non te la prenda per queste parole! ciao

Link al commento
Condividi su altri siti

Soluzione del primo esercizio: se guardi bene l'esempio il numero 5 è dato da 26-20-1.

In più se guardi ancora meglio

21=20+1

22=21+1=20+2

23=22+1=20+3

24=23+1=20+4

25=24+1=20+5

25<26

Io piazzerei un ciclo for da qualche parte :ciao:

Il resto prossimamente.

Dio@paradiso:~$ gcc -o Terra World.cpp

Link al commento
Condividi su altri siti

Soluzione del primo esercizio: se guardi bene l'esempio il numero 5 è dato da 26-20-1.

In più se guardi ancora meglio

21=20+1

22=21+1=20+2

23=22+1=20+3

24=23+1=20+4

25=24+1=20+5

25<26

Io piazzerei un ciclo for da qualche parte :ciao:

Il resto prossimamente.

#include <stdio.h>
#include <stdlib.h>


int media,n1,n2,i;

int main () 
{
printf("inserisci il primo numero\n");
scanf("\t%d",&n1);
printf("inserisci il secondo numero;dev'essere maggiore o uguale al primo!\n");
scanf("\t%d",&n2);
for (i=n1; i<n2; n1++) 
{
	printf("\t%d",n1);
}


}

così mi va in loop a somma continuamente +1,anche se supera n2

Link al commento
Condividi su altri siti

Ok allora soluzione del secondo esercizio.

Facciamo un esempio:

a={0,5,2,3,4,6,1,9,7,8}

Come trovi il massimo tra due numeri?

Prendi il primo numero e lo confronti col secondo, il maggiore dei due lo confronti col terzo, il maggiore dei due lo confronti col quarto e così via.

Quindi

0<5->massimo temporaneo=5

5>2->massimo temporaneo=5

5>4->massimo temporaneo=5

5<6->massimo temporaneo=6

eccetera.

Quando confronti il massimo temporaneo con l'ultimo numero cosa ti trovi? :ciao:

E per il minimo come si fa? ;)

La cosa bella sarebbe scrivere una sola funzione che calcola massimo e minimo contemporaneamente. Ti sfido :D

Dio@paradiso:~$ gcc -o Terra World.cpp

Link al commento
Condividi su altri siti

Terzo esercizio time.

Ti faccio notare due piccole cose:

0 diviso 5 = 0 con resto di 0

1 diviso 5 = 0 con resto di 1

2 diviso 5 = 0 con resto di 2

3 diviso 5 = 0 con resto di 3

4 diviso 5 = 0 con resto di 4

5 diviso 5 = 1 con resto di 0

6 diviso 5 = 1 con resto di 1

7 diviso 5 = 1 con resto di 2

8 diviso 5 = 1 con resto di 3

9 diviso 5 = 1 con resto di 4

10 diviso 5 = 2 con resto di 0

Nota che nel caso di 5 il resto varia da 0 a 4 e sono un totale di 5 numeri.

In oltre

- 9=  3*-3
27=- 9*-3
-81= 27*-3

Dio@paradiso:~$ gcc -o Terra World.cpp

Link al commento
Condividi su altri siti

#include <stdio.h>
#include <stdlib.h>


int somman,diff,n1,n2,i,j,somman,n3[100];
float media;
int main () 
{
1;
printf("inserisci il primo numero\n");
scanf("\t%d",&n1);
printf("inserisci il secondo numero;dev'essere maggiore o uguale al primo!\n");
scanf("\t%d",&n2);
	if (n2<n1) {

	printf("errore\triprova!\n");
	printf("inserisci il primo numero\n");
	scanf("\t%d",&n1);
	printf("inserisci il secondo numero;dev'essere maggiore o uguale al primo!\n");
	scanf("\t%d",&n2);
}

diff=(n2-n1)-1;
for (i=0; i<diff; i++) 
{

	for (n1=n1+1;n1<n2; n1++) 
	{

		printf("\t%d",n1);

	}
	for (j=0; j<diff; j++) 
	{
		n3[j]=n1;
		somman=n3[j++]+n3[j];
		printf("\t\t%d",somman);
	}

		}

printf("\ni numeri in mezzo e'/sono'");
printf("%d",i);	

media=somman/i;
	printf("\n\n\t%f",media);
}

questo è il nuovo codice,solo che la media la calcola sbagliata

Link al commento
Condividi su altri siti

Scusa per il ritardo.

Tu n1 lo aumenti nel primo for, il che significa che se n1 è 3 ed n2 è 6 alla fine del primo for n1sarà n2.

In oltre la parola

somman=n3[j++]+n3[j];

può essere scomposta in:

vedi n3[j]
aumenta j di 1
vedi n3[j] (che sarebbe n3[j+1])
somma i due numeri
piazza la somma in somma n

n3[j+1] non è inzializzato ed ancora nel secondo for non c'è nessun collegamento tra le varie esecuzioni di somman, di conseguenza la somma precedente viene persa.

Dio@paradiso:~$ gcc -o Terra World.cpp

Link al commento
Condividi su altri siti

#include <stdio.h>
#include <stdlib.h>


int somman,diff,n1,n2,i,j,somman,n3[100],somman1,x,n4[100];
float media;
int main () 
{
printf("inserisci il primo numero\n");
scanf("\t%d",&n1);
printf("inserisci il secondo numero;dev'essere maggiore o uguale al primo!\n");
scanf("\t%d",&n2);
	if (n2<n1) 
	{
	printf("errore\triprova!\n\n");
	printf("inserisci il primo numero\n");
	scanf("\t%d",&n1);
	printf("inserisci il secondo numero;dev'essere maggiore o uguale al primo!\n");
	scanf("\t%d",&n2);
	}
diff=(n2-n1)-1;
for (i=0; i<diff; i++) 
	{
		for (n1=n1+1;n1<n2; n1++) 
		{
			printf("%d\t",n1);
				n3[i]=n1;
				somman=somman+n3[i];
		}	
	}
printf("\ni/il numeri dell'intervallo e'/sono'");
printf("%d",i);	
media=somman/i;
printf("\nla media calcolata e'\t%f",media);
}

il primo programma l'ho fatto

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...