8
1 #include<stdio.h> 2 3 int main(void) { 4 int dia, mes, any; 5 printf("Doneu dia/mes/any?" ); 6 scanf("%d/%d/%d", &dia, &mes, &any); 7 8 switch  (mes) { 9 case 1: 10 case 3: 11 case 5: 12 case 7: 13 case 8: 14 case 10: 15 case 12: 16 if  (dia  >= 1  && dia  <= 31) 17 printf("Data correcta\n"); 18 else 19 printf("Data incorrecta\n" ); 20 break; 21 case 4: 22 case 6: 23 case 9: 24 case 11: 25 if  (dia  >= 1  && dia  <= 30) 26 printf("Data correcta\n"); 27 else 28 printf("Data incorrecta\n" ); 29 break; 30 case 2: 31 if  ((dia  >= 1  && dia  <= 28) || 32 (dia  == 29  && (any  % 400  == 0  || (any  % 4  == 0  && any  % 100  != 0)))) 33 printf("Data correcta\n"); 34 else 35 printf("Data incorrecta\n" ); 36 break; 37 default: 38 printf("Data incorrecta\n" ); 39 } 40 return 0; 41 } 42

exemples_tarda.pdf

Embed Size (px)

Citation preview

Page 1: exemples_tarda.pdf

7/25/2019 exemples_tarda.pdf

http://slidepdf.com/reader/full/exemplestardapdf 1/8

1 #include<stdio.h>

2

3 int main(void) {4 int dia, mes, any;5 printf("Doneu dia/mes/any?");6 scanf("%d/%d/%d", &dia, &mes, &any);7

8 switch   (mes) {9 case 1:

10 case 3:11 case 5:12 case 7:13 case 8:14 case 10:15 case 12:16 if   (dia   >= 1   && dia   <= 31)17 printf("Data correcta\n");18 else19 printf("Data incorrecta\n");20 break;21 case 4:22 case 6:23 case 9:24 case 11:25 if   (dia   >= 1   && dia   <= 30)26 printf("Data correcta\n");27 else28 printf("Data incorrecta\n");29 break;30 case 2:31 if   ((dia   >= 1   && dia   <= 28) ||32 (dia   == 29   && (any   % 400   == 0   || (any   % 4   == 0   && any   % 100   != 0))))

33 printf("Data correcta\n");34 else35 printf("Data incorrecta\n");36 break;37 default:38 printf("Data incorrecta\n");39 }40 return 0;41 }42

Page 2: exemples_tarda.pdf

7/25/2019 exemples_tarda.pdf

http://slidepdf.com/reader/full/exemplestardapdf 2/8

1 /*

2 Llegir dos nombres enters a i b per teclat (poden ser negatius) i trobar el resultat de

3 realitzar la seva multiplicacio a partir de sumes. Es a dir:

4 a * b = a + a + a + ... + a (a sumat b vegades)

5 */

6 #include <stdio.h>

7 int main(void) {

8 int a, b, i;

9 long mult;

1011 printf("Calcul del producte d'enters a partir de sumes\n");

12 printf("----------------------------------------------\n");

13

14 printf("Introdueix el primer nombre : ");

15 scanf("%d", &a);

16 printf("Introdueix el segon nombre : ");

17 scanf("%d", &b);

18

19 /* Podem optimitzar el codi si ara afegim les seguents linies, que intercanviaran

20 * els valors de a i b si a < b. D'aquesta manera sumarem a cops b, en lloc de b cops a.

21 * Cal haver declarat previament una variable 'aux' de tipus 'int'.

22 *

23 * if (a < b) {

24 * aux = a;

25 * a = b;

26 * b = aux;

27 * }

28 */

29

30 /* Calcul del producte a partir de sumes, tenint en compte que 'b' pot ser negatiu. */

31 mult   = 0;

32 if   (b   >= 0)

33 for   (i   = 1; i   <= b; i++)34 mult   += a;

35 else

36 for   (i   = 1; i   <= -b; i++)

37 mult   -= a;

38

39 /* Una altre manera d'haver tingut en compte que b podia ser negatiu era calcular

40 * la multiplicacio de la seguent manera. Ull caldra #include <stdlib.h> per la funcio abs()

41 *

42 * mult = 0;

43 * for (i = 1; i < abs(b); i++)

44 * mult += a;

45 * if (b < 0)

46 * mult = -mult;

47 *

48 * ! Una altre manera d'haver tingut en compte que b podia ser negatiu era calcular aixi

49 *

50 * mult = 0;

51 * if (b < 0) {

52 * a = -a;

53 * b = -b;

54 * }

55 * for (i=1;i<b;i++)

56 * mult += a;57 */

58 /* Donem el resultat */

59 printf("El producte de %d per %d es %ld\n", a, b, mult);

60 return 0;

61 }

