Usuari:Jordibaucells/C/C++
Aparença
Exercicis (estructures de control)
[modifica]Exercici 1
[modifica]/* * Demana dos nombres "a i b" i indica si la seva suma es N-P o zero. */ #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int a; int b; int r; printf("Introdueix dos números i diré si es N-P/O\n\n"); scanf("%d %d", &a, &b); r=a+b; if ((r>0) || (r=0)) { printf ("\nEl número és positiu o 0\n\n"); } else printf ("\nEl número es negatiu\n\n"); return (EXIT_SUCCESS); }
Exercici 2
[modifica]/* * Algosisme que digui si un any es bixest. Per a saber-ho utilitzem la següent * regla: Un any es bixest si és divideix per 400, o bé si és divisible per 4 * però no per 100. */ #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int any; printf("Introdueix un any\n\n"); scanf("%f", any); if ((any % 400==0) || (any % 4==0 && any % 100==0)) { printf ("\nL'any es bixest\n\n"); } else printf ("\nL'any no és bixest\n\n"); return (EXIT_SUCCESS); }
Exercici 6
[modifica]/* * Escriviu un programa que llegeixi un enter i digui si és negatiu, positiu o zero. */ #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int a; printf("Introdueix un número\n\n"); scanf("%d", &a); if(a==0){ printf("El número és 0\n\n"); } else if(a<0){ printf("El número es negatiu\n\n"); } else printf("El número positiu\n\n"); return (EXIT_SUCCESS); }
Exercici 7
[modifica]/* * Escriviu un programa que demani el número d'un mes (1 a 12) i visualitzi * el nombre de dies del mes (sense considerar si és bixest). */ #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int a; printf("Introdueix un mes\n\n"); scanf("%d", &a); if((a==1) || (a==3) || (a==5) || (a==7) || (a==8) || (a==10) || (a==11)){ printf("El mes té 31 dies\n\n"); } else if((a==4) || (a==6) || (a==9) || (a==11)){ printf("El mes té 30 dies\n\n"); } else printf("El mes té 28 dies\n\n"); return (EXIT_SUCCESS); }
Exercici 8
[modifica]/* * Escriviu un programa que simuli una calculadora simple. Llegeix dos enters * i un caràcter. Si el caràcter és un +, s'imprimeix la suma; si és un -, * s'imprimeix la diferència; si és un *, s'imprimeix el producte; si és un /, * s'imprimeix el quocient; i si és un % s'imprimeix el residu. */ #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int a; char car; int b; printf("\nIntrodueix una operació\n\n"); scanf("%d %c %d", &a,&car,&b); if(car=='*'){ printf("\nEl resultat d'aquesta multiplicació és %d\n\n",a*b); } else if(car=='/'){ printf("\nEl resultat d'aquesta divisió és %d\n\n",a/b); } else if(car=='+'){ printf("\nEl resultat d'aquesta suma és %d\n\n",a+b); } else if(car=='-'){ printf("\nEl resultat d'aquesta resta és %d\n\n",a-b); } else if(car=='%'){ printf("\nEl residu d'aquesta divisió és %d\n\n",a%b); } else if((car!='*') || (car!='/') || (car!='+') || (car!='-') || (car!='%')){ printf("\nOperació incorrecta\n\n"); } return (EXIT_SUCCESS); }
Exercici 20
[modifica]/* * Escriviu un programa que llegeixi dos enters dintre de dues variables, intercanviï els valors de * les dues variables mitjançant sentències d'assignació, i a continuació mostri el resultat. */ #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int x; int y; int z; printf("Introdueix dos números\n\n"); scanf("%d %d", &x, &y); z=x; x=y; y=z; printf("\nEl resultat es %d i %d.\n\n",x,y); return (EXIT_SUCCESS); }
Exercici 32
[modifica]/* * Escriviu un programa que desglossi certa quantitat de segons introduïda * per teclat en el seu equivalent en setmanes, dies, hores, minuts i segons. */ #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int segons; int setmanes; int dies; int hores; int minuts; printf("Introdueix els segons\n\n"); scanf("%d", &segons); minuts=60; hores=60*60; dies=3600*24; setmanes=3600*24*7; printf("\nLes setmanes són: %d.",segons/setmanes); segons=segons%setmanes; printf("\nEls dies són: %d.",segons/dies); segons=segons%dies; printf("\nLes hores són: %d.",segons/hores); segons=segons%hores; printf("\nEls minuts són: %d.",segons/minuts); segons=segons%minuts; printf("\nEls segons són: %d.\n\n",segons); return (EXIT_SUCCESS); }
Exercicis (vectors)
[modifica]Exercici 3
[modifica]/* * 3. Feu un programa que: * * a) Creï un vector de 10 elements de tipus enter i el carregui amb les * dades que entri l'usuari. * b) Mostri en pantalla cada element del vector junt amb el seu quadrat * i el seu cub. */ #include <stdio.h> #include <stdlib.h> #include <math.h> #define DIM 10 int main() { int v[DIM]; int i; for (i=0;i<DIM;i++){ printf("Introdueix el valor de l'element %d del vector: " ,i+1); scanf("%d", &v[i]); printf("El valor introduït és: %d, el quadrat és: %d i el cub és: %d\n\n ", v[i], v[i]*v[i], v[i]*v[i]*v[i]); } return (EXIT_SUCCESS); }
Exercici 4(1)
[modifica]/* * 4. Es vol implementar un programa que simuli el llançament d'un dau 100 vegades. * El programa ha de comptar quantes vegades ha sortit cada número del dau. * Per a realitzar la simulació heu de generar una seqüència de números * aleatoris mitjançant la funció random(). A més, al començament del programa * s'ha d'inicialitzar aquesta seqüència cridant a la funció randomize(). */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> int main() { int num, i; int cont1; int cont2; int cont3; int cont4; int cont5; int cont6; cont1=0; cont2=0; cont3=0; cont4=0; cont5=0; cont6=0; srandom(time(0)); for (i=1;i<101;i++){ num=random()%6+1; if(num==1) cont1++; if(num==2) cont2++; if(num==3) cont3++; if(num==4) cont4++; if(num==5) cont5++; if(num==6) cont6++; } printf("\nEl numero 1 ha sortit %d vegades", cont1); printf("\nEl numero 2 ha sortit %d vegades", cont2); printf("\nEl numero 3 ha sortit %d vegades", cont3); printf("\nEl numero 4 ha sortit %d vegades", cont4); printf("\nEl numero 5 ha sortit %d vegades", cont5); printf("\nEl numero 6 ha sortit %d vegades\n\n", cont6); return (EXIT_SUCCESS); }
Exercici 4(2)
[modifica]/* * 4. Es vol implementar un programa que simuli el llançament d'un dau 100 vegades. * El programa ha de comptar quantes vegades ha sortit cada número del dau. * Per a realitzar la simulació heu de generar una seqüència de números * aleatoris mitjançant la funció random(). AMB VECTORS. */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #define DIM 100 /*Per a que el màxim sigue 100*/ int main() { int i; int v[6]={0}; /*Li diem que el dau té 6 cares, i l'inicialitzem a 0 a totes les cares*/ srandom(time(0)); for (i=1;i<101;i++) /*Inicialitzem en 1, li diem que no sigui mes gran que 100 i l'anem incrementant*/ { v[random()%6]++; /*Les cares del dau*/ } printf("\n\tEl numero 1 ha sortit %d vegades", v[0]); printf("\n\tEl numero 2 ha sortit %d vegades", v[1]); printf("\n\tEl numero 3 ha sortit %d vegades", v[2]); printf("\n\tEl numero 4 ha sortit %d vegades", v[3]); printf("\n\tEl numero 5 ha sortit %d vegades", v[4]); printf("\n\tEl numero 6 ha sortit %d vegades\n\n", v[5]); return (EXIT_SUCCESS); }
Exercici 5
[modifica]/* * 5.- Creï un vector de 15 elements de tipus enter i el carregui amb valors * aleatoris (funció random()). Calculi la suma i la mitjana dels N primers * elements del vector. El valor de N es demanarà a l'usuari i no podrà ser * major de 15. Mostri els resultats obtinguts, així com el contingut del vector. * * 6. Afegeix al programa anterior una funció que mostri tots aquells elements * majors que 30 junt amb la posició que ocupen en el vector. Si no hi ha cap * ha de mostrar el següent missatge: "No hi ha nombres majors que 30". */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #define DIM 15 int main() { int i; int v[DIM]={0}; int n; int suma=0; int xivato=0; srandom(time(0)); /**/ for (i=0;i<DIM;i++) /*Omplim el vector de valors aleatoris*/ { v[i]=random()%100; } printf("\n\tEscriu un valor comprés entre 1 i 15: "); /*Demanem quants llocs del vector volem calcular*/ scanf("%d", &n); /*Llegim el valor*/ if(n<15 && n>0){ /*Li diem que el número ha d'estar entre 0 i 15, si nó es així, surt del programa*/ for(i=0;i<n;i++)/*Li diem que recorri un per un els valors del vectors i que els guarde a suma*/ { suma=v[i]+suma; } printf("\t\n\nEl resultat de la suma segons els valors aleatoris del vector és: %d\n", suma); printf("\t\nEl resultat de la mitjana segons els valors aleatoris del vector és: %g\n\n", (float)suma/n); /*Li diem que solament la operació sigui en decimals*/ for(i=0;i<n;i++) { printf("\t\nEl contingut del vector era: %d\n", v[i]); /*Li diem que recorri tots els valors del vector i els mostri*/ if(v[i]>=30){ printf("%d és més gran que 30", v[i]); xivato=1; } } if(xivato==0) printf("\n\tNo hi ha números majors que 30!!\n"); } else printf("\n\t\t¡¡ HE DIT ENTRE 0 I 15 !!\n\n"); return (EXIT_SUCCESS); }
Exercicis (cadenes)
[modifica]Exercici 3
[modifica]/* * 3. Escriviu un programa que llegeixi una paraula i calculi la seva longitud. */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <unistd.h> #include <termios.h> int main() { char cadena[100]; int i; printf("Escriu una paraula: "); scanf("%s", &cadena); for(i=0;cadena[i]!=0;i++){ } printf("\n\tLa seva longitud és de %d.\n\n", i); return (EXIT_SUCCESS); }
Exercici 4
[modifica]/* * 4. Escriviu un programa que llegeixi una frase (formada per diverses * paraules) i calculi la seva longitud. */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <unistd.h> #include <termios.h> int main() { char cadena[100]; int i; printf("Escriu un frase: "); gets(cadena); for(i=0;cadena[i]!=0;i++){ } printf("\n\tLa seva longitud és de %d.\n\n", i); return (EXIT_SUCCESS); }
Exercici 5
[modifica]/* * 5. Escriviu un programa que llegeixi un text (format per diverses línies) * i calculi la seva longitud. */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <unistd.h> #include <termios.h> #define LONG 100 int mygetchar(void); int main() { char text[LONG]; int car,i=0; printf("Introdueix línies de text (punt per finalitzar): "); while(i<LONG-1 && (car=mygetchar())!='.') { text[i]=car; i++; } text[i]=0; printf("\n\n La longitud de la cadena és %d\n\n", i); return (EXIT_SUCCESS); } int mygetchar(void) { struct termios oldt, newt; int ch; tcgetattr( STDIN_FILENO, &oldt ); newt = oldt; newt.c_lflag &= ~( ICANON | ECHO ); tcsetattr( STDIN_FILENO, TCSANOW, &newt ); ch = getchar(); tcsetattr( STDIN_FILENO, TCSANOW, &oldt ); printf("%c",ch); return ch; }
Exercici 6
[modifica]/* * 6. Realitzeu un programa que llegeixi una frase i transformi les lletres * majúscules a minúscules i viceversa. */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <unistd.h> #include <termios.h> #include <ctype.h> int main() { char cadena[100]; int i; printf("Escriu un frase: "); gets(cadena); for(i=0;cadena[i]!=0;i++){ /*Passar de majúscules a minúscules*/ if(cadena[i]>='A' && cadena[i]<='Z') cadena[i] = tolower(cadena[i]); /*Passar de minúscules a majúscules*/ else if(cadena[i]>='a' && cadena[i]<='z') cadena[i] = toupper(cadena[i]); } printf("\n\t%s\n\n", cadena); return (EXIT_SUCCESS); }
Exercici 7
[modifica]/* * 7. Realitzeu un programa que demani una frase i l'escrigui al revés. */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <unistd.h> #include <termios.h> #include <ctype.h> #include <string.h> int main(void){ int i; char cadena[400]; char invertir[400]; printf("Escriu una cadena: "); gets(cadena); //strlen és una funció de cadena que determina la longitud d'una cadena de caràcters. for(i=0; i<strlen(cadena); i++) invertir[i] = cadena[strlen(cadena)-i-1]; invertir[i] = '\0'; printf("\t\n%s", invertir); getchar(); return EXIT_SUCCESS; }
Exercici 8
[modifica]/* * 8. Realitzeu un programa que demani frases fins que s'introdueixi la * frase "fi". */ #include <stdio.h> #include <stdlib.h> int main() { int i; char car; char frase[100]; char a=0; printf ("Ecriu frases (fi) per a finalitzar.\n"); for (i=0;i<99 && a==0 && (car=getchar());i++) { frase[i]=car; if ((frase[i-3]==' ' ||frase[i-3]=='\n') && frase[i-2]=='f' && frase[i-1]=='i' && frase[i]=='\n') a=1; } return (EXIT_SUCCESS); }
Exercici 9(1)
[modifica]/* * 9. Realitzeu un programa que demani tres frases i les concateni per a * formar una quarta. */ #include <stdio.h> #include <stdlib.h> int main() { int i; char cadena1[100]; char cadena2[100]; char cadena3[100]; /* * 1ra frase */ printf ("Ecriu la primera frase: "); gets(cadena1); for(i=0;cadena1[i]!=0;i++){ } /* * 2na frase */ printf ("Ecriu la segona frase: "); gets(cadena2); for(i=0;cadena2[i]!=0;i++){ } /* * 3ra frase */ printf ("Ecriu la tercera frase: "); gets(cadena3); for(i=0;cadena3[i]!=0;i++){ } /* * Mostrem el resultat */ printf("--------------------------------------------------"); printf("\n\t%s %s %s\n\n",cadena1, cadena2, cadena3); return (EXIT_SUCCESS); }
Exercici 9(2)
[modifica]/* * 9. Realitzeu un programa que demani tres frases i les concateni per a * formar una quarta. */ #include <stdio.h> #include <stdlib.h> int main() { int i,j=0; char cadena1[100]; char cadena2[300]; /* * 1ra frase */ printf ("Ecriu la primera frase: "); gets(cadena1); for(i=0;cadena1[i]!=0;i++){ cadena2[j++]=cadena1[i]; } /* * 2na frase */ printf ("Ecriu la segona frase: "); gets(cadena1); for(i=0;cadena1[i]!=0;i++){ cadena2[j++]=cadena1[i]; } /* * 3ra frase */ printf ("Ecriu la tercera frase: "); gets(cadena1); for(i=0;cadena1[i]!=0;i++){ cadena2[j++]=cadena1[i]; } cadena2[j]=0; /* * Mostrem el resultat */ printf("--------------------------------------------------"); printf("\n\t%s\n\n",cadena2); return (EXIT_SUCCESS); }
Altres Exercicis
[modifica]Exercici 1
[modifica]/* * La base del triangle donada per l'usuari */ #include <stdio.h> #include <stdlib.h> int main() { int a; int b; printf("Introdueix els dos costats del triangle separats per un espai.\n\n"); scanf("%d %d", &a, &b); printf("\nLa base d'aquest triangle amb els costats de %dcm i %dcm val %dcm2.\n\n", a,b,a*b/2); return (EXIT_SUCCESS); }
Exercici 2
[modifica]/* * Exercici 12(a) dels apunts */ #include <stdio.h> #include <stdlib.h> int main() { int x; int y; printf("Introdueix dos números\n\n"); scanf("%d %d", &x, &y); printf("\nEl resultat de %d i %d és %d.\n\n", x,y, x/y+1); return (EXIT_SUCCESS); }
Exercici 3
[modifica]/* * Exercici 12(b) dels apunts */ #include <stdio.h> #include <stdlib.h> int main() { int x; int y; printf("Introdueix dos números\n\n"); scanf("%d %d", &x, &y); printf("\nEl resultat de %d i %d és %d.\n\n", x,y, (x+y)/(x-y)); return (EXIT_SUCCESS); }
Exercici 4
[modifica]/* * Exercici 12(c) dels apunts */ #include <stdio.h> #include <stdlib.h> int main() { int x; int y; printf("Introdueix dos números\n\n"); scanf("%d %d", &x, &y); printf("\nEl resultat de %d i %d és %d.\n\n", x,y, (x+y/z)/(x+y/z)); return (EXIT_SUCCESS); }
Exercici 5
[modifica]/* * Exercici 12(d) dels apunts */ #include <stdio.h> #include <stdlib.h> int main() { int x; int y; int z; printf("Introdueix tres números\n\n"); scanf("%d %d %d", &x, &y, &z); printf("\nEl resultat de %d, %d i %d és %d.\n\n", x,y,z, x/(y+z)); return (EXIT_SUCCESS); }
Exercici 6
[modifica]/* * Exercici 12(e) dels apunts */ #include <stdio.h> #include <stdlib.h> int main() { int x; int y; int z; int w; printf("Introdueix quatre números\n\n"); scanf("%d %d %d %d", &x, &y, &z, &w); printf("\nEl resultat de %d, %d, %d i %d és %d.\n\n", x,y,z,w, (x+y)*(z/w)); return (EXIT_SUCCESS); }
Exercici 7
[modifica]/* * Exercici 12(f) dels apunts */ #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int x; int y; printf("Introdueix dos números\n\n"); scanf("%d %d", &x, &y); printf("\nEl resultat de %d mes %d elevat a 2 és %f.\n\n", x,y, pow (pow(x+y,2),2); return (EXIT_SUCCESS); }