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

Definiu un projecte nou anomenat m2p06 i afegiu-li un fitxer de font C/C++ anomenat m2p06.cpp. Escriviu el següent codi:

//m2p06.cpp: operadors relacionals i lògics

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

void main (){

   int num;

  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("es 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);

}

 

Explicació del programa

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.