programming/c,c++

C언어::최종과제

krystalS2ee 2020. 3. 26. 02:23

최종 과제

 

 

프로젝트1.

 

 

 

 

[mylib.h 파일]

 

#ifndef _MYLIB_H_

#define _MYLIB_H_
#include<stdio.h>
void data_input(int *a, int *b);
int get_sum(int a, int b);
void res_print(int res);

#endif

 

 

 

 

[main.c 파일]

 


#include"mylib.h"
int main()
{
 int a, b;
 int res;

 data_input(&a, &b);
 res = get_sum(a, b);
 res_print(res);

 return 0;
}

 

 

 

 

 

[mylib.c 파일]

 


#include"mylib.h"
void data_input(int *a, int *b)
{
 printf("정수 두 개 입력: ");
 scanf("%d%d", a, b);
}
int get_sum(int a, int b)
{
 return a + b;
}
void res_print(int res)
{
 printf("두 수의 합은 : %d\n", res);
}

 

 

 

 

 

 

 

 

프로젝트2.

 

 

 

 

[mylib.h]파일

 


#ifndef _MYLIB_H_
#define _MYLIB_H_
#define SIZE 5
#include<stdio.h>
void input_data(int *pa);
int get_max(int *pa, int cnt);
int get_min(int *pa, int cnt);
void res_print(int max, int min);
#endif

 

 

 

 

 

[main.c]파일

 


#include"mylib.h"
int main()
{
 int arr[SIZE];
 int max, min;
 int size;

 size = sizeof(arr) / sizeof(arr[0]);
 input_data(arr);
 max = get_max(arr, size);
 min = get_min(arr, size);
 res_print(max, min);

 return 0;
}

 

 

 

 

 

[mylib.c]파일

 


#include"mylib.h"
void input_data(int *pa)
{
 int i;

 for (i = 0; i < 5; i++)
 {
  printf("%d번째 정수 입력:", i + 1);
  scanf("%d", pa + i);
 }
}
int get_max(int *pa,int cnt)
{
 int i;
 int max=pa[0];

 for (i = 1; i < cnt; i++)
 {
  if (max < pa[i]) max = pa[i];
 }

 return max;
}
int get_min(int *pa, int cnt)
{
 int i;
 int min = pa[0];

 for (i = 0; i < cnt; i++)
 {
  if (min > pa[i]) min = pa[i];
 }

 return min;
}
void res_print(int max, int min)
{
 printf("가장 큰 수:%d, 가장 작은 수: %d\n", max, min);
}

 

 

 

 

 

 

프로젝트3.

 

 

[mylib.h]파일

 


#ifndef _MYLIB_H_
#define _MYLIB_H_
#define SIZE 5
#include<stdio.h>
void input_data(int *pa);
void buble_sort(int *pa);
void res_print(int *pa);
#endif

 

 

 

 

[main.c]파일

 


#include"mylib.h"
int main()
{
 int arr[SIZE];

 input_data(arr);
 buble_sort(arr, SIZE);
 res_print(arr, SIZE);

 return 0;
}

 

 

 

[mylib.c]파일

 


#include"mylib.h"
void input_data(int *pa)
{
 int i;

 for (i = 0; i < 5; i++)
 {
  printf("%d번째 정수 입력:", i + 1);
  scanf("%d", pa + i);
 }
}
void buble_sort(int *pa) //오름차순
{
 int step, i;
 int temp;

 for (step = 0; step < SIZE - 1; step++)
 {
  for (i = 0; i < SIZE - 1; i++)
  {
   if (pa[i] > pa[i + 1])
   {
    temp = pa[i];
    pa[i] = pa[i + 1];
    pa[i + 1] = temp;
   }
  }
 }
}
void res_print(int *pa)
{
 int i;

 for (i = 0; i < SIZE; i++)
 {
  printf("%5d", *(pa + i));
 }
 putchar('\n');
}

 

 

 

 

 

 

 

 

프로젝트4.

 

 

 

[mylib.h]파일

 


#ifndef _MYLIB_H_
#define _MYLIB_H_
#define SIZE 5
#include<stdio.h>

typedef struct
{
 char name[20];
 int kor;
 int eng;
 int mat;
 int tot;
 double avg;
} Student;
void data_input(Student *s);
void totavg(Student *s);
void array_avg(Student *s);
void res_print(Student *s);
#endif

 

 

 

[main.c]파일

 

 


#include"mylib.h"
int main()
{
 Student s[SIZE] = { 0, };
 
 data_input(s);
 totavg(s);
 array_avg(s);
 res_print(s);

 

 return 0;
}

 

 

 

 


[mylib.c]파일

 