Page 3: exemples_tarda.pdf

7/25/2019 exemples_tarda.pdf

http://slidepdf.com/reader/full/exemplestardapdf 3/8

1 /* suma una serie alternada2 * 1 -1/5 + 1/8 - 1/13 ..... 1/(4*i-3)3 * Val pi*sqrt(2)/8+sqrt(2)*log(1+sqrt(2))/4 ~ 0.866972987...4 */5 #include<stdio.h>6

7 int main(void) {8 double sum=0., sumR=0., t=1.;9 int i=1, s=1, n=0;10

11 printf("entra n (parell)?");12 scanf("%d",&n);13

14 for(i=1; i< n; i++) {15 t   = 1./(4.*i-3.);16 sum   += s*t;17 s   = -s;18 }19

20 s   = -s;21 for(i=n-1; i>0; i--) {22 t   = 1./(4.*i-3.);23 sumR   += s*t;

24 s   = -s;25 }26

27 printf(" suma = %.14e\n",sum);28 printf(" suma = %.14e\n",sumR);29 return 0;30 }31

Page 4: exemples_tarda.pdf

7/25/2019 exemples_tarda.pdf

http://slidepdf.com/reader/full/exemplestardapdf 4/8

1 /*

2 * Donat un n natural calcular quants primers hi ha <=n

3 * Algorisme cutre provant dividir per tots els senars

4 */

5

6 #include<stdio.h>

7 #include<time.h>

8

9 int main(void) {

10 int n, k, j, tot   = 1; /* Comptem el 2, ja que nomes treballarem amb els senars */11 float t;

12 do   {

13 printf("n>0?");

14 scanf("%d", &n);

15 }   while   (n   < 2);

16

17 t   = (float) clock() / CLOCKS_PER_SEC; /* Temps actual en segons */

18

19 for   (k   = 3; k   <= n; k   += 2) {

20 j   = 3;

21 while   (j   < k   && k   % j   != 0)

22 j   += 2;

23 if   (j   >= k)

24 tot++;

25 }

26 printf(" n= %d\n", n);

27 printf(" quantitat de primers= %d\n", tot);

28 printf(" temps = %.2f segs\n", (float) clock() / CLOCKS_PER_SEC   - t);

29 return 0;

30 }

31

Page 5: exemples_tarda.pdf

7/25/2019 exemples_tarda.pdf

http://slidepdf.com/reader/full/exemplestardapdf 5/8

1 /*2 * Llegir quantitat indeterminada de notes (real entre 0 i 10)3 * Quants llegits, quants aprovat (>=5), mitjana, maxim i minim4 */56 #include<stdio.h>78 int main(void) {9 int tot   = 0, apr   = 0;

10 float x, max   = 0., min   = 10., sum   = 0.;

1112 scanf("%f", &x);13 if   (0   <= x   && x   <= 10) {14 tot   = 1;15 sum   = max   = min   = x;16 scanf("%f", &x);17 }18 while   (0   <= x   && x   <= 10) {19 tot++;20 sum   += x;21 if   (x   > max) {22 max   = x;23 }   else if   (x   < min) {

24 min   = x;25 }26 if   (x   >= 5) {27 apr++;28 }29 scanf("%f", &x);30 }31 if   (tot   == 0) {32 printf("No hi ha dades\n");33 }   else   {34 printf(" %d notes llegides\n", tot);35 printf(" %d aprovats\n", apr);36 printf(" mitjana = %.2f\n", sum   / tot);

37 printf(" nota max = %.2f\n", max);38 printf(" nota min = %.2f\n", min);39 }40 return 0;41 }42

Page 6: exemples_tarda.pdf

7/25/2019 exemples_tarda.pdf

http://slidepdf.com/reader/full/exemplestardapdf 6/8

1 /* iteracio.c */2 /* sigui f(n)= n/2 (si n parell)3 * 3n+1 (si n senar)4 * per cada n=1,2,...,50, s'itera la funcio fins que s'arriba a 45 * cal escriure6 * quants iterats cal fer per a arribar al valor 47 * el maxim que s'assoleix8 */9 #include <stdio.h>

