일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 언제나휴일
- 졸업 작품 소재
- 졸업 작품
- 네트워크 프로그래밍
- 소켓 통신
- 표준 라이브러리 함수
- Windows Forms
- 무료 동영상 강의
- 원격 제어 프로그램
- 캡슐화
- 산책하기 좋은 곳
- 동영상
- C++
- 클래스 다이어그램
- 안드로이드 앱 개발
- 실습으로 다지는 c#
- 실습
- 표준 입출력
- c언어
- 강의
- 유튜브 동영상 강의
- 소스 코드
- 동영상 강의
- c#
- 파이썬
- 추천
- 알고리즘
- 프로젝트
- 언제나 휴일
- 충남 천안
Archives
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
[실습으로 다지는 C#] 두 개의 정수 사이의 합계 구하기 본문
이번 강의에서는 두 개의 정수를 입력 받은 후에 두 개의 정수 사이의 합계를 구하는 실습을 해 봅시다.
먼저 어떻게 해야 문제를 해결할 수 있을지 생각한 후에 의사 코드(pseudo code) 형태로 작성해 보세요. 작성한 후에 비교해 보시기 바랍니다.
input := 정수를 입력 받는다.
조건(정수로 변환(input,out num1)이 실패)
오류를 출력 후 알고리즘 종료
input := 정수를 입력 받는다.
조건(정수로 변환(input,out num2)이 실패)
오류를 출력 후 알고리즘 종료
조건(num1<num2)
두 수를 교환(ref num1, ref num2)
sum:=두 정수 사이의 합계 구하기(num2,num1)
두 수를 교환(ref num1, ref num2)
temp:= num1
num1:= num2
num2:= temp
두 정수 사이의 합계 구하기(start, end):합계
sum:=0
반복(value:= start->end)
sum:= sum+value
sum 반환
그리고 프로젝트를 생성한 후에 의사 코드를 주석으로 치환해 보세요. 두 수를 교환하는 부분과 두 정수 사이의 합계를 구하는 부분은 별도의 메서드로 정의해야겠죠.
마찬가지로 여러분께서 주석을 작성한 후에 비교해 보세요.
//http://ehpub.co.kr
//실습으로 다지는 C#
//5. 반복문 실습1
//두 개의 정수를 입력받은 후에 두 수 사이의 모든 정수의 합계 구하기
using System;
namespace _005_반복문_실습1___두_개의_정수를_입력받은_후에_두_수_사이의_모든_정수의_합계_구하기
{
class Program
{
static void Main(string[] args)
{
//input:= 정수를 입력 받는다.
//조건(정수로 변환(input, out num1)이 실패)
{
// 오류를 출력 후 알고리즘 종료
}
//input := 정수를 입력 받는다.
//조건(정수로 변환(input, out num2)이 실패)
{
// 오류를 출력 후 알고리즘 종료
}
//조건(num1 < num2)
{
// 두 수를 교환(ref num1, ref num2)
}
//sum:= 두 정수 사이의 합계 구하기(num2, num1)
}
//두 수를 교환(ref num1, ref num2)
static void Swap(ref int num1, ref int num2)
{
//temp:= num1
//num1:= num2
//num2:= temp
}
//두 정수 사이의 합계 구하기(start, end):합계
static int CalSum(int start, int end)
{
//sum:= 0
//반복(value:= start->end)
{
// sum:= sum + value
}
//sum 반환
return 0;
}
}
}
이제 주석을 코드로 편집해 봅시다.
사용자로부터 입력받는 것은 문자열이므로 정수로 변환하는 작업이 필요합니다. 그리고 변환에 실패하였다면 사용자가 잘못 사용한 것으로 판단해야겠죠.
Console.WriteLine("첫 번째 정수를 입력하세요.");
string input = Console.ReadLine();//input:= 정수를 입력 받는다.
int num1;
if(int.TryParse(input,out num1)==false)//조건(정수로 변환(input, out num1)이 실패)
{
Console.WriteLine("정수가 아닙니다.");// 오류를 출력 후 알고리즘 종료
return;
}
Console.WriteLine("두 번째 정수를 입력하세요.");
input = Console.ReadLine();//input := 정수를 입력 받는다.
int num2;
if(int.TryParse(input,out num2) == false)//조건(정수로 변환(input, out num2)이 실패)
{
Console.WriteLine("정수가 아닙니다.");// 오류를 출력 후 알고리즘 종료
return;
}
두 개의 정수 중에 큰 값은 num1에 작은 값은 num2로 설정할게요. 이를 위해 num2가 더 크면 두 수를 교환합니다.
if(num1<num2)//조건(num1 < num2)
{
Swap(ref num1, ref num2);// 두 수를 교환(ref num1, ref num2)
}
int sum = CalSum(num2, num1); //sum:= 두 정수 사이의 합계 구하기(num2, num1)
Console.WriteLine("{0}에서 {1}사이의 합계는 {2}입니다.", num2, num1, sum);
//두 수를 교환(ref num1, ref num2) static void Swap(ref int num1, ref int num2) { int temp = num1;//temp:= num1 num1 = num2;//num1:= num2 num2 = temp;//num2:= temp }
두 정수 사이의 합계를 구할 때는 합계를 0으로 초기화를 한 후에 반복해서 작은 값에서 큰 값 사이의 값들을 더하면 되겠죠. 이를 위해 반복문에서는 더해야 할 값을 작은 값으로 초기화하고 순차적으로 증가하면서 큰 값이 될 때까지 반복하게 해야 합니다. 그리고 반복해야 할 작업은 현재 합계와 변화하는 값을 더하는 작업을 해야겠죠.
//두 정수 사이의 합계 구하기(start, end):합계
static int CalSum(int start, int end)
{
int sum = 0;//sum:= 0
for (int value = start; value <= end; value++)//반복(value:= start->end)
{
sum += value;// sum:= sum + value
}
return sum;//sum 반환
}
이제 빌드 후에 테스트를 수행하세요.
=테스트 case1=
첫 번째 정수를 입력하세요.
1
두 번째 정수를 입력하세요.
100
1에서 100사이의 합계는 5050입니다.
=테스트 case2=
첫 번째 정수를 입력하세요.
100
두 번째 정수를 입력하세요.
1
1에서 100사이의 합계는 5050입니다.
=테스트 case3=
첫 번째 정수를 입력하세요.
1
두 번째 정수를 입력하세요.
백
정수가 아닙니다.
=테스트 case4=
첫 번째 정수를 입력하세요.
백
정수가 아닙니다.
다음은 이번 실습에서 작성한 전체 소스 코드입니다.
//http://ehpub.co.kr
//실습으로 다지는 C#
//5. 반복문 실습1
//두 개의 정수를 입력받은 후에 두 수 사이의 모든 정수의 합계 구하기
using System;
namespace _005_반복문_실습1___두_개의_정수를_입력받은_후에_두_수_사이의_모든_정수의_합계_구하기
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("첫 번째 정수를 입력하세요.");
string input = Console.ReadLine();//input:= 정수를 입력 받는다.
int num1;
if(int.TryParse(input,out num1)==false)//조건(정수로 변환(input, out num1)이 실패)
{
Console.WriteLine("정수가 아닙니다.");// 오류를 출력 후 알고리즘 종료
return;
}
Console.WriteLine("두 번째 정수를 입력하세요.");
input = Console.ReadLine();//input := 정수를 입력 받는다.
int num2;
if(int.TryParse(input,out num2) == false)//조건(정수로 변환(input, out num2)이 실패)
{
Console.WriteLine("정수가 아닙니다.");// 오류를 출력 후 알고리즘 종료
return;
}
if(num1<num2) 조건(num1="" <="" num2)="" {="" swap(ref="" num1,="" ref="" num2);="" 두="" 수를="" 교환(ref="" }="" int="" sum="CalSum(num2," num1);="" sum:="두" 정수="" 사이의="" 합계="" 구하기(num2,="" num1)="" console.writeline("{0}에서="" {1}사이의="" 합계는="" {2}입니다.",="" num2,="" sum);="" static="" void="" temp="num1;//temp:=" num1="" num2="" 구하기(start,="" end):합계="" calsum(int="" start,="" end)="" 0="" for="" (int="" value="start;" value++)="" 반복(value:="start-">end)
{
sum += value;// sum:= sum + value
}
return sum;//sum 반환
}
}
}</num2)>
언제나휴일 여행 및 산책
'C# > 실습으로 다지는 C#' 카테고리의 다른 글
[실습으로 다지는 C#] 클래스 간의 관계 (0) | 2025.01.05 |
---|---|
[실습으로 다지는 C#] 캡슐화 실습 – 학생 클래스 정의하기 (0) | 2025.01.05 |
[실습으로 다지는 C#] 랜덤 값 맞추기 (0) | 2025.01.05 |
[실습으로 다지는 C#] 암스트롱의 수 (0) | 2025.01.05 |
[실습으로 다지는 C#] 두 개의 정수를 입력받아 작은 수가 큰 수의 약수인지 판별 (0) | 2025.01.05 |
[실습으로 다지는 C#] 두 개의 정수를 입력받아 큰 수를 출력 (0) | 2025.01.05 |
[실습으로 다지는 C#] 정수와 소수점 이하 자릿수 결정하기 (1) | 2025.01.05 |
[실습으로 다지는 C#] 숫자 출력 – 형식 지정자 이용하기 (0) | 2025.01.05 |