uf5_4_resum_1

39
Funció PRINTF - Definida en la llibreria <stdio.h> - El prototipus es printf(“.............”); si escrivim printf( "Cadena" ); per pantalla sortirà cadena - El que es posa entre cometes, es el que surt per pantalla. - Seqüències d’ESCAPE \n.......canvi de línia \r........retorn de carro \t.......tabulador \b........retrocedeix un espai \”.......per imprimir “ \’.....per imprimir ‘ \\.........per imprimir \ - Per escriure "extraño" entre cometes, cal fer printf( "Esto es \"extraño\"" ); La contrabarra, permet imprimir caràcters de control pel compilador. Dos contrabarres, imprimeixen una contrabarra. - Determinem la natura i el format de la variable a imprimir amb ESPECIFICADORS %c caràcter %s string %i ó %d sencer decimal amb signe %u sencer decimal sense signe %e ó %E notació científica minúscula o majúscula %f número real en coma flotant %g ó %G el mes curt de e/E o f, minúscula o majúscula %o octal sense signe %x ó %X hexa minúscula o majúscula %p punter %n punter a una variable interna, on es guarden el numero de caràcters escrits fins el moment de trobar la instrucció. Exple: #include <stdio.h> ///int main(void)/// { /// int cuenta; /// printf(“esta%n es una prueba\n”,&cuenta); /// printf (“%d”,cuenta); ///return 0; /// } El resultat es esta es una prueba 4 . %% imprimeix % Si fem : letra = 'A'; // o letra = 65; (que es el codi ASCII de A) printf( "La letra es: %c.", letra ); // si en lloc de %c posem %i, sortirà el valor ASCII El resultat serà: La letra es A. // per %i el resultat : La letra es 65 - Podem modificar el format d’impressió amb els MODIFICADORS Si posem entre % i la lletra del Especificadors un número......... %8d obliguem a una longitud mínima d’impressió. (es per alinear impressió de dades). El que falti s’omple amb espais. Si es vol omplir amb zeros, faríem ....... %08d Si fem %10.4f...obliguem a 10 sencers i 4 decimals (per defecte serien 6) Per %f,%e o %E Si el posem en %g o %G, indica el número de digits significatius. Si fem %5.7s ... el string tindrà al menys 5 caràcters i no més de 7. Si es mes llarga es talla Si fem %.4d .......... el número tindrà 4 xifres, si en falten hi posa zeros ( a l’esquerra) Si posem davant del número un - , l’ajust es fa per l’esquerra ( per defecte es a la dreta) Si posem # davant del numero, en tipus g,G,f,e ó E obliga a punt decimal, encara que no ni hagin. , en tipus x ó X imprimeix el num. hexa amb 0x davant, en octal, imprimeix la o davant. L indica format long i h short (%hu indica short unsigned int), L davant de e,f o g indica long . double Hh es pot aplicar a d,i,o,u,x,n indica signed o unsigned long long int.

Upload: jmar63

Post on 11-Feb-2016

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UF5_4_RESUM_1

Funció PRINTF- Definida en la llibreria <stdio.h>

- El prototipus es printf(“.............”); si escrivim printf( "Cadena" ); per pantalla sortirà cadena

- El que es posa entre cometes, es el que surt per pantalla.

- Seqüències d’ESCAPE \n.......canvi de línia \r........retorn de carro \t.......tabulador \b........retrocedeix un espai \”.......per imprimir “ \’.....per imprimir ‘ \\.........per imprimir \

- Per escriure "extraño" entre cometes, cal fer printf( "Esto es \"extraño\"" );

La contrabarra, permet imprimir caràcters de control pel compilador. Dos contrabarres,

imprimeixen una contrabarra.

- Determinem la natura i el format de la variable a imprimir amb ESPECIFICADORS %c caràcter %s string

%i ó %d sencer decimal amb signe %u sencer decimal sense signe

%e ó %E notació científica minúscula o majúscula

%f número real en coma flotant

%g ó %G el mes curt de e/E o f, minúscula o majúscula

%o octal sense signe %x ó %X hexa minúscula o majúscula

%p punter

%n punter a una variable interna, on es guarden el numero de caràcters escrits finsel moment de trobar la instrucció. Exple: #include <stdio.h> ///int main(void)/// { ///int cuenta; /// printf(“esta%n es una prueba\n”,&cuenta); /// printf (“%d”,cuenta); ///return 0; /// }

El resultat es esta es una prueba 4 .

%% imprimeix %

Si fem :

letra = 'A'; // o letra = 65; (que es el codi ASCII de A)

printf( "La letra es: %c.", letra ); // si en lloc de %c posem %i, sortirà el valor ASCII

El resultat serà: La letra es A. // per %i el resultat : La letra es 65

- Podem modificar el format d’impressió amb els MODIFICADORSSi posem entre % i la lletra del Especificadors un número......... %8d obliguem a una longitud mínima d’impressió. (es per alinear impressió de dades).

El que falti s’omple amb espais.

Si es vol omplir amb zeros, faríem ....... %08d

Si fem %10.4f...obliguem a 10 sencers i 4 decimals (per defecte serien 6) Per %f,%e o %E Si el posem en %g o %G, indica el número de digits significatius.

Si fem %5.7s ... el string tindrà al menys 5 caràcters i no més de 7. Si es mes llarga es tallaSi fem %.4d .......... el número tindrà 4 xifres, si en falten hi posa zeros ( a l’esquerra)Si posem davant del número un - , l’ajust es fa per l’esquerra ( per defecte es a la dreta)Si posem # davant del numero, en tipus g,G,f,e ó E obliga a punt decimal, encara que no

ni hagin.

, en tipus x ó X imprimeix el num. hexa amb 0x davant, en octal, imprimeix la o davant.

L indica format long i h short (%hu indica short unsigned int), L davant de e,f o g indica long . double Hh es pot aplicar a d,i,o,u,x,n indica signed o unsigned long long int.

Page 2: UF5_4_RESUM_1

BORRAR PANTALLA system(“cls”); és inclosa a la llibreria <stdlib.h>

VARIABLES, dades que varien al llarg del programa, cal definir-les. Es defineixen amb noms,lletres o números (una lletra MAJ es diferent a una minúscula).

Exple: x1,, X2,, pepe ,, z1,,z2

CONSTANTS Defineixen una dada que no canvia al llarg del programa (num. π )El prototipus es # define PI 3,1416 , ara podem cridar PI i no 3,1416 (mes fàcil)

Només es declara una per línia i un sol cop.

En majúscula

No porta ; al final

Al ASIGNAR, s’els hi dona un valor. El costat dret es converteix a l’esquerra. Exple: int x = 2;Segons on les declarem, poden ser:

GLOBALS LOCALS (afecten a tot el programa) (només afecten a la funció en que es declaren

i no es poden reutilitzar).

Les variables char, magatzement caràcters, aquests estan codificats del 0 al 255, del 0 al 127 esel ASCII standart, del 128 al 255 depèn del idioma i son caràcters especials ( ASCII estés).

Per declarar una variable char fem : char lletra; només podem magatzemar una lletra, perassignar a lletra una lletra, podem fer lletra = ‘A’; o lletra = 65;

Per imprimir-la, podem utilitzar %c (veure ASCII) o %i (veurem el codi del valor ASCII)

Tipus float : Podem magatzemar números decimals, no sols sencers.

El rang de possibles valors es del 3,4E-38 al 3,4E38.

Declaració d’una variable de tipus float: float numero;

Per imprimir valors float usem %f. float num=4060.80;printf( "El valor de num es : %f", num );

Resultat: El valor de num es: 4060.80

Si volem escriure’l en notació exponencial usem %e:float num = 4060.80;

printf( "El valor de num es: %e", num );

Que dona de resultat: El valor de num es: 4.06080e003

Tipus double : En les variables tipus double es magatzeman números reals del 1,7E-307 al 1,7E308. Es declaren com double: double numero;

Per imprimir s’usen els mateixos modificadores que en float.

Modificador unsigned : (sense signe) inhabilita l’existència de números negatius, per tant al mateix tamany de variable i caben el doble de positius. En char passem de –128 a 127 a 0 fins

255.

Modificador long : Amplia el rang en cada tipus on s’apliqui.

Page 3: UF5_4_RESUM_1

Tipus Identificador 7 explicació Valors Pes Per imprimirSencer Num. sense

decimal

int

short

long

unsigned

unsigned short

unsigned long

del –2.147.483.648 al 2.147.483.647

del –32767 al 32767

del –2.147.483.648 al 2.147.483.647

0 al 4.294.967.295

0 al 65.535

0 al 4.294.967.295

32 bits o 4 byts

16 bits o 2 byts

32 bits o 4 byts

32 bits o 4 byts

16 bits o 2 bytes

32 bits o 4 byts

%i ,, %d ,, %u

Caràcter Caràcters ASCII (es guarden com

Números)

del 0 al 127 ASCII standart