#include"mylib.h"
void data_input(Student *s)
{
 int i;

 for (i = 0; i < SIZE; i++)
 {
  printf("이름: ");
  scanf("%s", (s+i)->name);
  printf("국어, 영어, 수학 점수입력: ");
  scanf("%d%d%d", &(s + i)->kor, &(s + i)->eng, &(s + i)->mat);
 }
 putchar('\n');
}
void totavg(Student *s)
{
 int i;

 for (i = 0; i < SIZE; i++)
 {
  (s+i)->tot = (s+i)->kor + (s+i)->eng + (s+i)->mat;
  (s+i)->avg = (s+i)->tot / 3.0;
 }
 putchar('\n');
}
void array_avg(Student *s)
{
 int step, i;
 Student temp;

 for (step = 0; step < SIZE - 1; step++)
 {
  for (i = 0; i < SIZE - 1 - step; i++)
  {
   if (s[i].avg < s[i+1].avg)
   {
    temp = s[i];
    s[i] = s[i + 1];
    s[i+1] = temp;
   }
  }
 }
}
void res_print(Student *s)
{
 int i;

 printf("#정렬후\n");
 for (i = 0; i < SIZE; i++)
 {
  printf("%s", (s + i)->name);
  printf("%4d %4d %4d", (s + i)->kor, (s + i)->eng, (s + i)->mat);
  printf("%4d   %.1lf  \n", (s + i)->tot, (s + i)->avg);
 }
 putchar('\n');
}

 

 

 

 

 

 


프로젝트5.

 

[mylib.h]파일

 


#ifndef _MYLIB_H_
#define _MYLIB_H_
#define SIZE 10
#include<stdio.h>
void get_name(char *name);
void get_data(FILE *ifp, int *data);
void sort_descending(int *data);
void put_data(FILE *ofp, int *data);
#endif

 

 

 


[main.c]파일

 


#include"mylib.h"
int main()
{
 FILE *ifp, *ofp;
 char iname[30];
 int data[SIZE];


 get_name(iname);

 ifp = fopen(iname, "r");
 if (ifp == NULL)
 {
  printf("파일을 찾지 못했습니다...\n");
  return 1;
 }
 ofp = fopen("result.txt", "w");
 if (ofp == NULL)
 {
  printf("파일을 찾지 못했습니다...\n");
  return 1;
 }
 get_data(ifp, data);
 sort_descending(data);
 put_data(ofp, data);


 fclose(ifp);
 fclose(ofp);

 return 0;
}

 

 

 

 

[mylib.c]파일

 


#include"mylib.h"
void get_name(char *name)
{
 printf("입력받을 파일명을 입력하세요: ");
 scanf("%s", name);
}
void get_data(FILE *ifp, int *data)
{
 int res;
 int i = 0;

 while (i < 10)
 {
  res = fscanf(ifp, "%d", data + i);
  if (res == EOF) break;
  i++;
 }
}
void sort_descending(int *data)
{
 int step, i;
 int temp;

 for (step = 0; step < SIZE - 1; step++)
 {
  for (i = 0; i < SIZE - 1 - step; i++)
  {
   if (data[i] > data[i + 1])
   {
    temp = data[i];
    data[i] = data[i + 1];
    data[i + 1] = temp;
   }
  }
 }
}
void put_data(FILE *ofp, int *data)
{
 int i;

 for (i = 0; i < SIZE; i++)
 {
  fprintf(ofp, "%d  ", data[i]);
 }
}

 

 

 

 

 

프로젝트6.

 

[mylib.h]파일

 


#ifndef _MYLIB_H_
#define _MYLIB_H_
#define STD 5 //학생수
typedef struct
{
 char name[20];
 int kor;
 int eng;
 int mat;
 int tot;
 double avg;
} Student;
#include<stdio.h>
void get_data(FILE *ifp, Student *s);
void get_totavg(Student *s);
void array_grade(Student *s);
void print_result(FILE *ofp, Student *s);
#endif

 

 

 

 

 

[main.c]파일

 


#include "mylib.h"
int main()
{
 FILE *ifp, *ofp;
 Student s[STD] = { 0, };
 int res;

 ifp = fopen("data.txt", "r");
 if (ifp == NULL)
 {
  printf("파일을 찾을 수 없습니다..\n");
  return 1;
 }
 ofp = fopen("result.txt", "w");
 if (ofp == NULL)
 {
  printf("파일을 찾을 수 없습니다..\n");
  return 1;
 }
 get_data(ifp, s);
 get_totavg(s);
 array_grade(s);
 print_result(ofp, s);

 fclose(ifp);
 fclose(ofp);

 return 0;

}

 

 

 

 

[mylib.c]파일


#include"mylib.h"
void get_data(FILE *ifp, Student *s)
{
 int i = 0;
 int res;

 for (i = 0; i < STD;i++)
 {
  res = fscanf(ifp, "%s %d%d%d", (s + i)->name, &(s + i)->kor, &(s + i)->eng, &(s + i)->mat);
 }
}
void get_totavg(Student *s)
{
 int i;
 for (i = 0; i < STD; i++)
 {
  s[i].tot = s[i].kor + s[i].eng + s[i].mat;
  s[i].avg = s[i].tot / 3.0;
 }
}
void array_grade(Student *s)
{
 int step, i;
 Student temp;

 for (step = 0; step < STD - 1; step++)
 {
  for (i = 0; i < STD - 1 - step; i++)
  {
   if (s[i].avg < s[i + 1].avg)
   {
    temp = s[i];
    s[i] = s[i + 1];
    s[i + 1] = temp;
   }
  }
 }
}
void print_result(FILE *ofp, Student *s)
{
 int i;
 fprintf(ofp, "이름 국어   영어   수학   총합    평균\n");
 for (i = 0; i < STD; i++)
 {
  fprintf(ofp, "%5s %3d %6d %6d %7d %9.2lf\n", s[i].name, s[i].kor, s[i].eng, s[i].mat, s[i].tot, s[i].avg);
 }
}