Principles of Computer Programming

From David Vernon's Wiki
Revision as of 12:19, 27 January 2017 by Dvernon (Talk | contribs)

Jump to: navigation, search

Here are some code segments for the examples in the course on principles of computer programming.

/* Example 1                                       */
/* This is a C program to ask you to type a letter */
/* and then to tell you what you typed             */

#include <stdio.h>

main() { 
   char letter;

   printf(“Please type a letter & then press Return >>”);
   scanf(“%c”,&letter);
   printf(“You typed the letter %c”, letter);
}
/* Example 2                                       */
/* This is a C program to ask you to enter two     */
/* numbers; it then compares them and prints a     */
/* message to say whether they are equal or not    */

#include <stdio.h> 

main() {
 
   int first_number, second_number;

   printf(“Type a number and then press Enter >>”);
   scanf(“%d”,&first_number);

  printf(“Type another number and then press Enter >>”);
  scanf(“%d”,&second_number);

  if (first_number == second_number) 
     printf(“The two numbers %d are identical”, first_number);
  else
     printf(“The two numbers %d and %d are different”,  first_number, second_number);
}
/* Example 2b                                                          */
/* This is a C program to ask you to enter three   */
/* numbers; it then compares them and prints a   */
/* message to say whether they are equal or not  */  

#include <stdio.h> 

void main() {

   int first_number, second_number, third_number;

   printf("Please type three numbers .... \n");
   printf("Enter the first number >>");
   scanf("%d",&first_number);

   printf("Enter the second number >>");
   scanf("%d",&second_number);

   printf("Enter the third number >>");
   scanf("%d",&third_number);


   if (first_number == second_number)
      if (second_number == third_number)
         printf("The three numbers %d are identical", 
                 first_number);

   if (first_number != second_number)
      if (second_number != third_number)
         if (first_number != third_number)
            printf("The three numbers %d %d %d are all different", 
                   first_number, second_number, third_number);
 
} 
/* Example 3                                         */
/* Compute the total value of 7 Scrabble letters     */
/* Input:  the user is prompted to enter each letter */
/*         in turn                                   */
/* Output: the program prints the sum of the seven   */
/*         individual letter values                  */
 
#include <stdio.h> 
#include <ctype.h>

#define TRUE  1 
#define FALSE 0

void main() {

   char letter, enter;
   int scrabble_value, 
       total_scrabble_value,   
       i;   /*  not the same as 'i'  */
   int debug; 


   /* debug is a flag.  If it is TRUE we will execute some printf */
   /* statements to help see what the program is doing.           */
   /* if it is FALSE, we won't!                                   */

   debug = TRUE;

   /* initialize variables */
   total_scrabble_value = 0;
   scrabble_value = 0;
   /* use a for loop to read seven values*/
   for (i=0; i < 7; i++) 
   {
      printf("Please type a letter and then press Return >>");
      scanf("%c",&letter);
      scanf("%c",&enter);        /* skip enter character */

      letter = toupper(letter);  /* convert the letter to uppercase    */
                                 /* note this works even if the letter */
                                 /* is already in upper case           */

      if ((letter == 'A') || 
          (letter == 'E') ||
          (letter == 'I') || 
          (letter == 'L') || 
          (letter == 'N') || 
          (letter == 'O') || 
          (letter == 'R') || 
          (letter == 'S') || 
          (letter == 'T') || 
          (letter == 'U')) 

      {
         scrabble_value = 1;
         if (debug == TRUE)
            printf("the letter %c has the value %d\n", letter, scrabble_value);
      }
      else 
         if ((letter == 'D') || 
             (letter == 'G')) 
         {
            scrabble_value = 2;
            if (debug == TRUE) {
               printf("the letter %c has the value %d\n", letter, scrabble_value);
            } 
         } 
         else 
            if ((letter == 'B') || 
                (letter == 'C') || 
                (letter == 'M') || 
                (letter == 'P')) 
            { 
               scrabble_value = 3;
               if (debug == TRUE)
                  printf("the letter %c has the value %d\n", letter, scrabble_value);
            } 
            else 
               if ((letter == 'F') || 
                   (letter == 'H') || 
                   (letter == 'V') || 
                   (letter == 'W') || 
                   (letter == 'Y')) 
               { 
                 scrabble_value = 4;
                  if (debug == TRUE)
                     printf("the letter %c has the value %d\n", letter, scrabble_value);
               } 
               else 
                  if ((letter == 'K')) 
                  {
                     scrabble_value = 5;
                     if (debug == TRUE)
                        printf("the letter %c has the value %d\n", letter, scrabble_value);
                  } 
                  else 
                     if ((letter == 'J') || 
                         (letter == 'X') ) 
                     {
                        scrabble_value = 8;
                        if (debug == TRUE)
                           printf("the letter %c has the value %d\n", letter, scrabble_value);
                     } 
                     else 
                        if ((letter == 'Z') || 
                            (letter == 'Q') ) 
                        {
                           scrabble_value = 10;
                           if (debug == TRUE)
                              printf("the letter %c has the value %d\n", letter, scrabble_value);
                        } 
   
                        else

                           printf("You typed the character %c ... that's not allowed\n", letter);

      /* now add the value to the total */
      
      total_scrabble_value = total_scrabble_value + scrabble_value;
  }  
 
   printf("The Scrabble value of the seven letters is %d", 
           total_scrabble_value);
} 


