2017년 6월 1일 목요일

0601 수업내용_시험채점(함수/배열)

#include <iostream>
using namespace std;
void correctAnswer(char a[][10],char b[],int row,int col);
int main(){
  const int STUDENT_NUMBER = 8;
  const int QUESTION_NUMBER = 10;
  char studentAnswer[STUDENT_NUMBER][QUESTION_NUMBER] = {
        {'A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},  
        {'D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D'},   
        {'E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D'},    
        {'C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D'},    
        {'A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},    
        {'B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},    
        {'B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},    
        {'E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'}
        };
  char answer[]={'D','B','D','C','C','D','A','E','A','D'};

 correctAnswer(studentAnswer,answer,STUDENT_NUMBER,QUESTION_NUMBER);

 return 0;
 }
void correctAnswer(char a[][10],char b[],int row,int col)
{
 int i,j;

  for(i=0;i<row;i++)
  {
   int correctCount = 0; //반복할 때마다 정답 개수 초기화 
   for(j=0;j<col;j++)
   {
    if(a[i][j] == b[j])
     correctCount++;
   }
   cout<<"Student "<<i<<"'s correct count is "<<correctCount<<endl;
  
  }
}

2017년 5월 31일 수요일

(비이공계)2차원배열+함수

#include <stdio.h>
void evenCalc(int arr[][10],int n);
void oddCalc(int arr[][10],int n);
int main(){
 int arr[3][10] = {{38,97,25,66,90,31,16,86,33,59},{21,14,36,39,92,11,18,48,25,49},{33,44,29,46,45,66,56,91,27,65}};
 int rowsize = sizeof(arr)/sizeof(arr[0]);

 printf("[실행결과]\n");
 printf("********************\n");
 evenCalc(arr,rowsize);
 oddCalc(arr,rowsize);
 printf("********************\n");

 return 0;
}
void evenCalc(int arr[][10],int n)
{
 int i,j;
 int total = 0;
 int cnt = 0;
 double avg = 0;

 for(i=0;i<n;i++)
 {
  for(j=0;j<10;j++)
  {
   if(arr[i][j]%2==0)
   {
    total+=arr[i][j];
    cnt++;
   }
  }
 }
 avg = (double)total/cnt;

 printf("짝수의 합 : %d\n",total);
 printf("짝수의 평균 : %.3lf\n",avg);
}
void oddCalc(int arr[][10],int n)
{
 int i,j;
 int total = 0;
 int cnt = 0;
 double avg = 0;

 for(i=0;i<n;i++)
 {
  for(j=0;j<10;j++)
  {
   if(arr[i][j]%2!=0)
   {
    total+=arr[i][j];
    cnt++;
   }
  }
 }
 avg = (double)total/cnt;

 printf("홀수의 합 : %d\n",total);
 printf("홀수의 평균 : %.3lf\n",avg);
}


2017년 5월 25일 목요일

0525 수업 내용 : 배열탐색_선형/이진탐색

/*선형 탐색 프로그램*/
#include <iostream>
using namespace std;

int lineSearch(const int list[],int key,int size);

int main(){
 int const SIZE = 6;
 int list[] = {6,4,1,9,7,3,2,8};
 int i = lineSearch(list,3,SIZE);
 cout<<i<<endl;
 return 0;
}
int lineSearch(const int list[],int key,int size)
{
 for(int i=0;i<size;i++)
 {
  if(key==list[i])
   return i;
 }
 return -1;
}
/*이진 탐색 프로그램*/
#include <iostream>
using namespace std;

int binarySearch(const int list[],int key,int arraySize);

int main(){
 int list[] = {2,4,7,10,15,16,19,20,27,56,59,80};

 int i = binarySearch(list,80,20);
 cout<<i<<endl;
 return 0;
}
int binarySearch(const int list[],int key,int arraySize)
{
 int low = 0;
 int high = arraySize-1;
 while(high>=low)
 {
  int mid = (low+high)/2;
  if(key < list[mid])
   high = mid - 1;
  else if(key == list[mid])
   return mid;
  else
   low = mid + 1;
 }
 return low - 1;
}

0525 수업내용_배열 역순 복사

#include <iostream>
using namespace std;
void reverse(const int list[],int newList[],int size);
void printArray(const int list[],int size);\

int main(){
 const int SIZE = 6;
 int list[] = {1,2,3,4,5,6};
 int newList[SIZE] = {0};

 reverse(list,newList,SIZE);

 cout<<"Origianl Array : ";
 printArray(list,SIZE);
 cout<<"\n";

 cout<<"The reversed Array : ";
 printArray(newList,SIZE);
 cout<<"\n";

 return 0;
}

void reverse(const int list[],int newList[],int size)
{
 for(int i = 0,j=size-1;i<size;i++,j--)
 {
  newList[j] = list[i];
 }
}
void printArray(const int list[],int size){
 for(int i=0;i<size;i++)
  cout<<list[i]<<" ";
}

2017년 4월 30일 일요일

(비이공계C) 소수판별 프로그램

#include <stdio.h>
int main() {
 int input;

 while(1){
  int flag = 0; //참거짓 판별(flag=0이면 소수/아니면 소수가 아님)
  int i = 2; //1은 모든 자연수의 공통약수니까 2부터
 
  printf("정수를 입력하세요. : "); scanf("%d",&input);
 
  while(i<=(input/2)) //3보다 큰 자연수 중
  {
   if(input%i==0) {
    flag = 1; //소수가 아님
    break; //또는 i=input

 }else
    i++; //약수를 2부터 3,4,5,대입
   //i가 input보다 커지면 프로그램 종료 --> flag는 여전히 0
  }
 
  if(flag==0)
   printf("소수입니다.\n");
  else
   printf("소수가 아닙니다.\n"); //flag==1인 경우
 }
  

  return 0;
}

2017년 4월 18일 화요일

doWhile()문 : 구구단 구하기 **

#include <iostream>
using namespace std;

int main(){
  int dan = 2;
  int i = 0;
 
 do {
  i = 1;
  do
  {
   cout<<dan<<" x "<<i<<" = "<<dan*i<<endl;
   i++;
  }while(i<10);
  dan++;
  cout<<"\n";
 }while(dan<10);

 return 0;
}

while()문 : 정수 입력받아 평균 구하기


#include <iostream>
using namespace std;

int main(){
  int inputNum;
  int number;
  int sum=0;
  cout<<"입력할 정수의 개수를 입력하시오. : ";
 cin>>inputNum;

 int i=1;
 while(i<=inputNum){
  cout<<i<<"번 째 정수 입력 : "; cin>>number;
  sum+=number;
  i++;
 }

 double avg=(double)sum/inputNum;

 cout<<"평균은 : "<<avg<<endl;


 return 0;
 
}