10

11 int main(void) {12 int n, max, k, num;1314 for   (num   = 1; num   <= 50; num++) {15 n   = num;16 k   = 0;17 max   = n;18 while   (n   != 4) {19 if   (n   % 2   == 0) {20 n   = n   / 2;21 }   else   {22 n   = 3   * n   + 1;23 }

24 /* n = ( n%2 == 0? n/2: 3*n+1); */25 k++;26 if   (n   > max) {27 max   = n;28 }29 }30 printf(" n = %2d, k = %3d, maxim = %4d \n", num, k, max);31 }3233 return 0;34 }35

Page 7: exemples_tarda.pdf

7/25/2019 exemples_tarda.pdf

http://slidepdf.com/reader/full/exemplestardapdf 7/8

1 /* Calcul d'arrels quadrades usant metode de Newton */

2

3 #include<stdio.h>

4 #include<math.h> /* al crear executable cal posar -lm */

5 #define PREC 1e-10

6 #define N 50

7

8 int main(void) {

9 int k   = 0, signe   = 1;

10 double a, x, y;11 printf("valor real?\n");

12 scanf("%lg", &a);

13 printf(" a=%g\n", a);

14

15 if   (a   < 0) {

16 signe   = -1;

17 a   = -a;

18 }

19

20 x   = (1   + a) / 2;

21 printf(" k=%3d x=%23.16e\n", 0, x);

22 do   {

23 k++;

24 y   = x;

25 x   = 0.5   * (y   + a   / y);

26 printf(" k=%3d x=%23.16e\n", k, x);

27 }   while   (k   <= N   && (fabs(x   * x   - a) > PREC   && fabs(y   - x) > PREC));

28

29 if   (k   > N) {

30 printf("no hi ha hagut convergencia en %d iteracions\n", N);

31 printf(" |df|= %e, |dx|=%e, k=%d\n", fabs(x   * x   - a), fabs(y   - x), k);

32 }   else   {

33 if   (signe   > 0) {34 printf("arrel=%27.20e\n", x);

35 printf("sqrt =%27.20e\n", sqrt(a));

36 }   else   {

37 printf("arrel=%27.20e *i\n", x);

38 printf("sqrt =%27.20e *i\n", sqrt(a));

39 }

40 }

41 return 0;

42 }

43

Page 8: exemples_tarda.pdf

7/25/2019 exemples_tarda.pdf

http://slidepdf.com/reader/full/exemplestardapdf 8/8

12 /* Calcul del sinus usant Taylor amb precisio PREC3 * 1) sense reduir x, nomes fent canvi de signe si cal4 * 2) reduint x a [0,pi/2] */56 #include<stdio.h>7 #include<math.h>8 #define PREC 1e-109 #define MPI 3.14159265358979323846 /* pi */

10 #define MPI2 1.57079632679489661923 /* pi/2 */

1112 int main(void){13 int s=1,den=1;14 double x, sum=0., term;15 printf("x=?(en radians)\n");16 scanf("%le",&x);17 printf   ("x=%e\n",x);18 if   (x<0) {19 x=-x;20 s=-1;21 }22 /* metode 1 */23

24 term   =x;25 while   (fabs(term) > PREC   ) {26 sum   += term;27 den   +=2;28 term*= -(x*x)/(den*(den-1));29 }30 sum   *= s;3132 printf   ("sense reduccio\n");33 printf   (" %20s %20s %16s %16s\n","sinus de math.h","Taylor","dif","sumands");34 printf   (" %23.16e %23.16e %16.7e %6d\n\n",s*sin(x),sum,s*sin(x)-sum,(den+1)/2);3536 /* metode 2 */

37 while   (x>MPI) x-= 2*MPI;38 if   (x>MPI2) x=MPI-x;39 sum=0;40 den=1;41 term=x;42 while   (fabs(term) > PREC   ) {43 sum   += term;44 den   +=2;45 term*= -(x*x)/(den*(den-1));46 }47 sum   *= s;4849 printf   ("amb reduccio\n");50 printf   (" %20s %20s %16s %16s\n","sinus de math.h","Taylor","dif","sumands");51 printf   (" %23.16e %23.16e %16.7e %6d\n\n",s*sin(x),sum,s*sin(x)-sum,(den+1)/2);5253 return 0;54 }55