del 128 al 255 ASCII extès

char Exple: char lletra;

Lletra =’a’; ó =65;

---------------------

char NOM[10];

--------------------

unsigned char --------------------S’utilitzen per variables numèriques

i senceres petites

-128 al +127

0 al 255

8 bits o 1 byte

8 bits o 1 byte

%c imp. el caràcter

%i imp. el valor

decimal

Reals float

double i double long

1,7E-38 a 3,4E+38 24

2,2E-308 a 1,7E+308 53

32 bits o 4 byte

64 bits o 8 byte

%f notació normal

%e notació expon.

UNSIGNED(modificador)

Obliga a una variable a només

Num. positius, amb el que hi cap el

doble.

Exple: unsigned char x1

0 al ..... %u

VOID Sense valor ------------ ------------- ------------

Conversió de tipusLa conversió de tipus es la situació en que es barrejant variables d’un tipus amb variables d’altre.

En una assignació, la regla de conversió es fàcil: el valor del costat dret es converteix en el del costat esquerra.

Exemple: int x = 2.3; /* 2.3 es converteix a 2 */ char ch = 500; /* els bits més significatius de 500 es perden */El tipus que resulta d’aplicar un operador amb dos operant de tipus diferents, es el tipus de major tamany

(major longitud en bytes).

En una operació, es canvia el tipus de variable al de major mida.

Exemple: 2 + 3.3;// el valor d’aquesta expressió es 5.3,es dir,un valor de tipo float

Es possible forçar a que una expressió sigui d’un tipus determinat utilitzant una construcció anomenada molde.La forma general d’un molde es: (tipus) expressió.Expressió Valor de la expressió Tipus de la expressió

--------------- --------------------- --------------------

3/2 int 1

3.0/2 float 1.5

(float) (3/2) float 1.0

(float) 3/2 float 1.5

Page 4: UF5_4_RESUM_1

Una constant decimal, octal o hexadecimal seguida per la lletra l o L, s’interpreta com una constant long.Les següents expressions son equivalents: 4l 4L(long) 4

També es pot utilitzar el tipus void en els moldes. (2 + 3); /* expressió sencera */ (void) (2 + 3); /* expressió sense cap tipus */

SCANF Recull dades introduïdes pel teclat.

Prototipus : scanf (“%i”,&num); (num es una variable que ha d’ésser declarada prèviament)

Podem fer: scanf (“ %i %i %c ”,&a1,&a2,&a3); en aquest cas les entrades han de serseparades per un espai blanc.

%i es un ESPECIFICADOR, n’hi ha més :

%c caràcter %s string

%i sencer decimal, octal o hexa. %u sencer decimal sense signe

%d sencer decimal amb signe

%e ó %E notació científica minúscula o majúscula

%f número real en coma flotant

%g ó %G el mes curt de e/E o f, minúscula o majúscula

%o octal sense signe %x ó %X hexa minúscula o majúscula

%p punter

%n dona el numero de caràcters entrats fins el moment de trobar la instrucció.

%[ ] espera un cjt. de caràcters.

Acaba de llegir números, quan troba un caràcter no numèric.

Acaba de llegir cadenes, quan troba un blanc (espai).

Joc d’inspecció. Fa que scanf llegeixi mentre coincideixen,, sinó acaba.

Exple: scanf (“%[abcd]%s”,&cad);Si volem l’invers es posa [^abcd]

Podem indicar un interval [a-j]

Si posem un caràcter blanc, rebutgem espais en blanc

Si posem %d,%d quan llegeixi la , la rebutjarà.

Per rebutjar %, el posem dos cops.

Per llegir cadenes no cal &. Exple: scanf(“%s”,cadena);

MODIFICADORS scanf (“%20s”,&cad); només admetrà 20 caràcters, si n’hi ha més, es llegeixen amb

un segon scan.

Per llegir un sencer llarg l o curt h ,davant l’especificador de format sigui d,i,o,u,x ó n.

Per omissió f, e i g indiquen float.

Si posem * no llegim l’entrada. Exple : scanf (“ %d %* %d”, &x,&y); Llegim x e y.

Page 5: UF5_4_RESUM_1

GETCHAR, GETCHE i GETCH Entrades / Sortides sense format i només d’un caràcter. Utilització de les funcions getchar, getche i getch

char c; char c; char c;

c=getchar(); c=getche(); c=getch();

La diferència entre les tres funcions està en el que imprimeixen per pantalla i en la necessitat o no

de prémer la tecla intro per llegir el caràcter:

• La funció getchar espera que es teclegi un caràcter (que es mostra per pantalla) i a continuació

espera es premi la tecla intro per guardar-lo.

• La funció getche espera que es teclegi un caràcter (que es mostra per pantalla) però no espera que

es premi la tecla intro per guardar-lo. Quan es tecleja el caràcter, es guarda automàticament a la

variable i es continua el programa.

• La funció getch espera que es teclegi un caràcter (que no es mostra per pantalla) i tampoc espera

que es premi la tecla intro per continuar. Aquesta funció es pot utilitzar per aturar el programa fins

que l’usuari premi qualsevol tecla.

Això ho podem fer simplement posant: getch(); i no assignant el resultat a cap variable.

El programa esperarà que es premi qualsevol tecla i després continuarà.

PUTCHAR putchar (caràcter a imprimir);

GETS i PUTS permeten entrar i treure cadenes, sense comprovació de la seva longitud. Pertanyen a la llibreria <srting.h> Exple: gets(cadena); puts(cadena);

Operació Símbol Tipus operant Exemple ResultatSuma + reals, enters 5 + 3 8

Resta - reals, enters 5-3 2

Multiplicació * reals, enters 5*3 15

Divisió real / reals 5.0/3.0 1.66

Divisió entera / enters 5/3 1

Mòdul (resto) % enters 5%3 2

Operador Significatx++ Utilitza x. Després incrementa el seu valor (x = x + 1)

++x Incrementa el valor de x (x = x + 1). Després utilitza el nou valor

x-- Utilitza x. Després decrementa el seu valor (x = x - 1)

--x Decrementa el valor de x (x = x - 1). Després utilitza el nou valor

Operació Símbol Exemple ResultatIgual == X==3 1 (cert)

Diferent != X!=3 0 (fals)

Més gran o igual >= X>=3 1 (cert)

Més petit o igual <= X<=3 1 (cert)

Més gran > x > 3 0 (fals)

Més petit < x < 3 0 (fals)

Page 6: UF5_4_RESUM_1

Operació Símbol Exemple ResultatAND && (x < 3) && (y < 20) 0 (fals)

OR || (x < 3) || (y < 20) 1 (cert)

Negació ! !(x < 3) 1 (cert)

Operant 1 (a) Operant 2 (b) a && b a || b !acert cert cert Cert fals

cert fals Fals Cert

fals cert Fals cert cert

fals fals fals fals

Operadors lògics amb bits. Operen amb un bit

Operació Símbol Exemple ResultatAND &

OR |

Negació ~ (altgraf4)

XOR ^ Dona “1” si son diferents

Shift dreta (right) >> Entra un 0 per l’esquerra

Shift esquerra (left) << Entra un 0 per la dreta

sleep (N) ; on N es el número de mS que atura la execució del programa.

Cadenes de Caràcters Deriven del char, S’escriuen entre “abcd” i es magatzemen en memòriacom a | b |c |d |\0 El \0, no s’imprimeix i indica el fi de la cadena i no es el zero, sinó un

caràcter no imprimible de codi ASCII .

La cadena abcd, ocupa 5 posicions (el \0 n’és una )

Si una cadena es molt llarga, i dins del printf obrim i tanquem cometes es parteix de línia.

Exple: printf ("\nInvertir en conocimientos produce siempre los mejores "

"intereses.\n(%s)", "Benjamín Franklin");

Convé fer observar que 'x' es diferent de "x". 'x' es una constant caràcter.

"x" es una cadena de caràcters ; 'x' pertany a un tipus bàsic (char).

"x" es un tipus derivat (array compost d’elements tipus bàsic char). conté dos caràcters: 'x' y '\0'.

Les cadenes es guarden en una variable array , que es declara:

tipo_de_cada_elemento variable_array [numero_de_elementos_del_array];

i a cada element del array s’hi accedeix: variable_array [numero_de_elemento];

Al primer element d’un array s’hi accedeix fent: variable_array [0];

I al segon element: variable_array [1]; I així successivament pel resta dels elements del array.

Exemple: #include <stdio.h>

int main (void) {

int x[2]; /* se reserva memòria para dos elements de tipo int */

x[0] = 10;

x[1] = 11; // el elemento x[2] no existe, mejor dicho, no se ha reservado memoria

printf ("\nx[0] = %d\nx[1] = %d\n", x[0], x[1]);

return 0; }

Page 7: UF5_4_RESUM_1

SENTENCIES DE BIFURCACIÓ

