Subject: PRF192-PFC Workshop 07: Objectives: Managing Strings Managing Parallel Arrays
Subject: PRF192-PFC Workshop 07: Objectives: Managing Strings Managing Parallel Arrays
Workshop 07
Objectives:
Managing strings
Managing parallel arrays
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
const int MAX = 100;
void showMenu(void);
void addNewStudent(char id[][MAX], char name[][MAX],
int yob[], double point[], int *size);
int findIndexOfStudent(char id[][MAX], int size, char key[]); void
removeStudentByPos(char id[][MAX], char name[][MAX],
int yob[], double point[], int *size);
int main()
{
char id[MAX][9];
char name[MAX][40];
int yob[MAX];
double point[MAX];
int size = 0;
int choose;
char buffer;
do{
showMenu();
do{ //ep nguoi dung nhap so nguyen
printf("\n plz input your choose: ");
scanf("%d", &choose); scanf("%c",
&buffer);
fflush(stdin);
if(buffer != 10)
{
printf("\n do you know input integer number !!!");
}
}while(buffer != 10);
switch(choose){ // chon option
case 1:{
printf("\n ");
addNewStudent(id, name, yob, point, &size); printf("\
n");
break;
}
case 2:{
printf("\n ");
removeStudentByPos(id, name, yob, point, &size);
printf("\n");
break;
}
case 3:{
printf("\n "); showInforByPos(id,
name, yob, point, size); printf("\n");
break;
}
case 4:{
printf("\n "); sortStudent(id,
name, yob, point, size); printf("\n");
break;
}
case 5:{
printf("\n ");
printf("\nHave a nice day!");
return;
break;
}default:{
printf("\n Plz, input from 1 to 5 !!!");
}
}
}while(choose != 7);
(*size)++;
void showInforByPos(char id[][MAX], char name[][MAX], int yob[], double point[], int
size){
char key[MAX];
printf("\n plz, input id you need: ");
gets(key);
int pos = findIndexOfStudent(id, size, key);
if(pos == -1){
printf("\n Your student not existed");
}else{
printf("\n|%-8s|%-20s|%4d|%5.2lf|",
id[pos], name[pos], yob[pos], point[pos]);
};
}
void sortStudent(char id[][MAX], char name[][MAX], int yob[], double point[], int size){
for(int i = 0;i <= size-1; i++){
for(int j =size-1; j>i; j--){
if( point [i] >= point[j]){
double tmp = point[i];
point[i] = point[j];
point[j] = tmp;
char strTmp[MAX];
strcpy(strTmp, id[i]);
strcpy(id[i], id[j]);
strcpy(id[j], strTmp);
strcpy(strTmp, name[i]);
strcpy(name[i], name[j]);
strcpy(name[j], strTmp);
}
}
}
showStudentList(id, name, yob, point, size);
}
int i, cd=strlen(tmp);
for(i=vt;i<cd;i++)
tmp[i]=tmp[i+1];
strcpy(name, tmp);
}
void chuanhoa(char name[][MAX])
{
char tmp[MAX];
strcpy(tmp,name);
strcpy(name, tmp);
viethoa(name);
}
Problem 2: (3 marks) Managing a parallel arrays
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
const int MAX = 100;
void showMenu(void);
void addNewAnEmployee(char code[][MAX], char name[][MAX],
double salary[], double allowance[], int *size);
int findIndexOfEmployee(char code[][MAX], int size, char key[]); void
removeEmployeeByPos(char code[][MAX], char name[][MAX],
double point[], double allowance[], int *size);
void showInforByPos(char code[][MAX], char name[][MAX], double salary[], double
allowance[], int size);
void sortEmployee(char code[][MAX], char name[][MAX], double salary[], double
allowance[], int size);
void showEmployeeList(char code[][MAX], char name[][MAX],
double salary[], double allowance[], int size);
int main()
{
char code[MAX][9];
char name[MAX][40];
double salary[MAX];
double allowance[MAX];
int size = 0;
int choose;
char buffer;
do{
showMenu();
do{ //ep nguoi dung nhap so nguyen
printf("\n plz input your choose: ");
scanf("%d", &choose); scanf("%c",
&buffer);
fflush(stdin);
if(buffer != 10)
{
printf("\n do you know input integer number !!!");
}
}while(buffer != 10);
switch(choose){ // chon option
case 1:{
printf("\n ");
addNewAnEmployee(code, name, salary, allowance, &size); printf("\n");
break;
}
case 2:{
printf("\n ");
showInforByPos(code, name, salary, allowance, size);
printf("\n");
break;
}
case 3:{
printf("\n ");
removeEmployeeByPos(code, name, salary, allowance, &size); printf("\n");
break;
}
case 4:{
printf("\n ");
sortEmployee(code, name, salary, allowance, size);
printf("\n");
break;
}
case 5:{
printf("\n ");
printf("\nHave a nice day!");
return;
break;
}default:{
printf("\n Plz, input from 1 to 5 !!!");
}
}
}while(choose != 7);
};
}
char strTmp[MAX];
strcpy(strTmp, code[i]);
strcpy(code[i], code[j]);
strcpy(code[j], strTmp);
strcpy(strTmp, name[i]);
strcpy(name[i], name[j]);
strcpy(name[j], strTmp);
}
}
}
showEmployeeList(code, name, salary, allowance, size);
}
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#define MAX 100
void add(char name[][20],char make[][20],int volume[],int price[],int duration[],int &n)
{
n++;
printf("please enter the %dth name: ",n);
fflush(stdin);
scanf("%[^\n]",name[n]);
printf("please enter the %dth make: ",n);
fflush(stdin);
scanf("%[^\n]",make[n]);
printf("please enter the %dth volumn: ",n);
fflush(stdin);
scanf("%d",&volume[n]);
printf("please enter the %dth price: ",n);
fflush(stdin);
scanf("%d",&price[n]);
printf("please enter the %dth duration: ",n); fflush(stdin);
scanf("%d",&duration[n]);
char b[MAX];
strcpy(b,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],b);
char a[MAX];
strcpy(a,make[i]);
strcpy(make[i],make[j]);
strcpy(make[j],a);
int tmp=duration[i];
duration[i]=duration[j];
duration[j]=duration[i];
int tmp1=volume[i];
volume[i]=volume[j];
volume[j]=tmp1;
}
}
}
for(int i=0; i<=n; i++)
{
for(int j=i+1; j<=n; j++)
{
if(volume[i]==volume[j])
{
if(price[i]>price[j])
{
int t=price[i];
price[i]=price[j];
price[j]=t;
char b[MAX];
strcpy(b,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],b);
char a[MAX];
strcpy(a,make[i]);
strcpy(make[i],make[j]);
strcpy(make[j],a);
int tmp=duration[i];
duration[i]=duration[j];
duration[j]=duration[i];
int tmp1=volume[i];
volume[i]=volume[j];
volume[j]=tmp1;
}
}
}
}
print(name,make,volume,price,duration,n);
}
int main()
{
int ch;
int n=-1;
do
{
printf("1-Adding a new soft drink\n");
printf("2-Printing out items which belong to a known make\n");
printf("3-Printing out items whose volumes are between v1 and v2
( integers)\n");
printf("4-Printing the list in ascending order based on volumes then prices.\n");
printf("Please enter your choice: ");
fflush(stdin);
scanf("%d",&ch);
char make[MAX][20],name[MAX][20];
int duration[MAX],volume[MAX],price[MAX];
switch(ch)
{
case 1:
{
add(name,make,volume,price,duration,n);
break;
}
case 2:
{
FindItem(name,make,volume,price,duration,n); break;
}
case 3:
{
printVolume(name,make,volume,price,duration,n); break;
}
case 4:
{
sort(name,make,volume,price,duration,n);
break;
}
}
}
while(ch>=1 && ch<=4);
return 0;
}