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;
 
}

rand()함수 예제

임의의 정수 생성하여 입력한 정수와 일치할 때까지 프로그램 실행
랜덤수 = 입력 수 --> 프로그램 종료


#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main(){

 srand(time(0));
 int num=rand()%100;
 int inputNum;

 while(1) { 
  cout<<"Guess a magic number between 0 and 100"<<endl;
  cout<<"Enter your guess : "; cin>>inputNum;
 
  if(inputNum>num){
   cout<<"Your guess is too high"<<endl;
   cout<<"\n";
  } else if(inputNum<num) {
   cout<<"Your guess is too low"<<endl;
   cout<<"\n";
  } else {
   cout<<"Yes, the number is "<<num<<endl;
   break;
  }
 }

 return 0;


 
}

반복문 예제 : 뺄셈_걸린 시간

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main() {
 int correctAnswer=0;
 int wrongAnswer=0;

 srand(time(0));
 long startTime=time(0);

 for(int i=0;i<10;i++){
  int num1 = rand()%10;
  int num2 = rand()%10;
 
  if(num1<num2){
   int temp = num1;
   num1 = num2;
   num2 = temp;
  }
  cout<<"What is "<<num1<<" - "<<num2<<" ?";
  int answer;
  cin>>answer;
 
  if(answer==num1-num2){
   cout<<"You are correct!"<<endl;
   correctAnswer++;
  }else{
   cout<<"오답입니다. 정답은 "<<num1+num2<<" 입니다."<<endl;
   wrongAnswer++;
  }
 }
 long endTime = time(0);
 cout<<"\n";
 cout<<"Correct count is "<<correctAnswer<<endl;
 cout<<"Wrong count is "<<wrongAnswer<<endl;
 cout<<"Test time is "<<endTime-startTime<<" seconds"<<endl;
  
 return 0;
 
}

한 달의 일수 계산(윤년 계산)

#include <iostream>
using namespace std;
int main() {
 int year, month, day;
 cout<<"연도와 달을 입력하세요."<<endl;
 cout<<"연도 : "; cin>>year;
 cout<<"달 : ";  cin>>month;

 bool leapyear = (year%4==0 && !(year%100==0)) || year%400==0;
 bool month30 = month==2 && month==4 && month==6 && month==9 && month==11;

 if(leapyear && month==2)
  day=29;
 else {
  if(month>0 && month<13){
   day = month30 ? 30 : 31;
  }
 }

 cout<<year<<" 년 "<<month<<" 월은 "<<day<<" 일 입니다."<<endl;
 
 return 0;

}

세 숫자 정렬

#include <iostream>
using namespace std;
int main() {
 int a, b, c;
 int temp;
 cout<<"Enter three integers : "; cin>>a>>b>>c;

 if(a>b){
  temp = a;
  a = b;
  b = temp;
 }
 if(b>c){
  temp = b;
  b = c;
  c = temp;
 }
 if(a>b){
  temp = a;
  a = b;
  b = temp;
 }

 cout<<a<<" "<<b<<" "<<c<<endl;

 return 0;

}

2017년 4월 17일 월요일

bool식 : 짝수판별

#include <iostream>
using namespace std;
int main() {
 int n;
 for(int i=0;i<2;i++){
 cout<<"Enter an integer : "; cin>>n;
 cout<<"Is "<<n<<" an even number? ";

 (n%2==0) ? cout<<"true"<<endl : cout<<"false"<<endl;
 }
 return 0;
}

bool식 : 삼각형 길이 확인

삼각형 세변의 길이를 입력받고 입력이 적절한지 검사하라.

#include <iostream>
using namespace std;
int main() {
 int edge1, edge2, edge3;
 cout<<"Enter three edges : ";
 cin>>edge1>>edge2>>edge3;

 cout<<"Can edge "<<edge1<<", "<<edge2<<" and "<<edge3<<" form a traingle? ";

 bool Edge = edge1+edge2>edge3 && edge2+edge3>edge1 && edge1+edge3>edge2;


 /*
 if(Edge)
  cout<<"true"<<endl;
 else
  cout<<"false"<<endl;
 */
 Edge ? cout<<"true"<<endl : cout<<"false"<<endl; 
//Edge ? cout<<"true"<<endl; : cout<<"false"<<endl; //;만나면 문장 끝남. 넣지말것

 return 0;
}

기초프로그래밍 p.82 3.6SubtractionTutor