if ( si ). if ( la condició ) if - else ( si - sinó ).{ if ( la condició )el que executem si SI ; {

} el que executem si SI ;segueix el programa }

else

#include <stdio.h> {

int main() el que executem si NO ;{ }

int num; segueix el programa

printf( "Introduce un número " );scanf( "%i", &num ); #include<stdio.h>

if (num==10) int x;{ int main ()printf( "El número es correcto\n" ); {} printf("donem un numero ");

} scanf ("%d",&x);printf("....");if (x) printf("%d",x); // atencióelse printf("es 0"); // atenciógetchar ();}

expressió 1 ? : expressió 2 : expressió 3 si expressió 1 es CERT → expressió 2 , sinó → exp 3x = 2 < 3 ? 4 : 5; /* a x se le assigna el valor 4: x = 4; */

Fem

si SI

Fem

si SIFem

si NO

Page 8: UF5_4_RESUM_1

if – else if ( si - sinó – sinó - sinó). switch switch ( variable o expressió) if ( la condició 1ra ) {

{ case 1 :el que executem si SI 1ra ; fem en cas de variable = valor opció 1} break;

else if ( la condició 2ona ) case 2:{ fem en cas de variable = valor opció 2el que executem si SI 2ona ; break;} case 3:

else if ( la condició 3ra ) fem en cas de variable = valor opció 3{ break;el que executem si SI 3ra ; default:} variable diferent als valors previstos

else if ( la condició 4ta ) }{

el que executem si SI 4ta ;}

segueix el programa

================================================================

goto El prototipus es : PP: instrucció // PP es una etiqueta on saltarem ...

goto PP ===============================================================

for while (mentre) do while (fes mentre)for ( val ini. ; condició ; increment ) while (condició) do{

{ { instrucc. A executar

instruccions a fer en el bucle; instrucc. A executar } while (condició);

} }

for ( i=0 ; i<100 ; i++) i=1; do {

{ while ( i<100 ) i ++

printf ( “ i % ” , i ); { printf ( “ i % ” , i );

} i ++ } while(i<100);

printf ( “ i % ” , i );

}

Si escrivim for (;;) es un bucle infinit, while (1) es bucle infinitd’on nomès podrem sortir amb break.

SENTENCIES de RUPTURA

Break; Permet sortir d’un switch, while, for i do. Exple : for (j=0; j<k; j++) if (j==5) break;

Continue; Es el contrari de break. En while i do – while, obliga a la avaluació de la condició i a seguir el bucle.

En un for, primer s’executa l’increment del bucle, desprès s’avalua i desprès segueix el bucle.

Page 9: UF5_4_RESUM_1

Exit () declarada en stdlib.h, tanca fitxers, buida buffers i crida a la funció _exit per tancar programa.

_Exit Tanca directament el programa, sense tancar ni buidar.

Assert (); Permet incloure una expressió que si no és certa, provoca l’escriptura d’un missatge d’error i acaba l’execució del programa. Exple: assert (x<y);

CONIO

Color fons : textbackground( BLUE ); textbackground( WHITE );

Color Text : textcolor( LIGHTRED ); textcolor(YELLOW); textcolor(6);

Portar el cursor a unes coordenades : gotoxy( 5, 20 );

Neteja pantalla : clrscr();

Intensitat de la pantalla : highvideo();

lowvideo();

normvideo();

On tenim les coordenades del cursor : x=wherex(); y=wherey();

printf( "La posición del cursor es: (%d,%d)\n", wherex(), wherey() );

Per mirar si hi ha tecla pitjada, i si n’hi ha, llavors veure quina : n= !kbhit(); // miro si hi ha tecla pitjada

n= !kbhit(); // miro si hi ha tecla pitjada

if (n==1)

{

TEC=getch(); // hi ha Tecla pijada, mirare quina es

printf("\n *****tecla =%c \n",TEC);

}

Programa per generar num. aleatoris. :#include <stdio.h>#include <stdlib.h>

int main (){

int i; int c0; srand(time(NULL));

Page 10: UF5_4_RESUM_1

for(i=0;i<=2;i++) { c0=rand()%90 ; printf("%i--",c0); printf("\n"); } getchar(); return 0;

}

Programas exemple :#include <stdio.h>

#include <stdlib.h>

int main() /* Modificadores 1 */

{

char cad[]="El valor de";

int a=-15;

unsigned int b=3;

float c=932.5;

printf("%s a es %d\n",cad,a);

printf("%s b es %u\n",cad,b);

printf("%s c es %e o %f",cad,c,c);

printf("\n");

system("pause");

return 0;

}

#include <stdlib.h>

#include <stdio.h>

int main()

{

int x = 45;

double y = 23.354;

Page 11: UF5_4_RESUM_1

char z[] = "Hola";

/* utilizamos barras inclinadas (/) para ver claramente

la anchura del campo de caracteres */

printf("Escribo /45/ Con el formato %%d: /%d/\n", x);

printf("Escribo /45/ Con el formato %%1d: /%1d/\n", x);

printf("Escribo /45/ Con el formato %%10d: /%10d/\n\n", x);

printf("Escribo /23.354/ Con el formato %%f:/%f/\n", y);

printf("Escribo /23.354/ Con el formato %%.3f: /%.3f/\n", y);

printf("Escribo /23.354/ Con el formato %%5.1f: /%5.1f/\n", y);

printf("Escribo /23.354/ Con el formato%%-10.3f:/%-10.3f/\n", y);

printf("Escribo /23.354/ Con el formato %%5f: /%5f/\n\n", y);

printf("Escribo /Hola/ Con el formato%%s: /%s/\n", z);

printf("Escribo /Hola/ Con el formato %%.7s:/%.7s/\n", z);

printf("Escribo /Hola/ Con el formato %%-15.10s: /%-15.10s/\n", z);

printf("Escribo /Hola/ Con el formato %%15s: /%15s/\n", z);

putchar('\n');;

system("Pause");

return 0;

}

/* 046.c *//*Programa demostrativo del uso de la función scanf().*//* Uso de la sentencia scanf(). */

#include <stdio.h>

#include <stdlib.h>

int main() /* Solicita dos datos */

{ char nombre[10];

int edad;

printf("Introduce tu nombre: ");

scanf("%s",nombre);

printf("Introduce tu edad: ");

scanf("%d",&edad);

printf("\n");

printf("hola %s ,tens %d anys \n");

system("pause");

return 0;

}

Realizar un programa que te permita conocer el número según el codigo ASCII de las vocales minúsculas (a, e, i, o, u). */

/* Codigo ASCII de las vocales minúsculas */

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

printf("Codigo ASCII de las vocales minusculas no acentuadas");

printf("\n\nEl codigo ASCII de la %c es el: %d.", 'a', 'a');

printf("\n\nEl codigo ASCII de la %c es el: %d.", 'e', 'e');

printf("\n\nEl codigo ASCII de la %c es el: %d.", 'i', 'i');

printf("\n\nEl codigo ASCII de la %c es el: %d.", 'o', 'o');

printf("\n\nEl codigo ASCII de la %c es el: %d.", 'u', 'u');

printf("\n\n");

system("pause");

return 0;

}

/* 20.c */ /* modificadores */

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

Page 12: UF5_4_RESUM_1

char c = 'a';

int i = 1000000;

float f = 2e1;

printf("c : %c %hhd <- IMPORTANTE! Estudia la diferencia.\n", c, c);

printf("i : %d |%10d|%-10d|\n", i, i, i);

printf("f : %f |%10.2f|%+4.2f|\n", f, f, f);

system ("pause"); return 0;

}

/* 25.c */ /*Entrar un carácter por teclado y sacarlo por pantalla. Objetivo: getchar(), putchar()*/

#include <stdio.h>

#include <stdlib.h>

int main() {

char ca;

ca=getchar();

putchar(ca);

/* putchar('\n'); */

system ("pause");

return 0;

}

//033.c

/* Objetivo: operador sizeof */

/* Observar tambi‚n los formatos de impresión de cada tipo */

#include <stdio.h>

main() {

char a = 'a';

int b = 0 ;

short c = 0;

long d = 5l;

float e = 0;

double f = 0;

printf ("var\tvalor\tpos.\tancho\n\n");

printf ("char\t%c\t%p\t%i\n",a,&a,sizeof(a));

printf ("int\t%i\t%p\t%i\n",b,&b,sizeof(b));

printf ("short\t%i\t%p\t%i\n",c,&c,sizeof(c));

printf ("long\t%ld\t%p\t%i\n",d,&d,sizeof(d));

printf ("float\t%2.2f\t%p\t%i\n",e,&e,sizeof(e));

printf ("double\t%2.2lf\t%p\t%i\n",f,&f,sizeof(f));

getchar();

}

/* 33.c */

/* Mezclamos tipos de variables */

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

int a;

float b;

a = 13 % 2;

b = 2.0 / (1.0 + 2 - (a + 1));

printf("El valor de a es %d y el de b es %f\n", a, b);

system ("pause");