/* Example 3                                         */
/* Compute the total value of 7 Scrabble letters     */
/* Input:  the user is prompted to enter each letter */
/*         in turn                                   */
/* Output: the program prints the sum of the seven   */
/*         individual letter values                  */
 
#include <stdio.h> 
#include <ctype.h>

#define TRUE  1
#define FALSE 0

void main() {

   char letter, enter;
   int scrabble_value, 
       total_scrabble_value,   
       i;   /*  not the same as 'i'  */
   int debug;


   /* debug is a flag.  If it is TRUE we will execute some printf */
   /* statements to help see what the program is doing.           */
   /* if it is FALSE, we won't!                                   */

   debug = TRUE;

   /* initialize variables */

   total_scrabble_value = 0;
   scrabble_value = 0;

   /* use a for loop to read seven values*/

   for (i=0; i < 7; i++) 
   {
      printf("Please type a letter and then press Return >>");
      scanf("%c",&letter);
      scanf("%c",&enter);        /* skip enter character */

      letter = toupper(letter);  /* convert the letter to uppercase    */
                                 /* note this works even if the letter */
                                 /* is already in upper case           */


      switch (letter) {

         case 'A':
         case 'E':
         case 'I':
         case 'L':
         case 'N':
         case 'O':
         case 'R':
         case 'S':
         case 'T':
         case 'U':  scrabble_value = 1;
                    if (debug == TRUE)
                       printf("the letter %c has the value %d\n", letter, scrabble_value);
                    break;

         case 'D':
         case 'G':  scrabble_value = 2;
                    if (debug == TRUE) {
                       printf("the letter %c has the value %d\n", letter, scrabble_value);
                    }
                    break;

         case 'B':
         case 'C':  
         case 'M':
         case 'P':  scrabble_value = 3;
                    if (debug == TRUE)
                       printf("the letter %c has the value %d\n", letter, scrabble_value);
                    break;

         case 'F':
         case 'H':  
         case 'V':
         case 'W':  
         case 'Y':  scrabble_value = 4;
                    if (debug == TRUE)
                        printf("the letter %c has the value %d\n", letter, scrabble_value);
                    break;

         case 'K':  scrabble_value = 5;
                    if (debug == TRUE)
                       printf("the letter %c has the value %d\n", letter, scrabble_value);
                    break;

         case 'J':
         case 'X':  scrabble_value = 8;
                    if (debug == TRUE)
                       printf("the letter %c has the value %d\n", letter, scrabble_value);
                    break;

         case 'Z':
         case 'Q':  scrabble_value = 10;
                    if (debug == TRUE)
                        printf("the letter %c has the value %d\n", letter, scrabble_value);
                    break;

         default:   printf("You typed the character %c ... that's not allowed\n", letter);
                    break;

      } /* end of the switch statement */

      /* now add the value to the total */
      
      total_scrabble_value = total_scrabble_value + scrabble_value;
   }

   printf("The Scrabble value of the seven letters is %d", 
           total_scrabble_value);
} 

/* A program to prompt the user three times and reads three numbers. */
/* It compare these three numbers and tell the user whether          */
/*                                                                   */
/* - all three numbers are the same                                  */
/* - all three numbers are different                                 */
/* - just two numbers are the same                                   */
/*   in this case, it also tells the user which two numbers they are */
/*                                                                   */
/* The program continues to ask the user for input until he enters   */
/* three zeros.                                                      */   

#include <stdio.h> 

#define TRUE  1
#define FALSE 0

void main() {
   int n1, n2, n3;

   /* give the numbers initial values */

   n1 = 1; 
   n2 = 1; 
   n3 = 1;

   /* while the three numbers are not all zero */

   while ((n1 != 0) && (n2 != 0) && (n3 != 0)) {
 
      printf("Please enter the first number  >>");
      scanf("%d",&n1);
  
      printf("Please enter the second number >>");
      scanf("%d",&n2);

      printf("Please enter the third number  >>");
      scanf("%d",&n3);

      
      /* check to see if they are all the same */

      if ((n1 == n2) && (n2 == n3) && (n1 == n3)) {
         printf(" The three numbers are all the same. \n"); 
      } 
      else {
         if ((n1 != n2) && (n2 != n3) && (n1 != n3)) {

printf("The three numbers are all the different.\n"); }

         else {
     
            /* two are the same -  which are they? */

            if (n1 == n2) {
	            printf("The first and second numbers are the same: %d\n”,
               n1, n2);
	         }
	         else {
	            if (n2 == n3) {
	               printf("The second and third numbers are the same: %d\n",
                  n2, n3);
	            }

	            else {  /* no need to check if the first and third    */
		               /* are the same ... it's the only possibility */
        	    printf("The first and third numbers are the same:%d\n",
                   n1, n2);                                                         
	            }
	         }
	      }
       }
    }
}  
/* a program to call a function called max */
/* max returns the maximum of two floating point numbers */ 