난수 발생시켜 뺄셈
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main(){

 int rightCount=0; int wrongCount=0;

 while(1) {
  srand(time(0));
  int num1 = rand()%10;   //10이하 한자리 random 수 발생
  int num2 = rand()%10;
 
  if(num1<num2) { //num1이 num2보다 작을 때 둘이 값 바꾸기
   int temp;
   temp = num1;
   num1 = num2;
   num2 = temp;

  } else if(num1==num2) continue; //num1이 num2와 같을 때 다시 다른 난수 발생시키기
 
  cout<<"what is "<<num1<<" - "<<num2<<" ?(0을 누르면 프로그램을 종료합니다.)\n"
   <<"answer : ";
  int answer;
  cin>>answer;
  if(answer==0) break;
 
 
 
  if(answer==num1-num2){
    cout<<"정답입니다."<<endl;
    rightCount++;  //맞은 개수 증가
   } else {
    cout<<"오답입니다. 정답은 "<<num1-num2<<" 입니다."<<endl;
    wrongCount++;  //틀린 개수 증가
   }
 
 }
 cout<<"맞은 갯수 : "<<rightCount<<endl;
 cout<<"틀린 갯수 : "<<wrongCount<<endl;

 return 0;
}

기초프로그래밍 p.66 2.12

(금융문제 : 복리계산)
#include <iostream>
using namespace std;

int main(){

 double originalValue;
 double yearInterestRate;
 double inputValue;

 cout<<"원금을 입력하세요. : "; cin>>originalValue;
 cout<<"저축금을 입력하세요. : "; cin>>inputValue;
 cout<<"연 이자율을 입력하세요.(%) : "; cin>>yearInterestRate;

 double monthInterestRate = yearInterestRate/100/12;

 double remainingValue;
 int cnt=1;

 for(int i=0;i<6;i++)
 {
 remainingValue = (originalValue+inputValue) * (1 + monthInterestRate);
 originalValue=remainingValue;
 cout<<cnt<<"개월 차 적립 금액 : "<<remainingValue<<endl; 
 cnt++;
 }

 return 0;
}

2017년 4월 14일 금요일

while(1)_switch문_학점계산

학생들의 학점을 입력받아서, 입력받은 학점을 A,B,C,D,F
각각 총 몇명인지 계산

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
  int a=0; int b=0; int c=0; int d=0; int f=0;
  char score;

  while(1) {
  cout<<"학점을 입력하세요.\n(입력이 끝나면 Q를 입력하세요.): "; cin>>score;

  switch(score) {
   case 'A' :  a++; break;
   case 'B' :  b++; break;
   case 'C' :  c++; break;
   case 'D' :  d++; break;
   case 'F' :  f++; break;
   default : cout<<"A,B,C,D,F 중 하나를 입력하세요.";
   }
   if(score=='Q') break;
  }

  cout<<"입력된 전체 학생 학점은 : "<<endl;
 cout<<"A는 "<<a<<"명"<<endl;
 cout<<"B는 "<<b<<"명"<<endl;
 cout<<"C는 "<<c<<"명"<<endl;
 cout<<"D는 "<<d<<"명"<<endl;
 cout<<"F는 "<<f<<"명"<<endl;
 
 return 0;
}

이중for문_모양만들기

#include <iostream>
using namespace std;
int main() {
  int i,j;
  for(i=5;i>=1;i--){
   for(j=0;j<i;j++){
   cout<<"*";
  }
  cout<<"\n";
  }
 return 0;
}

while(1)_break

정수를 입력받아서 모두 합하는 프로그램.
단, 원하는 정수를 모두 입력하고 0을 입력하면 그 때 결과(입력한 모든 수의 합) 출력

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
 int n;
 int sum=0;

 while(1) {
  cout<<"정수입력(0 to quit) : "; cin>>n;
  if(n==0) break;
  sum+=n;
 }

 cout<<"합계 : "<<sum<<endl;
 
 return 0;
}

for문+setw()함수 출력

<예제6 >
100에서 1000사이의 모든 숫자에 대해 5와 6으로 나누어 떨어지는 숫자를 찾아 한 줄에 10개씩 출력하는 프로그램 작성


#include <iostream>
#include <iomanip>
using namespace std;
int main() {
 int i;
 int cnt=0;
 for(i=100;i<=1000;i++) {
  if((i%5==0) && (i%6==0)){
   cout<<setw(4)<<i;  //100부터 1000사이의 수는 세자리수->setw(4)
   cnt++;
   if(cnt%10==0)
    cout<<"\n";
  }
 }

 return 0;
}