return 0;

}

/* 35.c */

Page 13: UF5_4_RESUM_1

/*límites de los tipos de variables*/

#include <stdio.h>

#include <limits.h>

#include <stdlib.h>

int main(void)

{

printf("El char tiene ................%d bits\n", CHAR_BIT);

printf("\n");

printf("Rango \"signed char\" entre: %d y %d\n", SCHAR_MIN, SCHAR_MAX );

printf("Rango \"signed short\" entre: %d y %d\n", SHRT_MIN , SHRT_MAX );

printf("Rango \"signed int\" entre: %d y %d\n", INT_MIN , INT_MAX );

printf("Rango \"signed long\" entre: %d y %d\n", LONG_MIN , LONG_MAX );

printf("\n");

printf("Máximo valor para un \"unsigned char\" : %d\n", UCHAR_MAX );

printf("Máximo valor para un \"unsigned short\": %d\n", USHRT_MAX );

printf("Máximo valor para un \"unsigned int\" : %u\n", UINT_MAX );

printf("Máximo valor para un \"unsigned long\" : %u\n", ULONG_MAX );

system("pause");

return (0);

}

//073.c descomposicio xifres decimals

#include <stdio.h>

void main (void)

{

int centena,decena,resto,decimal,unidad,num,rtat;

printf("entra un numero de 3 xifres\n");

scanf("%i",&num);

printf("El numero entrat es ----%i-----\n",num);

centena=num/100;

decena=num%100;

printf("centena decena");

printf("\n %i %i\n",centena,decena);

decimal=decena/10;

unidad = decena%10;

rtat=100*centena+10*decimal + unidad;

printf("\n centena decimal unidad rtat\n");

printf(" %i %i %i %i\n",centena,decimal,unidad,rtat);

getchar();

getchar();

return;

}

/* 0077.c */ /*taules matemàtiques*/

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main() {

double x;

printf("Funcions matem…tiques\n");

printf("Intrudu‹u el valor inicial d'x: ");

scanf("%lf",&x);

system("cls");

printf("Funcions matem…tiques\n\n");

printf("x\tx^2\tx^3\tsqrt(x)\tx^(-1)\tln(x)\tlog(x)\texp(x)\n");

printf("___________________________________");

printf("___________________________________\n\n");

printf("%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2f\t%.2f\n\n"

Page 14: UF5_4_RESUM_1

,x,x*x,x*x*x,sqrt(x),1/x,log(x),log10(x),exp(x));

system("pause");

return 0;

}

/* 0078.c */ /*Analizar el siguiente algoritmo. Objetivo: analizar las operaciones con operandos de distintos tipos */

#include <stdio.h>

#include <stdlib.h>

int main() {

int x1,x2;

float f1,f2;

f1 = f2 = 1.9;

x1 = f1 + f2;

x2= (int)f1 + (int)f2;

printf("\nf1 = %f\nf2 = %f",f1,f2);

printf("\nx1=f1+f2 -> %i\nx2=(int)f1+(int)f2 -> %i",x1,x2);

printf("\n");

system("pause");

return 0;

}

/* sel_042.c */ /* funcionamiento de switch - case */ /* Observar el efecto de la ausencia de break */ /* Observar enum */

#include <stdio.h>

#include <stdlib.h>

enum { Saludar=1, Despedirse };

int main(void)

{

int opcion;

printf("1) Saluda\n");

printf("2) Despídete\n");

scanf("%d", &opcion);

switch (opcion)

{

case Saludar:

printf("Hola\n");

case Despedirse:

printf("Adiós\n");

default:

printf("Opción no válida\n");

}

system("pause");

return 0;

}

/* 0094.c */ /* tècniques de comprovació de dades */

#include <stdio.h>

#include <stdlib.h>

#include <ctype.h>

int main()

{

int n;

char c;

printf("\nintroduïu un número senar...");

scanf("%d",&n);

if(n%2) printf("correcte\n");

else printf("no és correcte\n");

printf("\nintroduïu un número enter entre 1 i 5...");

Page 15: UF5_4_RESUM_1

scanf("%d",&n);

if(n>1&&n<5) printf("correcte\n");

else printf("no és correcte\n");

printf("\nintroduïu una vocal...");

fflush(stdin);scanf(" %c",&c);

c=tolower(c);

if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u')

printf("correcte\n");

else printf("no és correcte\n");

printf("\npremeu la tecla ESC...\n");

fflush(stdin); c=getchar();

if(c==27) printf("correcte\n");

else printf("no és correcte\n");

system("pause");

return 0;

}

/* 0098.c */ /*equació de segon grau*/

#include<stdio.h>

#include<math.h>

#include <stdlib.h>

int main()

{

double a,b,c;

double d;

double x1,x2;

printf("\Entra los tres coeficientes a,b,c de ax^2+bx+c=0\n");

printf("\na: ");scanf("%lf",&a);

printf("\nb: ");scanf("%lf",&b);

printf("\nc: ");scanf("%lf",&c);

d=b*b-4*a*c;

if (d<0.0)

printf("\nSoluciones no reales; no se ha programado el cálculo\n");

if (d>=0.0)

{

x1=(-b +sqrt(d))/(2*a);

x2=(-b -sqrt(d))/(2*a);

printf("\nx1= %lf; x2= %lf\n",x1,x2);

}

system("pause");

return 0;

}

/* 098.c *//* Entrar un entero y averiguar si es múltiplo de 2, o de 5, o de ambos, o de ninguno */

#include <stdio.h>

int main ()

{

int a;

printf( "Introduzca el numero:\n" );

scanf( "%d", &a );

if (a%10==0)

printf( "\nEl numero %d es multiplo de 2 y 5\n", a );

else if(a%2==0)

printf( "\nEl numero %d es multiplo de 2 pero no de 5\n", a );

else if(a%5==0)

printf( "\nEl numero %d es multiplo de 5 pero no de 2\n", a );

else

Page 16: UF5_4_RESUM_1

printf( "\nEl numero %d no es multiplo ni de 2 ni de 5\n", a );

fflush(stdin);

getchar();

return 0;

}

/* 099.c */

/*Identificacion de caracteres Entrar un caracter y diferenciar si es una letra, un número, un blanco, un signo de

puntuación o otra cosa.*/

#include<stdio.h>

int main()

{

char c;

printf( "Introducir el caracter a identificar\n" );

scanf( "%c", &c );

if(((c>='a')&&(c<='z'))||((c>='A')&&(c<='z')))

printf( "Letra\n" );

else if((c>='0')&&(c<='9'))

printf( "Numero\n" );

else if(c==' ')

printf( "Blanco\n" );

else if((c==',')||(c==';')||(c==':')||(c=='.'))

printf( "Signo de puntuacion\n" );

else

printf( "No lo sé\n" );

fflush(stdin);

getchar();

return 0;

}

//arr_01.c busca dins una cadena

#include<stdio.h>

char *donde(char *p, char c)

{

printf(":::::*p=%c:::::: \n",*p);

printf(":::::::p(string)=%s:::::p(char)=%c:::::::\n",p,p);

printf("::::&p%d:::::\n",&p);

printf("::::&p%d:::::\n",&p+1);

printf("::::p=%s:::::\n",p+1);

for ( ; *p != 0; p++)

if (*p == c)

return p;

return NULL;

}

main()

{

char *cadena = "Buscando exactamente esto";

char *s;

s = donde(cadena, 'd');

if (s != NULL)

printf ("%s\n", s);//.....ando

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

printf ("%s\n",cadena);//Buscando........

Page 17: UF5_4_RESUM_1

printf ("%i\n",&cadena);//2293620

printf ("%c...%i\n",*cadena,*cadena);//B..66

printf ("%i\n",&cadena+1);//....2293624

printf ("%c...%i\n",*(cadena+1),*(cadena+1));//...u...117

printf ("%i\n",&s);//..2293616

printf ("%i..%c\n",*s,*s);//..97..a

getchar ();

}

// arr_08.c

#include <stdio.h>

int sumar(int*m)

{

int suma,i;

suma=0;

for(i=0;i<5;i++)

{

suma+=m[i];

}

return suma;

}

int main()

{

int contador;

int matriz[5]={3,4,5,6,7};

for(contador=0;contador<5;contador++)

{

printf(" %5i\n",matriz[contador]);

}

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

printf(" %5i",sumar(matriz));

getchar();

getchar();

}

// arr_09.c #include <stdio.h>

int main ()

{

char nom[10];

int i;

printf("Donem el teu nom ");

scanf ("%s",nom);

printf("\nEl nom es %s ",nom);

for (i=0;i<10;i++)

{

printf(" %c ",nom[i]);

}

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

for (i=0;i<10;i++)

{

nom[i]='x';

}

for (i=0;i<10;i++)

{

printf(" %c ",nom[i]);

}

printf("\n\nDonem el teu nom ");

scanf ("%s",nom);

Page 18: UF5_4_RESUM_1

printf("\nEl nom es %s \n",nom);

for (i=0;i<10;i++)

{

printf(" %c ",nom[i]);

}

getchar ();

getchar ();

}