#include <stdio.h>

float max(float a, float b)
{
    float  c;  /* local variable */
   if (a >  b) {
      c = a;  
   }
  else {
    c = b;   
  }
  return(c);
} 



void main()
{
   FILE *fp_in, *fp_out; 

   float x, y, z;
   int end_of_file;
 

   /* open the files */
   /* no checking for the moment */

   fp_in = fopen("input.txt", "r");
   fp_out = fopen("max.txt", "w");


   end_of_file = fscanf(fp_in, "%f %f", &x, &y);
   while (end_of_file != EOF) 
   {

      z = max(x, y);
      fprintf(fp_out, "%5.2f\n ", z);

     end_of_file = fscanf(fp_in, "%f %f", &x, &y);

   };


   fclose(fp_in);
   fclose(fp_out);

}


/* Program to read pairs of numbers from the input file    */
/* and calls a function max which returns the maximum of   */
/* of two floating point numbers.                          */
/* This maximum is then written to an output file          */
/* the input file is read until we reach the end of file   */


#include <stdio.h>

float max(float a, float b)
{
  float  c;  /* local variable */ 

  if (a >  b) {
    c = a;  
  } 
  else {
    c = b;   
  } 
  return(c);
}
void main()
{
   FILE *fp_in, *fp_out;

   float x, y, z;
   int end_of_file;


   /* open the files             */
   /* no checking for the moment */

   fp_in = fopen("input.txt", "r");
   fp_out = fopen("max.txt", "w");


   /* read until we reach the end of file ... version A */

   end_of_file = fscanf(fp_in, "%f %f", &x, &y);
   while (end_of_file != EOF) 
   {
      z = max(x, y);
      fprintf(fp_out, "%5.2f\n ", z);

      end_of_file = fscanf(fp_in, "%f %f", &x, &y);

   };

   /* read until we reach the end of file ... version B */
   /* note: this version is equivalent to version A     */
   /* but it puts the fscanf in the while condition     */

   /*   while (fscanf(fp_in, "%f %f", &x, &y) != EOF)   */
   /*   {                                               */
   /*      z = max(x, y);                               */
   /*      fprintf(fp_out, "%5.2f\n ", z);              */
   /*    };                                              */
   fclose(fp_in);
   fclose(fp_out);

}


/* Program to read a sequence of numbers from the input file,    */
/* compute the average of the numbers (ignoring zeros)           */
/* replace all occurrences of zero with the average              */
/* and write the numbers to an output file                       */

/* Note: we use four loops ... we could use fewer but it         */
/* means doing more than one thing in each loop ...              */
/* we will do this next day.                                     */

#include <stdio.h>

#define MAX 100

void main()
{
   FILE *fp_in, *fp_out;

   float numbers[MAX];
   float average, sum=0;
   int n, count, i, non_zeros;
   int end_of_file;


   /* open the files             */
   /* no checking for the moment */

   fp_in = fopen("input.txt", "r");
   fp_out = fopen("output.txt", "w");


   /* read until we reach the end of file ... version A */
   /* store all the numbers in an array                 */

   count= 0;
   end_of_file = fscanf(fp_in, "%d", &n);
   while (end_of_file != EOF) 
   { 
      numbers[count] = n;
      count = count + 1;
      end_of_file = fscanf(fp_in, "%d", &n);
   } 

   /* the integers are in the array numbers and the variable count */
   /* hold the number we read                                      */

   /* find the average but ignore the zeros */

   sum = 0;
   non_zeros = 0;
   for (i=0; i<count; i++)
   { 
     if (numbers[i] != 0) {
        sum = sum + numbers[i];
        non_zeros = non_zeros + 1;
     } 
   }
   average = sum / non_zeros; 


   /* replace the zero with the average */

   for (i=0; i<count; i++)
   {
     if (numbers[i] == 0) {
        numbers[i]= average;
     }
   } 
 

   /* write out all the numbers to the output file */

   for (i=0; i<count; i++)
   {
     fprintf(fp_out, "%f ", numbers[i]);
   } 
 
   fclose(fp_in);
   fclose(fp_out);
}