Lab 18/ HW 18
Lab 18 (Bluetooth):
HW 18 (Genome):
/* This program initializes a long character string and a short */
/* character string. It then prints the locations of the short */
/* string in the long string. It also prints the number of */
/* occurrences of the short string in the long string. */
#include <stdio.h>
#include <string.h>
#define SIZE 1000
#define FILENAME "string.txt"
int main(void)
{
/* Declare and initialize variables. */
int count=0;
char long_str[SIZE], short_str[SIZE];
char *ptr1=long_str, *ptr2=short_str;
FILE *string;
string = fopen(FILENAME, "r");
if (string == NULL)
{
printf("There is no file to read from.\n");
printf("Enter letters for the Long String:\n");
scanf("%s", &long_str);
printf("Enter letters for the Short String:\n");
scanf("%s", &short_str);
/* Count the number of occurrences of short_str in long_str. */
/* While the function strstr does not return NULL, increment */
/* count and move ptr1 to next character of the long string. */
printf("Long String: %s\n", long_str);
printf("Short String: %s\n", short_str);
while(strlen(ptr2) > strlen(ptr1))
{
printf("Cannot be longer than original string.:\n");
scanf("%s", &short_str);
}
while ((ptr1=strstr(ptr1,ptr2)) != NULL)
{
printf("location %i \n",ptr1-long_str+1);
count++;
ptr1++;
}
/* Print number of occurrences. */
printf("number of occurrences: %i \n",count);
}
else
{
fscanf(string, "%s", long_str);
printf("Long String: %s \n", long_str);
printf("Enter letters for the Short String:\n");
scanf("%s", &short_str);
while(strlen(ptr2) > strlen(ptr1))
{
printf("Cannot be longer than original string.:\n");
scanf("%s", &short_str);
}
printf("Long String: %s \n", long_str);
printf("Short String: %s\n", short_str);
while ((ptr1=strstr(ptr1,ptr2)) != NULL)
{
printf("location %i \n",ptr1-long_str+1);
count++;
ptr1++;
}
/* Print number of occurrences. */
printf("number of occurrences: %i \n",count);
}
fclose(string);
/* Exit program. */
return 0;
}
HW 18b (Fingerprint):
/* This program stores fingerprint information in a structure. */
/* It then references a function to compute the overall category.*/
#include <stdio.h>
/* Define a structure for the fingerprint information. */
/* The order for fingertips is right hand, thumb to pinky, */
/* and left hand, thumb to pinky. The codes are L for loops, */
/* W for whorls, and A for arches. */
struct fingerprint
{
int ID_number;
double overall_category;
char fingertip[10];
};
int arches;
int whorls;
int loops;
float total = 10;
float percent_a;
float percent_w;
float percent_l;
int main(void)
{
/* Declare and initialize variables. */
struct fingerprint new_print;
double compute_category(struct fingerprint f);
/* Specify information for the new fingerprint. */
new_print.ID_number = 2491009;
new_print.overall_category = 0;
new_print.fingertip[0] = 'W';
new_print.fingertip[1] = 'L';
new_print.fingertip[2] = 'L';
new_print.fingertip[3] = 'W';
new_print.fingertip[4] = 'A';
new_print.fingertip[5] = 'L';
new_print.fingertip[6] = 'L';
new_print.fingertip[7] = 'W';
new_print.fingertip[8] = 'A';
new_print.fingertip[9] = 'L';
for (int i = 0; new_print.fingertip[i] != '\0'; ++i)
{
if (new_print.fingertip[i] == 'W')
{
whorls++;
}
if (new_print.fingertip[i] == 'L')
{
loops++;
}
if (new_print.fingertip[i] == 'A')
{
arches++;
}
}
/* Reference function to compute overall category. */
new_print.overall_category = compute_category(new_print);
/* Print overall category computed by the function. */
printf("Fingerprint Analysis for ID: %i \n",
new_print.ID_number);
printf("Overall Category: %.2f \n",new_print.overall_category);
printf("Number of whorls: %i \n", whorls);
printf("Number of loops: %i \n", loops);
printf("Number of arches: %i \n", arches);
/* Exit program. */
return 0;
}
/*--------------------------------------------------------------*/
/* This function computes the overall category */
/* for a fingerprint. */
double compute_category(struct fingerprint f)
{
/* Declare and initialize variables. */
double Rt=0, Ri=0, Rm=0, Rr=0, Rp=0, Lt=0, Li=0, Lm=0, Lr=0,
Lp=0, num, den;
/* Set values based on whorls. */
if (f.fingertip[0] == 'W')
{
Rt = 16;
}
if (f.fingertip[1] == 'W')
{
Ri = 16;
}
if (f.fingertip[2] == 'W')
{
Rm = 8;
}
if (f.fingertip[3] == 'W')
{
Rr = 8;
}
if (f.fingertip[4] == 'W')
{
Rp = 4;
}
if (f.fingertip[5] == 'W')
{
Lt = 4;
}
if (f.fingertip[6] == 'W')
{
Li = 2;
}
if (f.fingertip[7] == 'W')
{
Lm = 2;
}
/* Compute the numerator and denominator for overall category. */
num = Ri + Rr + Lt + Lm + Lp + 1;
den = Rt + Rm + Rp + Li + Lr + 1;
return num/den;
}
HW 18 (Genome):
/* This program initializes a long character string and a short */
/* character string. It then prints the locations of the short */
/* string in the long string. It also prints the number of */
/* occurrences of the short string in the long string. */
#include <stdio.h>
#include <string.h>
#define SIZE 1000
#define FILENAME "string.txt"
int main(void)
{
/* Declare and initialize variables. */
int count=0;
char long_str[SIZE], short_str[SIZE];
char *ptr1=long_str, *ptr2=short_str;
FILE *string;
string = fopen(FILENAME, "r");
if (string == NULL)
{
printf("There is no file to read from.\n");
printf("Enter letters for the Long String:\n");
scanf("%s", &long_str);
printf("Enter letters for the Short String:\n");
scanf("%s", &short_str);
/* Count the number of occurrences of short_str in long_str. */
/* While the function strstr does not return NULL, increment */
/* count and move ptr1 to next character of the long string. */
printf("Long String: %s\n", long_str);
printf("Short String: %s\n", short_str);
while(strlen(ptr2) > strlen(ptr1))
{
printf("Cannot be longer than original string.:\n");
scanf("%s", &short_str);
}
while ((ptr1=strstr(ptr1,ptr2)) != NULL)
{
printf("location %i \n",ptr1-long_str+1);
count++;
ptr1++;
}
/* Print number of occurrences. */
printf("number of occurrences: %i \n",count);
}
else
{
fscanf(string, "%s", long_str);
printf("Long String: %s \n", long_str);
printf("Enter letters for the Short String:\n");
scanf("%s", &short_str);
while(strlen(ptr2) > strlen(ptr1))
{
printf("Cannot be longer than original string.:\n");
scanf("%s", &short_str);
}
printf("Long String: %s \n", long_str);
printf("Short String: %s\n", short_str);
while ((ptr1=strstr(ptr1,ptr2)) != NULL)
{
printf("location %i \n",ptr1-long_str+1);
count++;
ptr1++;
}
/* Print number of occurrences. */
printf("number of occurrences: %i \n",count);
}
fclose(string);
/* Exit program. */
return 0;
}
HW 18b (Fingerprint):
/* This program stores fingerprint information in a structure. */
/* It then references a function to compute the overall category.*/
#include <stdio.h>
/* Define a structure for the fingerprint information. */
/* The order for fingertips is right hand, thumb to pinky, */
/* and left hand, thumb to pinky. The codes are L for loops, */
/* W for whorls, and A for arches. */
struct fingerprint
{
int ID_number;
double overall_category;
char fingertip[10];
};
int arches;
int whorls;
int loops;
float total = 10;
float percent_a;
float percent_w;
float percent_l;
int main(void)
{
/* Declare and initialize variables. */
struct fingerprint new_print;
double compute_category(struct fingerprint f);
/* Specify information for the new fingerprint. */
new_print.ID_number = 2491009;
new_print.overall_category = 0;
new_print.fingertip[0] = 'W';
new_print.fingertip[1] = 'L';
new_print.fingertip[2] = 'L';
new_print.fingertip[3] = 'W';
new_print.fingertip[4] = 'A';
new_print.fingertip[5] = 'L';
new_print.fingertip[6] = 'L';
new_print.fingertip[7] = 'W';
new_print.fingertip[8] = 'A';
new_print.fingertip[9] = 'L';
for (int i = 0; new_print.fingertip[i] != '\0'; ++i)
{
if (new_print.fingertip[i] == 'W')
{
whorls++;
}
if (new_print.fingertip[i] == 'L')
{
loops++;
}
if (new_print.fingertip[i] == 'A')
{
arches++;
}
}
/* Reference function to compute overall category. */
new_print.overall_category = compute_category(new_print);
/* Print overall category computed by the function. */
printf("Fingerprint Analysis for ID: %i \n",
new_print.ID_number);
printf("Overall Category: %.2f \n",new_print.overall_category);
printf("Number of whorls: %i \n", whorls);
printf("Number of loops: %i \n", loops);
printf("Number of arches: %i \n", arches);
/* Exit program. */
return 0;
}
/*--------------------------------------------------------------*/
/* This function computes the overall category */
/* for a fingerprint. */
double compute_category(struct fingerprint f)
{
/* Declare and initialize variables. */
double Rt=0, Ri=0, Rm=0, Rr=0, Rp=0, Lt=0, Li=0, Lm=0, Lr=0,
Lp=0, num, den;
/* Set values based on whorls. */
if (f.fingertip[0] == 'W')
{
Rt = 16;
}
if (f.fingertip[1] == 'W')
{
Ri = 16;
}
if (f.fingertip[2] == 'W')
{
Rm = 8;
}
if (f.fingertip[3] == 'W')
{
Rr = 8;
}
if (f.fingertip[4] == 'W')
{
Rp = 4;
}
if (f.fingertip[5] == 'W')
{
Lt = 4;
}
if (f.fingertip[6] == 'W')
{
Li = 2;
}
if (f.fingertip[7] == 'W')
{
Lm = 2;
}
/* Compute the numerator and denominator for overall category. */
num = Ri + Rr + Lt + Lm + Lp + 1;
den = Rt + Rm + Rp + Li + Lr + 1;
return num/den;
}
Comments
Post a Comment