/* arr_016.c */

/*En un vector de 20 posiciones, generar aleatoriamente sus contenidos con números enteros positivos entre 0 y 100. El

programa hace lo siguiente:

a) Saca por pantalla el vector tal como se ha generado

b) Ordena de menor a mayor los valores

c) Saca por pantalla el vector ordenado. */

#define MAX 100

#include <stdio.h>

#include <stdlib.h>

#include<time.h>

int main ()

{

int v[MAX],i;

int ordenat = 0,x;

srand( (unsigned)time( NULL ) );

/* genera el vector */

for (i=0;i<MAX;i++) {

v[i] = rand() % 101;

}

/* a) Saca por pantalla el vector tal como se ha generado */ putchar('\n'); for (i=0;i<MAX;i++)

{

printf("%i\t",v[i]);

}

putchar('\n');

/*b) Ordena de menor a mayor los valores */ Do

{

ordenat = 0;

for (i=0;i<(MAX-1);i++) {

if (v[i]>v[i+1]) {

x = v[i];

v[i] = v[i+1];

v[i+1] = x;

ordenat = 1;

}

}

while (ordenat != 0);

/* ja està ordenat */

/* c) Saca por pantalla el vector ordenado. */

Putc har('\n');

for (i=0;i<MAX;i++)

{

printf("%i\t",v[i]);

}

/* final del programa */

putchar('\n');

Page 19: UF5_4_RESUM_1

system ("Pause");

return 0;

}

/* arr_023.c */

/* Entrar un número entero positivo N, validarlo y escribirlo en binario.*/

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i,resto,cociente;

long n,m; /* el número decimal */

int binario[16]; /*limitado a 16 bits como máximo (n < 65536) */ do

{

printf("\Entra un número entero positivo menor que 65536 ");

scanf("%ld",&n);

} while (n<=0 || n>65535);

/*ponemos a 0 el vector con el número binario */ m=n; for (i=0;i<16;++i) binario[i]=0; i=0; do

{

resto = n%2;

cociente = (n-resto)/2;

if (cociente >1)

{

binario[i]=resto;

n=cociente;

++i;

}

else

{

binario[i]=resto;

binario[i+1]=cociente;

}

} while (cociente>1);

/*sacamos el número por pantalla */ printf ("\nEl número %ld en binario es: ",m); for (i=15;i>=0;--i)

{

printf("%d",binario[i]);}

printf("\n");

system("pause");

return 0;

}

/* arr_027.c */ /* Como copiar vectores */

#include <stdio.h>

#include <stdlib.h>

#define TALLA 10

int main(void)

{

int original[TALLA] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} ;

int copia[TALLA];

int i;

for (i=0; i<TALLA; i++)

copia[i] = original[i];

/* imprimir original y copia */

printf("\nOriginal y Copia:\n");

for (i=0; i<TALLA; i++)

printf ("\n%i\t%i",original[i],copia[i]);

Page 20: UF5_4_RESUM_1

printf("\n");

system ("pause");

return 0;

}

/* arr_029.c *//* Inicialización de un vector a 0: comprobación */

#include <stdio.h>

#include <stdlib.h>

#define TALLA 5

int main(void)

{

int i, a[TALLA];

printf("\nVector sin inicializar:\n");

for (i = 0; i < TALLA; i++)

printf("%d\t", a[i]);

/* Inicializar vector a 0 */

for (i = 0; i < TALLA; i++)

a[i] = 0;

printf("\nVector inicializado a 0:\n");

for (i = 0; i < TALLA; i++)

printf("%d\t", a[i]);

putchar('\n');

system("pause");

return 0;

}

/* arr_032.c *//* Ordenar un vector de nombres enters *//* Mètode de les bombolles */

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define TOPE 5

int main (void)

{

int v[TOPE]={2,3,4,5,6};

int i,j,chivato,z;

// srand((unsigned) time (NULL));

/* generar dades aleatòries */

// for(i=0; i<TOPE;i++) {

// v[i] = rand()%1000; /* Un número aleatori entre 0 i 999 */ //

}

/* publicar vector com s'ha generat */

printf("\nVector generat aleatòriament:\n");

for(i=0; i<TOPE;i++) printf("%i--",v[i]);

printf("\n");

/* ordenar */ chivato=1;

while (chivato !=0)

{

chivato = 0;

for(i=0; i<TOPE-1;i++)

{

for(j=0; j<TOPE;j++) printf("%i--",v[j]);

printf(" chivato=%i\n",chivato);

if (v[i]<v[i+1])

{

z = v[i];

v[i]=v[i+1];

v[i+1]=z;

chivato = 1;

} /* if */

Page 21: UF5_4_RESUM_1

printf(".................chivato =%i\n",chivato);

} /* for */

printf(".................chivato =%i\n",chivato);

} /* while */

/* publicar vector ordenat */

printf("\nVector ordenat:\n");

for(i=0; i<TOPE;i++) printf("%i--",v[i]);

printf("\n");

system("pause");

return 0;

}

/* buc_007.c *//* sacar los divisores de un número y contarlos */

#include <stdio.h>

#include <stdlib.h>

int main (void)

{

long num, i, resto, contador = 0;

printf("\nEntre un número entero: ");

scanf("%ld",&num);

i = 2;

do{

resto = num % i;

if (resto == 0) {

printf("\n%ld es divisor",i);

conta

}

i++

} while (i<=num/2);

printf("\nHa encontrado %ld divisores",contador);

printf("\nFin del programa\n");

system("PAUSE");

return 0;

}

/* buc_019.c */

/* Calcular la suma de los N primeros números enteros(sumando solo los números impares ). Entrar el número N,

validarlo solo si es positivo e imprimir la suma. */

#include <stdio.h>

#include <stdlib.h>

int main()

{

int n,i;

long suma=0;

do {

printf ("\nEntra un número entero positivo ");

scanf ("%d",&n);

} while (n<=0);

for (i=0;i<=n;++i) {

if (i%2 ==1) suma = suma+i;

}

printf("\nLa suma de los enteros impares hasta %d es %ld\n",n,suma);

system("PAUSE");

return 0;

}

Page 22: UF5_4_RESUM_1

/* buc_020.c */

/* Entrar un número entero N mayor que 0, validándolo y averiguar si es un número primo o no. Recuerda: un número

primo solo es divisible (da resto 0) por él mismo o por 1. */

#include <stdio.h>

#include <stdlib.h>

int main()

{

int n,i=2,resto;

do {

printf ("\nEntra un número entero positivo ");

scanf ("%d",&n);

} while (n<=0);

/* algoritmo para averiguar i es un número primo o no */

do {

resto = n%i;

++i;

} while (resto !=0 && i < n);

if (i==n || n==1 || n==2) printf ("\nEl número %d es primo\n",n);

else printf("\nEl número %d no es primo\n", n);

system("PAUSE");

return 0;

}

/* buc_026.c */

/* Escribir un programa que escriba todos los números menores que 50 y no divisibles por 3. Nota: para detectar si un

número n és divisible por 3, se calcula el resto de la división entera entre n y 3; si es 0, el número es divisible.*/

#include <stdio.h>

#include <stdlib.h>

int main (void)

{

int i;

printf("\nEls nombres inferiors a 50 no divisibles per 3 són:\n");

for ( i=1; i<50; i++)

{

if ((i % 3) != 0)

{

printf("%i\t",i);

}

}

printf("\n");

system("PAUSE");

return 0;

}

/* buc_034.c *//* El programa presenta por pantalla el siguiente texto:

Si quieres ver los números impares, pulsa I.

Si quieres ver los números pares, pulsa P.

Si quieres acabar, pulsa A.

Si se ha elegido la opción A, el programa acaba. Si se elige I o P, saca por pantalla:

Hasta que número entero?

Se entra un número entero y el programa ejecuta la opción I o P elegida, desde 0 hasta el número entrado.*/

#include <stdio.h>

#include <stdlib.h>

int main (void)

{

char que_fer;

int i,n;

Page 23: UF5_4_RESUM_1

do{

printf("\nI: veure nombres senars");

printf("\nP: veure nombres parells");

printf("\nA: acabar\n");

fflush(stdin);

que_fer = getchar();

} while ((que_fer != 'I') && (que_fer != 'P') && (que_fer != 'A'));

if (que_fer != 'A')

{

do {

printf("\nfins a quin nombre voleu veure? ");

scanf("%i",&n);

} while (n<1);

printf("\n");

for (i=1; i<=n; i++)

{

if ((que_fer == 'I') && ((i % 2) !=0)) {

printf("%i\t",i);

}

if ((que_fer == 'P') && ((i % 2) ==0)) {

printf("%i\t",i);

}

}

}

printf("\n\nAdéu\n");

system("pause");

return 0;

}

