끄적끄적 코딩

파스칼

- PASCAL 코드 - 

{ Pascal 평균 성적보다 높은 학생 구하기 }
program pasex (input, output);
type intlisttype = array [1..99] of integer;
var
	intlist : intlisttype ;
	listlen, counter, sum, average, result : integer;
begin
	result = 0;
	sum = 0;
	readln (listlen);
	if ((listlen > 0) and (listlen < 100)) then
		begin
		{ 학생 성적 읽기 }
		for counter = 1 to listlen do
			begin
				readln (intlist[counter]);
				sum = sum + intlist[counter];
			end;
		{ 평균값 계산 }
		average = sum / listen;
		{ 평균 보다 높은 성적을 받은 학생 수 세기 }
		for counter = 1 to listlen do
			if (intlist[counter] > average)
				then result = result + 1;
		{ 결과 출력 }
		writeln(‘평균 보다 높은 성적을 받은 학생 수:’, result)
		end
	else
	writeln(‘Error – 리스트의 길이가 너무 크거나 작음’)
end.

 

 

 

- C언어 코드 - 

#include <stdio.h>

int main() {
	int intlist[100];
	int listlen, counter, sum, average, result;

	result = 0;
	sum = 0;

	scanf("%d", &listlen);
	if (listlen > 0 && listlen < 100) {
		// 학생 성적 읽기
		for (counter = 0; counter < listlen; ++counter) {
			scanf("%d", &intlist[counter]);
			sum += intlist[counter];
		}

		// 평균값 계산
		average = sum / listlen;

		// 평균 보다 높은 성적을 받은 학생 수 세기
		for (counter = 0; counter < listlen; ++counter) {
			if (average < intlist[counter]) {
				++result;
			}
		}
		// 결과 출력
		printf("평균 보다 높은 성적을 받은 학생 수 : %d\n", result);
	}
	else {
		printf("Error - 리스트의 길이가 너무 크거나 작음\n");
	}

	return 0;
}


 

- PASCAL 코드 해석 - 

{ Pascal 평균 보다 높은 학생 구하기  { }는 c언어에서 //와 같은 주석처리입니다.

program pasex (input, output); program – 프로그램을 선언하며, pasex라는 명으로 만듭니다. input, output는 사용될 입출력 장치를 기술합니다.

type intlisttype = array [1..99] of integer; 99크기의 integer형식의 배열을 만들어 intlisttype의 타입을 지정합니다.

var 변수 선언 부분입니다.

intlist : intlisttype ; intlist를 intlisttype으로 설정합니다. 이는 위에서 설정했던 99크기의 integer형식의 배열입니다.

listlen, counter, sum, average, result : integer; listlen, counter, sum, average, result를 integer형식으로 선언합니다.

begin begin과 end는 C언어에서 { }와 같은 내용입니다.

result = 0; result에 0을 대입합니다.

sum = 0; sum에 0을 대입합니다.

readln (listlen); C언어에서 scanf와 비슷한 구문으로 입력받은 값을 listlen에 넣습니다.

if ((listlen > 0) and (listlen < 100)) then if문으로 listlen이 0보다 크고 100보다 작으면 실행되며, then을 통해 조건에 대해서 마칩니다.

begin if문의 시작점입니다.

{ 학생 성적 읽기 }

for counter = 1 to listlen do for문으로 counter 변수에 1을 넣고, listlen이 될 때까지 반복합니다. 반복될때마다 counter는 1씩 증가합니다.

begin for문의 시작점입니다. do를 통해서 조건에 대해서 마칩니다.

readln (intlist[counter]); scanf와 비슷한 구절로 intlist배열에 index가 counter인 곳에 입력받은 값을 입력합니다.

sum = sum + intlist[counter]; sum에 각 학생의 모든 점수를 넣어줍니다.

end; for문의 종료지점입니다.

{ 평균값 계산 }

average = sum / listen; 평균값을 계산하기 위해 학생의 점수들의 합에서 학생 수를 나눠줍니다.

{ 평균 보다 높은 성적을 받은 학생 수 세기 }

for counter = 1 to listlen do counter에 1이 들어가며, listlen이 될 때까지 반복합니다. counter는 반복될때마다 1씩 증가합니다.

if (intlist[counter] > average) if문으로 학생의 점수와 평균을 비교하며, 학생의 점수가 평균보다 높으면 조건에 만족합니다.

then result = result + 1; 조건이 만족하면 result에 +1을 해줍니다. 이는 조건이 만족하는 학생으 수를 나타냅니다.

{ 결과 출력 }

writeln(‘평균 보다 높은 성적을 받은 학생 수:’, result) writeln는 C언어에 printf와 비슷하며, 출력을 합니다. 작은 따옴표에 문장을 넣어서 출력할 수 있으며 ‘,’를 이용해서 여러 가지를 한번에 출력할 수 있습니다. 변수를 출력할 경우 따옴표 없이 변수만 적으면 됩니다.

end 

else if문이 만족하지 않을 경우입니다.

writeln(‘Error  리스트의 길이가 너무 크거나 작음’) printf와 비슷한 구문으로 에러 메시지를 출력합니다.

end. end.는 프로그램의 끝부분을 나타냅니다.

 

# 학습에 대한 기록이므로, 틀린 부분이 있을 수 있습니다. # 

검색 태그