Enrere Mòdul 2
Fonaments de Programació. Llenguatge C/C++---
Pràctica  Resum teòric Exercicis
Pràctica d'ampliació

 
Operadors relacionals. Comprovació de condicions

En aquesta pràctica aprendrem a usar simultàniament operadors relacionals i lògics. 

 

Desenvolupament de la pràctica

Creeu un nou arxiu del tipus C anomenat m2p06.c i escriviu el següent codi:

//m2p06.c - operadors relacionals i lògics -

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

int main (){

int num;
system("clear");

printf("introduïu un número. Si el número introduït\n");
printf("es troba entre 5 i 10 escriurà  un 1,en cas\n");
printf("contrari escriurà  un 0\n");
scanf("%d",&num);
printf("%d\n",(num>5)&&(num<10));

printf("\nintroduïu un número. Si el número introduït\n");
printf("és múltiple de 3 escriurà  un 1,en cas\n");
printf("contrari escriurà  un 0\n");
scanf("%d",&num);
printf("%d\n",num%3==0);

printf("\nintroduïu un número. Si el número introduït\n");
printf("està  a l'interval [0,3]U[10,13] escriurà  1,en cas\n");
printf("contrari escriurà  un 0\n");
scanf("%d",&num);
printf("%d\n",((num>=0)&&(num<=3))||((num>=10)&&(num<=13)));

printf("\nintroduïu un número. Si el número introduït\n");
printf("es un quadrat perfecte escriurà  1,en cas\n");
printf("contrari escriurà un 0\n");
scanf("%d",&num);
printf("%d\n",(int)(sqrt(num))-sqrt(num)==0);
return 0;

}

Captura de l'execució del programa.

 

 Explicació del programa

La funció sqrt(num) que utilitzem dins el darrer printf() de'aquesta pràctica implica tenir que inserir l'arxiu de capçalera  #include <math.h>. Recordeu com hem vist en la pràctica 6 del mòdul 1, que hem de modificar les ordres de compilació que trobareu en Paràmetres/Comandes del menú principal d'Anjuta i afegir  -lm. Si treballeu amb el terminal cal compilar com

                            gcc -lm   m2p06.c   -o   m2p06

En aquest programa es demana a l'usuari que introdueixi un número enter i amb els operadors de relació i lògics comprovarem si el número introduït satisfà algunes condicions:

 

printf("%d\n",(num>5)&&(num<10));

Aquesta línia imprimirà un 1 si l'expressió: (num>5)&&(num<10) és certa, és a dir, si el número introduït es troba entre 5 i 10, ambdós exclosos.

 

printf("%d\n",num%3==0);

Aquesta línia imprimirà un 1 si l'expressió: num%3==0. % és un operador aritmètic que torna la resta de la divisió entera entre num i 3. En el cas que num sigui múltiple de 3, l'expressió num%3 serà 0, i per tant, l'expressió relacional num%3==0 serà 1 (veritat).

 

printf("%d\n",((num>=0)&&(num<=3))||((num>=10)&&(num<=13)));

Aquesta línia imprimirà 1 si l'expressió:((num>=0)&&(num<=3))||((num>=10)&&(num<=13)) és vertadera i això succeirà en el cas que num estigui entre 0 i 3, ambdós inclosos, o bé entre 10 i 13, ambdós inclosos.

 

printf("%d\n",(int)(sqrt(num))-sqrt(num)==0);

Per últim, aquesta línia imprimirà un 1 si l'expressió int(sqrt(num))-sqrt(num)==0 és certa, és a dir, si l'arrel quadrada de num és entera (si num és un quadrat perfecte). int(sqrt(num)) és la part entera de sqrt(num), per tant, si la diferència entre un número i la seva part entera és 0, aquest número és enter. En aquesta expressió es fa servir la funció sqrt() la declaració de la qual es troba al fitxer d'encapçalament math.h.