/* buc_044.c *//* Donades les següents funcions:

x = 4*cos(a)

y = 2*sin(a)

Heu de treure per pantalla una taula a, x, y on a varia des de 0º fins a 180º, amb intervals cada 10º. */

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

#define PI 3.14159

int main()

{

double x,y,a;

printf("\na\t\tx\t\ty");

for (a=0;a<=180;a=a+10){

x= 4*cos(PI*a/180);

y= 2*sin(PI*a/180);

printf("\n%lf\t%lf\t%lf",a,x,y);

}

printf("\n\n");

system("Pause");

return 0;

}

/* buc_065.c *//* entrar caracteres y imprimir por pantalla: el número de caracteres tecleados y el número de líneas

entradas; finaliza con Control+Z */ /* Objetivo: fin de fichero ^Z; sentencia if; operador relacional == */ /* Al comprobar

el número de caracteres, contar también los '\n' */

#include <stdio.h>

#include <stdlib.h>

int main()

Page 24: UF5_4_RESUM_1

{

int cont=0,linea=0,ca=0;

while((ca=getchar()) != EOF) {

++cont;

if(ca=='\n') {

++linea;

}

}

printf("%2d\n",EOF); /* sacará -1 por pantalla */

printf("%3d caracteres tecleados. \n",cont);

printf("En %2d líneas. \n",linea);

system("pause");

return 0;

}

/* buc_185.c *//* ¿ Qué hace este programa ? ¿ Cómo lo hace ? */

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

long a = 1, i;

for (i = 0; i < 32; i++) {

printf("2**%2ld = %10lu\n", i, a);

a <<= 1;

}

printf("\n");

system("pause");

return 0;

}

/* buc_193.c *//* tabla e logaritmos decimal y neperiano de 1 a 100, con incrementos de 5 */

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main(void)

{

int i;

system ("cls");

printf ("Este programa calcula el logaritmo decimal");

printf("\ny el logaritmo neperiano de los números entre el\n");

printf("uno y el 100, de 5 en 5.\n");

printf ("%10s%20s%20s\n", "número", "log", "ln");

for (i=0; i<51; i++)

putchar('-');

printf ("\n%10d%20lf%20lf", 1, log10(1), log(1));

for (i=5; i<=100; i=i+5)

printf ("\n%10d%20lf%20lf", i, log10(i), log(i));

printf("\n");

system("pause");

return 0;

}

/* buc_219.c *//* Pulso teclas de todo tipo (letras, números, etc.). El programa cuenta las que son vocales. Cuando entre

un número 0, se imprime el total de vocales y se acaba el programa. */

#include<stdio.h>

int main()

{

char tecla;

Page 25: UF5_4_RESUM_1

int contador=0;

printf("\nPulsa teclas; para acabar,el número 0\n");

fflush(stdin);

/*solo contar las vocales minúsculas para simplificar el programa*/

do

{

/* fflush(stdin); */ /* ¿ que ocurre si activamos esta sentencia ? */

tecla = getchar();

if((tecla=='a')||(tecla=='e')||(tecla=='i')||(tecla=='o')||(tecla=='u'))

contador++;

} while (tecla!='0');

printf("\nHas pulsado %d vocales minúsculas\n",contador);

printf("\nFin de programa ");

fflush(stdin);

getchar();

return 0;

}

/* buc_240.c *//*Cuenta el numero de veces que aparece un caracter en una secuencia*/

#include <stdio.h>

int main()

{

char lletra,c;

int cont;

printf( "\nIntroduzca la letra escogida: " );

scanf( "%c%*c", &lletra );

/*la funcion scanf en ocasiones presenta problemas a la hora de identificar el retorno de carro que marca la ejecucion de la

funcion. Para evitarlo en esta llamada a la funcion se leen dos caracteres del buffer de teclado, el

primero %c se asigna a la variable lletra, el segundo %*c corresponde al caracter \n y el asterisco indica a la funcion que

lea el caracter pero no lo asigne. En principio el programa tambien funcionaria correctamente sin este

pequeño detalle. Sin ese detalle solo funciona mal si el caracter a detectar es el retorno de carro*/

printf("\nIntroduzca la secuencia de caracteres terminada en '.':");

cont=0;

while(c!='.')

{

scanf( "%c", &c );

if(c==lletra)

cont++;

}

printf( "\n Ha aparecido %d veces \n", cont );

fflush(stdin);

getchar();

return 0;

}

/*Diseñar un algoritmo que permita registrar de los empleados de una fábrica (no se sabe cuantos) su peso y saber cuantos

pesan hasta 80 kg. inclusive y cuantos pesan más de 80 kg. Finaliza pulsando una tecla cualquiera. */

#include <stdio.h>

#include <ctype.h>

int main()

{

char seg = 's';

float peso;

Page 26: UF5_4_RESUM_1

int mas, men;

mas = 0;

men = 0;

while ( seg == 's' )

{

printf("\nIngresar su peso en Kg: ");

fflush(stdin);

scanf("%f", &peso);

if ( peso <= 80 ) men = men + 1;

else mas = mas + 1;

printf("\nDesea seguir s/n?: ");

fflush(stdin);

seg = getchar();

seg = tolower(seg); /* libreria ctype.h */

while ( seg != 's' && seg != 'n' )

{

printf("\nDesea seguir s/n?: ");

fflush(stdin);

seg = getchar();

}

}

printf("\nLa cantidad de personas que pesan menos que 80 son: %d", men);

printf("\nLa cantidad de personas que pesan mas de 80 son: %d", mas);

printf("\nPresione RETURN para salir");

fflush(stdin);

getchar();

return 0;

}

/* buc_300.c *//* Càlcul de l'arrel quadrada d'un nombre*/ /* mètode iteratiu */

#include <stdio.h>

#include <stdlib.h>

int main()

{

double llavor;

double a;

int ct, iter;

printf("a= "); scanf("%lf",&a);

printf("\nllavor= "); scanf("%lf",&llavor);

printf("\nnombre d'iteracions"); scanf ("%d",&iter);

for(ct=0;ct<=iter;ct++){

llavor=a/2/llavor+llavor/2;

printf("\n%d: %.20lf",ct,llavor);

}

putchar('\n');

system("pause");

return 0;

}

/* buc_708.c */

/* L'ordinador genera un nombre IMPARELL a l'atzar entre 1 i 99 (tots dos inclosos), i li demana a l'usuari que

l'endevini. Cada vegada que l'usuari entra un nombre per endivinar el proposat, l'ordinador fa el següent:

Li contesta si el nombre entrat és massa gran, massa petit o bé ha encertat. En aquest últim cas, felicita al jugador, li diu

en quantes jugades ho ha aconseguit i finalitza el programa. Si no ha encertat, després d'enviar el

missatge de "massa gran" o "massa petit", modifica el nombre generat sumant 2 o restant 2 (a l'atzar); si surt dels valors

límits 1 o 99, es queda en el valor límit, i espera una nova jugada. */

#include <stdio.h>

#include <stdlib.h>

Page 27: UF5_4_RESUM_1

#include <time.h>

int main ()

{

int n,x,inc,jugades=0, indicador =0;

srand(time(NULL));

/* genera el número */

do{

n=rand() % 99 +1;

} while ((n%2) ==0);

/* a jugar */

do {

printf("\nEndevina el número entre 1 i 99: ");

scanf("%i",&x);

jugades++;

if (x == n) {

printf("\nFelicitats, l'has endevinat en %i jugades",jugades);

indicador = 1;

}

else {

if (x<n) printf("\nMassa petit!");

if (x>n) printf("\nMassa gran!");

inc = rand() % 2;

if (inc == 0) n = n+2;

else n = n-2;

if (n>99) n = 99;

if (n<1) n = 1;

}

} while (indicador == 0);

printf("\nAdéu\n");

system ("Pause");

return 0;

}

/* buc_709.c */

/* L'ordinador genera un nombre PARELL a l'atzar entre 0 i 100 (tots dos inclosos), i li demana a l'usuari que l'endevini.

Cada vegada que l'usuari entra un nombre per endivinar el proposat, l'ordinador fa el següent:

Li contesta si el nombre entrat és massa gran, massa petit o bé ha encertat. En aquest últim cas, felicita al jugador, li diu

en quantes jugades ho ha aconseguit i finalitza el programa. Si no ha encertat, després d'enviar el missatge de "massa

gran" o "massa petit", modifica el nombre generat sumant 4 o restant 4 (a l'atzar); si surt dels valors límits 0 o 100, es

queda en el valor límit, i espera una nova jugada. */

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main ()

