Tag Archives: #Quiz06

Quiz Week 6: Multiple exercises in an only quiz

The quiz for today consited in five exercises that we had to do during the class, which came from a page called C/C++ PROGRAMMING EXERCISES (they were the first five ones).

In the first problem, we had to modify a determinated code to make it work. The original code was:

#include 
main()
{ /* PROGRAM TO PRINT OUT SPACE RESERVED FOR VARIABLES */
    char c;  
    short s;  
    int i;  
    unsigned int ui;  
    unsigned long int ul; 
    float f;
    double d;  
    long double ld;  
    cout << endl 
         << "The storage space for each variable type is:"
         << endl;
    cout << endl << "char: \t\t\t%d bits",sizeof(c)*8;  //  \t means tab 
    cout << endl << "short: \t\t\t%d bits",sizeof(s)*8;
    cout << endl << "int: \t\t\t%d bits",sizeof(i)*8;
    cout << endl << "unsigned int: \t\t%d bits",sizeof(ui)*8;
    cout << endl << "unsigned long int: \t%d bits",sizeof(ul)*8;
    cout << endl << "float: \t\t\t%d bits",sizeof(f)*8;
    cout << endl << "double: \t\t%d bits",sizeof(d)*8;
    cout << endl << "long double: \t\t%d bits",sizeof(ld)*8;

I opted for changing cout for printf, adding the stdio.h  and iostrem libraries, as well as the line using namespace std; and declaring main as int. I consulted the page that our professor recommended to learn more about printf. It should be mentioned that what this program does is showing the number of bits that a type of value can store. My final code is the following one:

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{ /* PROGRAM TO PRINT OUT SPACE RESERVED FOR VARIABLES */
    char c;
    short s;
    int i;
    unsigned int ui;
    unsigned long int ul;
    float f;
    double d;
    long double ld;
    cout << endl
           << "The storage space for each variable type is:"
         << endl;

    printf("char \t\t\t%d bits\n",int (sizeof(c)*8));
    printf("short: \t\t\t%d bits\n",int (sizeof(s)*8));
    printf("int: \t\t\t%d bits\n",int (sizeof(i)*8));
    printf("unsigned int: \t\t%d bits\n",int (sizeof(ui)*8));
    printf("unsigned long int: \t%d bits\n",int (sizeof(ul)*8));
    printf("float: \t\t\t%d bits\n",int (sizeof(f)*8));
    printf("double: \t\t%d bits\n",int (sizeof(d)*8));
    printf("double: \t\t%d bits\n",int (sizeof(d)*8));
    printf("long double: \t\t%d bits\n",int (sizeof(ld)*8));
}

The second exercise was about casting types of values to other one, and return taken values. I have to recognize that I didn’t know what to do at the first, but after meditating on it a little, I realized that it wasn’t difficult at all. I just had to use printf again and specify that I wanted to convert a variable to another type different to the one that it was declared at the first. The utilized types were char, int and float. The next code is the one that I made for this problem:

#include <iostream>
#include <stdio.h>
using namespace std;

int main(){
  char C;
  int I;
  float F;

  cout << "Input a single character, followed by : ";
  cin.get(C);
  cout << "Input an integer, followed by : ";
  cin >> I;
  cout << "Input a float, followed by : ";
  cin >> F;

  printf("The character %c when cast to an int gives value %d\n",C,int(C));
  printf("The character %c when cast to a float gives value %f\n",C,float(C));
  printf("The integer %d when cast to a char gives value %c\n",I,char(I));
  printf("The integer %d when cast to a float gives value %f\n",I,float(I));
  printf("The float %f when cast to a char gives value %c\n",F,int(F));
  printf("The float %f when cast to an int gives value %d\n",F,int(F));
  return 0;
}

The third exercise only required to print a given pattern. This was my code (you will notice that it is very short and simple):

#include <iostream>
using namespace std;

int main(){
  cout << "            C" << endl;
  cout << "          i   I" << endl;
  cout << "        s       s" << endl;
  cout << "      b           b" << endl;
  cout << "    e               e" << endl;
  cout << "  s                   s" << endl;
  cout << "t s e b s i C i s b e s t" << endl;
return 0;
}

The next exercise is a little more complicated, because it’s about ordering three numbers in ascending order so I made three different functions (first, second and last term) and each one contained conditionals, so my program resulted a little long (relatively).

#include <iostream>
using namespace std;

int minor(int x, int y, int z)
{
  int m;
  if (x<=y && x<=z)
    m=x;
  else if (y<=x && y<=z)
    m=y;
  else if (z<=x && z<=y)
    m=z;
  return m;
}

int medium(int x, int y, int z)
{
  int m;
  if ((x>=y && x<=z) || (x>=z && x<=y))
    m=x;
  else if ((y>=x && y<=z) || (y>=z && y<=x))
    m=y;
  else if ((z>=x && z<=y) || (z>=y && z<=x))
    m=z;
  return m;
}

int maximum(int x, int y, int z)
{
  int m;
  if (x>=y && x>=z)
    m=x;
  else if (y>=x && y>=z)
    m=y;
  else if (z>=x && z>=y)
    m=z;
  return m;
}

int main()
{
  int a, b, c, P, S, T;
  cout << "Number 1: ";
  cin >> a;
  cout << "Number 2: ";
  cin >> b;
  cout << "Number 3: ";
  cin >> c;

  P=minor(a,b,c);
  S=medium(a,b,c);
  T=maximum(a,b,c);

  cout << "\n\nThose numbers, in ascending order, are: \n" << P << endl << S << endl << T << endl;
  return 0;
}

Finally, the last problem I had to solve was this one:

“Given the following rules, write a program to read a year (4 digit integer) and tell whether the given year is/was a leap year.

  1. There were no leap years before 1752.
  2. If the year divides by 400 then it is a leap year.
  3. All other years that divide by 100 are not leap years.
  4. All other years that divide by four are leap years.

For example, 1800,1900 were not leap years but 2000 will be; 1904, 1908,…,1996 were/will be leap years.”

I had some problemas with my logic because I wanted to integrate all the “rules” at once, but I couldn’t do it since the program didn’t return the right values. Therefore I added some if’s, else if’s and nested conditionals to make it work. This was the result:

#include <iostream>
#include <string>
using namespace std;

string leap(int Y)
{
  string R;
  if (Y<1752)
    R="That year was/will be NOT a leap year\n";
  else if ((Y%100)==0)
  {
    if ((Y%400)==0)
      R="That year was/will be a leap year\n";
    else
      R="That year was/will be NOT a leap year\n";
  }
  else if ((Y%4)==0)
    R="That year was/will be a leap year\n";
  else
    R="That year was/will be a NOT leap year\n";

  return R;
}

int main()
{
  int Y;
  cout << "Year: ";
  cin >> Y;
  cout << leap (Y);
  return 0;
}

Well, this is all we do during the large quiz of the week six…

See you soon…