검색어 입력폼

[c언어]컴퓨터프로그래밍 3문제

저작시기 2005.03 |등록일 2007.03.22 한글파일한컴오피스 (hwp) | 6페이지 | 가격 2,500원

소개글

숙제 #1
1. 입력으로 주어지는 두 개의 정수는 각각 작업 시작시간과 지속 시간을 나타낸다. 이 정수들이 나타내는 시간은 hhmm 형식이며, hh는 시간을 mm은 분을 나타낸다. 예를 들면, 1345는 13시(간) 45분, 234는 2시(간) 34분, 25는 0시(간) 25분을 나타낸다.
출력은 시작 시간, 지속 시간, 종료 시간 등을 다음 형식으로 표시한다. (입력은 1415 50)

Start time is 14:15
Duration is 0:50
End time is 15:05

종료 시간이 자정을 넘게 되면, 다음 출력 예와 같이 다음 날 시간으로 조정하여 출력해야 한다. (입력은 2300 4200)
Start time is 23:00
Duration is 42:00
End time is 17:00 (+2 days)

위와 같은 입력을 반복하여 처리하는 C 프로그램을 작성하되, 파일 끝(CTRL-Z)을 만나면 종료하도록 해야 한다.




2. 표준 입력 장치에서 영문 텍스트를 읽어들여 각 모음의 개수와 자음들의 개수를 세어 이들과 백분율을 출력하는 C 프로그램을 작성하라. 입력에서 영문자가 아닌 나머지 문자들은 무시하며, 대소문자는 구분하지 않는다.
다음과 같은 입력이 주어질 경우

Start time is 23:00
Duration is 42:00
End time is 17:00 (+2 days)

출력은 다음과 같다.

Numbers of characters:
a: 3, e: 3, i: 6, o: 1, u: 1, consonants: 20
Percentages of total:
a: 8%, e: 8%, i: 17%, o: 2%, u: 2%, consonants: 58%

이 프로그램은 다음과 같은 제약 사항을 지켜야 한다.


입력함수로는 getchar(), 출력함수로는 printf()를 사용하며, 이들 이외의 어떠한 함수도 사용하지 않는다.
배열을 사용하지 않는다.
입력에서 파일 끝(CTRL-Z)을 만나면 프로그램은 종료한다.



3. 영문 텍스트를 읽고 단어 길이들을 세어 출력하는 C 프로그램을 작성한다. 즉, 길이가 1인 단어의 수, 길이가 2인 단어의 수, ... 등을 출력하되, 단어의 길이는 25까지 허용한다. 단어는 영문자로만 이루어지는 것으로 간주한다. 즉, 영문자 이외의 문자가 나타나면 한 단어가 끝난 것으로 간주한다.
다음과 같은 입력이 주어질 경우

Founded in 1901 as the Germanic Museum through the efforts of Kuno Francke,
professor of German literature at Harvard, the Museum originally contained only
reproductions, notably plaster casts of major Germanic, sculptural, and
architectural monuments.

출력은 다음과 같다.

길이 2: 6 번
길이 3: 4 번
길이 4: 2 번
길이 5: 2 번
길이 6: 3 번
길이 7: 7 번
길이 8: 2 번
길이 9: 3 번
길이 10: 3 번
길이 13: 2 번

개수가 0인 경우는 출력하지 않는다.

- 위의 3문제에 대한 프로그래밍 소스, 결과화면 캡쳐가 들어있습니다.

목차

없음

본문내용

#include <stdio.h>

main()
{
int sta, s_hh, s_mm, dur, d_hh, d_mm;
int e_hh, e_mm, plus_day = 0;

printf("Input data: ");

while(scanf("%d %d", &sta, &dur) != EOF)
{
s_hh = sta / 100;
s_mm = sta % 100;

d_hh = dur / 100;
d_mm = dur % 100;

if(s_hh > 24 || s_mm >= 60)
{
printf("\nInvalid value!\n");
exit(1);
}

if((s_mm + d_mm) >= 60 || (s_hh + d_hh) >= 24)
{
if((s_mm + d_mm) >= 60 && (s_hh + d_hh) < 24)
{
e_hh = s_hh + (s_mm + d_mm) / 60;
e_mm = (s_mm + d_mm) - 60;
plus_day = 0;
}

참고 자료

없음
다운로드 맨위로