{

int n,x,inc,jugades=0, indicador =0;

srand(time(NULL));

/* genera el número */

do{

n=rand() % 101;

} while ((n%2) !=0);

/* a jugar */

do {

printf("\nEndevina el número entre 0 i 100: ");

scanf("%i",&x);

Page 28: UF5_4_RESUM_1

jugades++;

if (x == n) {

printf("\nFelicitats, l'has endevinat en %i jugades",jugades);

indicador = 1;

}

else {

if (x<n) printf("\nMassa petit!");

if (x>n) printf("\nMassa gran!");

inc = rand() % 2;

if (inc == 0) n = n+4;

else n = n-4;

if (n>100) n = 100;

if (n<0) n = 0;

}

} while (indicador == 0);

printf("\nAdéu\n");

system ("Pause");

return 0;

}

/* buc_710.c */

/* Mitjançant un número aleatori que pot valer només 0 o 1 es simula el llançament d'una moneda (0 = cara, 1 = creu). Es

van fent llançaments de la moneda, fins que s'obté una seqüència seguida 0-1-0-1, exactament així. Llavors acaba el

programa. Per pantalla va sortint: el resultat de cada llançament i el nombre total de llançaments.*/

#include <stdlib.h>

#include <stdio.h>

#include <time.h>

int main()

{

int tirades=0, c3=-1, c2=-1, c1=-1, c0=-1,indicador = 0;

srand((unsigned) time (NULL));

printf("\n");

do{

c0 = rand() % 2;

tirades++;

printf("\t%i",c0);

if((c3==0)&&(c2==1)&&(c1==0)&&(c0==1)) indicador = 1;

else {

c3 = c2;

c2 = c1;

c1 = c0;

}

} while(indicador == 0);

printf("\ntirades = %i\n", tirades);

system("Pause");

return 0;

}

// 01ann1.c

#include <conio2.h>

#include <stdio.h>

int main() {

cprintf( "Ejemplo de \"textbackground\" y \"textcolor\"\r\n\r\n" );

textbackground( BLUE );

Page 29: UF5_4_RESUM_1

textcolor( LIGHTRED );

cprintf( "Este mensaje tiene otro color de fondo y de texto.\r\n" );

textbackground( WHITE );

cprintf( "Este mensaje tiene un color de fondo distinto.\r\n" );

normvideo();

cprintf( "Pulsa una tecla para continuar...\r\n" );

getch();

return 0;

}

// 02ann1.c

#include <conio.h>

#include <stdio.h>

int main() {

clrscr();

printf("ffffff \n ggggg\n");

printf( "Ejemplo de \"wherex\" y \"wherey\"\n " ); //afegeix \n o espais per variar coordenades

printf( "La posición del cursor es: (%d,%d)\n", wherex(), wherey() );

printf( "Pulsa una tecla para continuar..." );

getchar();

getchar();

return 0;

}

//03ann1.c

#include <conio2.h>

int main() {

clrscr();

printf( "Ejemplo de \"gotoxy\"\n\n" );

printf( "1 linea" );

printf( "2 linea" );

gotoxy( 5, 20 );

printf( "3 linea" );

gotoxy( 20, 1 );

printf( "4 linea" );

gotoxy( 1, 15 );

printf( "Pulsa una tecla para continuar...\n" );

getch();

return 0;

}

/* 04ann1.c */

#include <stdio.h>

#include <conio2.h>

int main()

{

int n, d;

clrscr();

textcolor(YELLOW);

cprintf("\n\nIngrese un numero: ");

scanf("%d", &n);

d = n % 2;

if (d == 1)

Page 30: UF5_4_RESUM_1

{

textcolor(GREEN);

cprintf("\n\nEl numero es impar");

}

else

{

textcolor(BLUE);

cprintf("\n\nEl numero es par");

textcolor(YELLOW);

}

printf("\n\n\n\n\n\n\n\n\n\n\nPresione una tecla para salir");

getch();

}

/* 06ann1.c */

#include <stdio.h>

#include <conio2.h>

int main()

{

int i;

clrscr();

for(i=1;i<16;i++)

{

textcolor(i);

cprintf("\n\nXXXXXXXXXXXXXXXXXXXXXXX");

}

printf("\n\n\n\n\nPresione una tecla para salir");

getch();

}

//07ann1.c

#include <conio2.h>

int main() {

clrscr();

cprintf( "Ejemplo de \"highvideo\" y \"lowvideo\"\r\n\r\n" );

cprintf( "Este texto tiene su propia intensidad.\r\n" );

cprintf( "Ahora cambiaremos la intensidad.\r\n" );

highvideo();

cprintf( "La intensidad a partir de ahora es mayor.\r\n" );

cprintf( "Ahora lo cambiaremos a una intensidad menor.\r\n" );

lowvideo();

cprintf( "Pulsa una tecla para continuar...\r\n" );

getch();

return 0;

}

//08ann1.c

#include <stdio.h>

#include <conio2.h>

int main ()

{

printf ("xx");

gotoxy (20,20);

Page 31: UF5_4_RESUM_1

printf ("x");

getchar ();

int i;

clrscr();

for(i=1;i<16;i++)

{textcolor(i);

cprintf("\n\nXXXXXXXXXXXXXXXXXXXXXXX");

}

getch();

}

#include <conio2.h>

int main() {

clrscr();

cprintf( "Ejemplo de \"highvideo\" y \"lowvideo\"\r\n\r\n" );

cprintf( "Este texto tiene su propia intensidad.\r\n" );

cprintf( "Ahora cambiaremos la intensidad.\r\n" );

highvideo();

cprintf( "La intensidad a partir de ahora es mayor.\r\n" );

cprintf( "Ahora lo cambiaremos a una intensidad menor.\r\n" );

lowvideo();

cprintf( "Pulsa una tecla para continuar...\r\n" );

getch();

return 0;

}

//funcions temps, mira com funcionen i resumeix-ho

#include <stdio.h>

#include <time.h>

int main( void )

{

long int i=0;

time_t comienzo, final;

struct tm *tiempoComienzoPtr, *tiempoFinalPtr;

comienzo = time( NULL );

for( i=0; i<1000000; i++ ) printf( "-" );

final = time( NULL );

printf( "Comienzo: %u s\n", comienzo );

printf( "Final: %u s\n", final );

printf( "Número de segundos transcurridos desde el comienzo del programa: %f s\n", difftime(final,

comienzo) );

tiempoComienzoPtr = gmtime( &comienzo );

tiempoFinalPtr = gmtime( &final );

printf( "Comienzo: %s\n", asctime(tiempoComienzoPtr) );

printf( "Final: %s\n", asctime(tiempoFinalPtr) );

getchar();

getchar();

return 0;

}

//Explica el programa /* bit_001.c *//* analiza el código */

Page 32: UF5_4_RESUM_1

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

int a = 127, b = 1024, c, i;

c = a ^ b;

printf("%d\n", c);

a = 2147483647;

for (i = 0; i < 8*sizeof(a); i++)

{

printf("%d", ((c & a) != 0) ? 1 : 0);

a >>= 1;

}

printf("\n");

a = 1;

for (i = 0; i < 8*sizeof(a); i++)

{

if ((c & a) != 0) c >>= 1;

else c <<= 1;

a <<= 1;

}

a = 2147483647;

for (i = 0; i < 8*sizeof(a); i++)

{

printf("%d", ((c & a) != 0) ? 1 : 0);

a >>= 1;

}

printf("\n");

system("pause");

return 0;

}

//pantalla i conversio

#include <conio.h>

#include <stdio.h>

int main()

{

unsigned char a,b;

char i;

int x,y;

char num[8];

printf("entra un numero.. ");

scanf("%i",&a);

printf("Has entrat %i\n",a);

printf("Has entrat 0x%X\n",a);

b=a;

for (i=7;i>=0;i--)

{

printf("%i ",i);

if (i==0)

num[i]=b;

else

{

Page 33: UF5_4_RESUM_1

num[i]=b%2;

b=b/2;

}

printf("num(i)%i__\n",num[i]);

}

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

// printf( "La posición del cursor es: (%d,%d)\r\n", wherex(), wherey() );

x=wherex();

y=wherey();

// printf("x=%i__y=%i__",x,y);

gotoxy(35,1);

textcolor(6);

printf("pesos");

gotoxy(35,2);

printf("128_ 64_ 32_ 16_ 8_ 4_ 2_ 1");

gotoxy(35,3);

textcolor(13);

for (i=0;i<8;i++)printf("__%i_",num[i]);

textcolor(15);

gotoxy(x,y);

getchar();

getchar();

return 0;

//pas de decimal a binari

//enten el programa, comenta'l i afegeix la funcio per veure els pesos

/* Entrar un número entero positivo N, validarlo y escribirlo en binario.*/

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i,resto,cociente;

unsigned char n,m; /* el número decimal */

int binario[8]; /*limitado a 8 bits como máximo (n < 256) */

do

{

printf("\nEntra un numero entero positivo menor que 256 ");

scanf("%ld",&n);

} while (n<=0 || n>255);

/*ponemos a 0 el vector con el número binario */

m=n;

for (i=0;i<8;++i) binario[i]=0;

i=0;

do {

resto = n%2;

cociente = (n-resto)/2;

if (cociente >1) {

binario[i]=resto;

n=cociente;

++i; }

else {

binario[i]=resto;

binario[i+1]=cociente;

Page 34: UF5_4_RESUM_1

}

} while (cociente>1);

/*sacamos el número por pantalla */

printf ("\nEl numero %i en binario es: ",m);

for (i=7;i>=0;--i) {printf("%d",binario[i]);}

printf("\n");

system("pause");

return 0; }