또는,
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
 int i; int cnt=0;
 for(i=100;i<=1000;i++){
  if(i%5==0 && i%6==0){
  /*if(cnt++ %10 ==0)
   cout<<"\n";
  else
   cout<<setw(4)<<i;
  */
  (cnt++ % 10 ==0)) ? cout<<"\n" : cout<<setw(4)<<i; //if-else문 bool식 변환
 }
}
 return 0;
}




while문_정수구하기

while문 사용하여 n*n>12000이 되는 가장 작은 정수 n을  구하여라.

#include <iostream>
using namespace std;
int main() {
 int n=0;

 while((n*n)<12000){
  n++;
 }

 cout<<"This number is "<<n<<endl;

 return 0;
}

bool()이용_삼각형 둘레길이 구하기

#include <iostream>
using namespace std;
int main() {
 int edge1, edge2, edge3;
 int sum=0;

 cout<<"Enter three edges : "; cin>>edge1>>edge2>>edge3;

 bool Valid = ((edge1+edge2)>edge3) && ((edge2+edge3)>edge1) && ((edge1+edge3)>edge2);

 if(Valid) {
  sum=edge1+edge2+edge3;
  cout<<"The perimeter is "<<sum<<endl;
 }else
  cout<<"valid is not available."<<endl;

 
 return 0;
}

ifelse()문_세수 크기 비교

#include <iostream>
using namespace std;
int main() {
 int x,y,z;
 int min, mid, max;

 cout<<"세 수를 입력하세요. : "; cin>>x>>y>>z;

 if((x>y) && (x>z)) {
  max=x;
  if(y>z){
   mid=y; min=z;
  }else {
   mid=z; min=y;
  }
 } else if((y>x) && (y>z)) {
  max=y;
  if(x>z){
   mid=x; min=z;
  }else{
   mid=z; min=x;
  }
 } else {
  max=z;
  if(x>y){
   mid=x; min=y;
  }else{
   mid=y; min=x;
  }
 }
 cout<<"최대값 : "<<max<<"\n중간값 : "<<mid<<"\n최소값 : "<<min<<endl;
  
 return 0;
}

2017년 4월 13일 목요일

switch()함수이용_요일계산

#include <iostream>
using namespace std;
int main() {
 int today;
 int addDay;

 cout<<"일요일 0  월요일 1 화요일 2 수요일 3\n목요일 4 금요일 5 토요일 6"<<endl;
 cout<<"오늘의 요일 입력 : "; cin>>today;
 cout<<"오늘로부터 며칠 후의 요일을 출력할 것인지 입력 : "; cin>>addDay;

 int futureDay=(today+addDay)%7;

 cout<<"오늘은 ";
 switch(today){
  case 0 : cout<<"일요일"; break;
  case 1 : cout<<"월요일"; break;
  case 2 : cout<<"화요일"; break;
  case 3 : cout<<"수요일"; break;
  case 4 : cout<<"목요일"; break;
  case 5 : cout<<"금요일"; break;
  case 6 : cout<<"토요일"; break;
     
 }
 cout<<" 이고 미래의 날은 ";
 switch(futureDay){
  case 0 : cout<<"일요일"; break;
  case 1 : cout<<"월요일"; break;
  case 2 : cout<<"화요일"; break;
  case 3 : cout<<"수요일"; break;
  case 4 : cout<<"목요일"; break;
  case 5 : cout<<"금요일"; break;
  case 6 : cout<<"토요일"; break; 
 }
 cout<<" 이다."<<endl;
 
 return 0;
}

소문자대문자변환(dowhile문)

#include <iostream>
using namespace std;
int main() {
  char small;
  char capital;
 
  do {
   cout<<"소문자를 입력하세요. : "; cin>>small;
   if(small=='Q') break;
   capital=small-32;  
   cout<<"변환된 대문자는"<<capital<<" 입니다."<<endl;
   continue;
 }while(small>='a' && small<='z');

 return 0;
}

setw()함수와 중첩for문 연습

#include <iostream>
#include <iomanip>
using namespace std;
int main() {

 int i, j;
 //i칸을 띄우려면 setw(i+자기자리) 
 cout<<setw(27)<<"Multiplication Table"<<endl;
 cout<<setw(4)<<"|";
 for(i=1;i<10;i++)
  cout<<setw(3)<<i;
 cout<<"\n--------------------------------"<<endl;


 for(i=1;i<10;i++) {
  cout<<i<<setw(3)<<"|";
  for(j=1;j<10;j++) {
  
   cout<<setw(3)<<i*j;
   if(j==9)
    cout<<"\n";
  }
 }

 return 0;
}