/* sim_teclat_1.c */

#include <stdio.h>

#include <stdlib.h>

#include <conio2.h>

char llegir (char VAR);

char TEC,var,VAR,LLEGIT;

int i;

int main()

{

printf("Entri 1 caracter\n\n");

while(1){

LLEGIT=llegir(VAR);

printf ("\n LLEGIT= %c \n",LLEGIT);

if (LLEGIT=='a') printf("\nllegim a\n");

else if (LLEGIT=='b') printf("\nllegim b\n");

else if (LLEGIT=='c') printf("\nllegim c\n");

else printf("\nNo reconegut\n");

for (i=0;i<9999;i++) ;

}

return 0;

}

char llegir (char VAR) {

int n;

n= !kbhit(); // miro si hi ha tecla pitjada

if (n==1)

{

TEC=getch(); // hi ha Tecla pijada, mirare quina es

printf("\n *****tecla =%c \n",TEC);

}

for (i=0;i<9999;i++) ; // Espero un temps

return TEC; }

/* sim_teclat_1.c */

#include <stdio.h>

#include <stdlib.h>

#include <conio2.h>

char llegir (char VAR);

char TEC,var,VAR,LLEGIT;

int i;

int main()

{

printf("Entri 1 caracter\n\n");

while(1){

LLEGIT=llegir(VAR);

Page 35: UF5_4_RESUM_1

printf ("\n LLEGIT= %c \n",LLEGIT);

if (LLEGIT=='a') printf("\nllegim a\n");

else if (LLEGIT=='b') printf("\nllegim b\n");

else if (LLEGIT=='c') printf("\nllegim c\n");

else printf("\nNo reconegut\n");

or (i=0;i<9999;i++) ;

}

return 0;

}

char llegir (char VAR) {

int n;

n= !kbhit(); // miro si hi ha tecla pitjada

if (n==1)

{

TEC=getch(); // hi ha Tecla pijada, mirare quina es

printf("\n *****tecla =%c \n",TEC);

}

for (i=0;i<9999;i++) ; // Espero un temps

return TEC; }

//7seg i pito

//traduir valor a codi 7segments

#include <stdio.h>

int main()

{

int z;

unsigned char a,b,c;

char taula[17]={'0','1',2,3,4,5,6,7,8,9,'A','B','C','D','E','F'};

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

for(z=0;z<16;z++){

printf("_%i_",z);

printf("%c \n",taula[z]); }

for(z=0;z<6;z++){

printf("sona pito z=%i\n",z);

printf("%c \n",7); }

// while(1)

//

{

a=getche();

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

b=getche();

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

printf("a= %c b= %c",a,b);

c=a&b;

getchar();

printf("\nRtat %c ",c);

printf("\n____________\n");

or (a=0;a<2;a++){

for (b=0;b<2;b++){

rintf ("%i__%i__%i\n",a,b,a|b);

}

}

//

Page 36: UF5_4_RESUM_1

}

pp: printf("\n____________\n");

a=getche();

b=taula[a];

printf("\na=%c b=%c\n",a,b);

getchar();

getchar();

goto pp;

return 0;

}

//descomposicio xifres decimals

#include <stdio.h>

void main (void)

{

int resto,decimal,unidad,contar,rtat;

printf("entra un numero de 2 xifres\n");

scanf("%i",&contar);

printf("%i-----\n",contar);

resto=contar%100;

decimal=resto/10;

unidad = resto%10;

rtat=10*decimal + unidad;

printf(" contar resto decimal unidad rtat\n");

printf(" %i %i %i %i %i\n",contar,resto,decimal,unidad,rtat);

getchar();

getchar();

return;

}

/* sim_teclat_3.c */

#include <stdio.h>

#include <stdlib.h>

#include <conio2.h>

char llegir (char VAR);

char TEC,var,VAR,LLEGIT;

int i,P,M,A,B,Estat,Motor,Dreta,Esquerra,j=1;

int main()

{

Estat=0;Motor=0;Dreta=0;Esquerra=0;

while(1){

system("cls");

printf("Estat= %i Motor= %i Esquerra= %i Dreta= %i \n",Estat,Motor,Esquerra,Dreta);

printf("\nEntri 1 caracter : M marxa P paro A fi dret B fi esqu\n\n");

if(j>0){//TRAMPA DE LECTURA

LLEGIT=llegir(VAR);

printf ("\n LLEGIT= %c \n",LLEGIT);

M=(LLEGIT=='M')?1:0;

P=(LLEGIT=='P')?1:0;

A=(LLEGIT=='A')?1:0;

B=(LLEGIT=='B')?1:0;

//M=0;

// P=0;

Page 37: UF5_4_RESUM_1

// A=0;

// B=0;

// if (LLEGIT=='M') M=1;

// else if (LLEGIT=='P') P=1;

// else if (LLEGIT=='A') A=1;

// else if (LLEGIT=='B') B=1;

// else printf("\nNo reconegut\n");

for (i=0;i<9;i++) ;

}

j=j*-1;//TRAMPA DE LECTURA

//---------------------------------

switch (Estat) {

case 0:

Motor=0;Dreta=0;Esquerra=0;

if (M==1) Estat=1;

break;

case 1:

if (P==1) Estat=0;

if (B==1) {

Motor=0;Dreta=0;Esquerra=0;

Estat=2;}

else {

Motor=1;

Dreta=1;

}

break;

case 2:

if (P==1) Estat=0;

if (A==1) {

Motor=0;Dreta=0;Esquerra=0;

Estat=1;}

else {

Motor=1;

Esquerra=1;

}

break;

}

}

return 0;

}

char llegir (char VAR) {

int n;

n= !kbhit(); // miro si hi ha tecla pitjada

if (n==1)

{

TEC=getch(); // hi ha Tecla pijada, mirare quina es

printf("\n *****tecla =%c \n",TEC);

}

for (i=0;i<9;i++) ; // Espero un temps

return TEC; }

//P4 operadors Bit a Bit

# include <stdio.h>

Page 38: UF5_4_RESUM_1

void main (void)

{

int i=0xAA;

int j=0x55;

int k=0x00;

// -------------------------

printf("i = %#.2x",i);//

printf(" j = %#.2x\n\n",j);//

printf(" & 0x0F & 0x0F\n\n");

k= i&0x0F;

printf("k = %#.2x",k);//

k= j&0x0F;

printf(" k = %#.2x\n\n",k);//

// -------------------------

printf(" | 0x03 | 0x03\n\n");

k= i|0x03;

printf("k = %#.2x",k);//

k= j|0x03;

printf(" k = %#.2x\n\n",k);

// -------------------------

printf(" >>2 >>3\n\n");

k= i>>2;

printf("k = %#.2x",k);//

k= j>>3;

printf(" k = %#.2x\n\n",k);

// -------------------------

printf(" ~ ~\n\n");

k= ~i;

printf("i = %#.2x",i);

printf(" k = %#.2x",k);//

k= ~j;

printf(" j = %#.2x",j);

printf(" k = %#.2x\n\n",k);

// -------------------------

i=0xAA;

j=0x55;

k=0x00;

// -------------------------

printf("i = %#.2x",i);//

printf(" j = %#.2x\n\n",j);//

printf(" ^ 0x03 ^ 0x03 XOR a 1 si son diferents !!\n\n");

k= i^0x03;

printf("k = %#.2x",k);//

k= j^0x03;

printf(" k = %#.2x\n\n",k);//

getchar();

getchar();

return;

}

#include <conio.h>

#include <stdio.h>

int main()

Page 39: UF5_4_RESUM_1

{

unsigned char a,b;

char i;

int x,y;

char num[8];

printf("entra un numero.. ");

scanf("%i",&a);

printf("Has entrat %i\n",a);

printf("Has entrat 0x%X\n",a);

b=a;

or (i=7;i>=0;i--)

{

printf("%i ",i);

if (i==0)

num[i]=b;

else

{

num[i]=b%2;

b=b/2;

}

printf("num(i)%i__\n",num[i]);

}

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

// printf( "La posición del cursor es: (%d,%d)\r\n", wherex(), wherey() );

x=wherex();

y=wherey();

// printf("x=%i__y=%i__",x,y);

gotoxy(35,1);

textcolor(6);

printf("pesos");

gotoxy(35,2);

printf("128_ 64_ 32_ 16_ 8_ 4_ 2_ 1");

gotoxy(35,3);

textcolor(13);

for (i=0;i<8;i++)printf("__%i_",num[i]);

textcolor(15);

gotoxy(x,y);

getchar();

getchar();

return 0;

}