안녕하세요 엘체프 GG 입니다.

오늘은 구조체입니다.


-구조체의 값을 구해보죠

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
#include <stdio.h>
#include <stdlib.h>
struct Point
{
    int x;        // x좌표
    int y;        // y좌표
};
 
int main(void)
{
    int i;
    struct Point pt[3= { { 1020 }, { 3040 }, { 5060 } };
    struct Point *ptr = pt;
    for (i = 0; i<3; i++)
    {
        printf("%d번째 구조체 값: (%d, %d)\n", i + 1, ptr[i].x, ptr[i].y);
    }
 
    printf("첫번째 구조체 값: (%d, %d)\n\n",
        pt->x, pt->y); // (10,20) (정상) 
    printf("두번째 구조체 값: (%d, %d)\n\n",
        (*ptr++).x, (*ptr++).y); // (30,20) (비정상 출력) -> (30, 40) (원래의 값)
 
    system("PAUSE");
    return 0;
}
cs



구조체문제풀어보기

문) 아래의 형식과 같이 구성된 회원정보를 Member라는 이름의 구조체를 작성하고 데이터를 입력하여 출력 화면과 같이 인쇄될 수 있도록 프로그래밍합니다.


참고) 데이터 입력시 문자열은 아래와 같이 작성할 수 있다.

sprintf(member.email, "abcd@naver.com");

출력 결과 화면)

회원정보 아이디 : green_c
회원정보 이름 : 홍길동
회원정보 모바일 : 010-1234-5678
회원정보 연락처 : 02-111-2222
회원정보 가입일 : 2018-02-01


---------------------------------------------------------------------------------
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
// #include <string.h> // strcpy 사용시
 
typedef struct {
    char id[21];            //아이디
    char pw[21];            //비밀번호
    char name[51];            //이름
    char gender;            //성별
    char email[51];            //이메일
    char mobile[14];        //휴대폰번호
    char phone[14];            //유선전화번호
    char zip1[8];            //우편번호1
    char address1[201];        //주소1
    char zip2[8];            //우편번호2
    char address2[201];        //주소2
    char birthday[11];        //생년월일
    char joindate[11];        //가입일
} Member;
 
void main() {
 
    Member member; //구조체 호출
 
    sprintf(member.id, "class");
    sprintf(member.pw, "123456879");
    sprintf(member.name, "남근곤");
    member.gender = 'm';
    sprintf(member.email, "abcd@naver.com");
    sprintf(member.mobile, "010-1234-5678");
    sprintf(member.phone, "02-111-2222");
    sprintf(member.zip1, "123-456");
    sprintf(member.address1, "서울 마포구");
    sprintf(member.zip2, "456-789");
    sprintf(member.address2, "서울 종로구");
    sprintf(member.birthday, "2000-01-01");
    sprintf(member.joindate, "2018-02-01");
 
 
    printf("회원정보 아이디 : %s\n", member.id);
    printf("회원정보 이름 : %s\n", member.name);
    printf("회원정보 모바일 : %s\n", member.mobile);
    printf("회원정보 연락처 : %s\n", member.phone);
    printf("회원정보 가입일 : %s\n", member.joindate);
 
    system("PAUSE");
}
cs


-제품구하기

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAX_NAME 50
 
struct Item {
    char name[MAX_NAME];
    int price;
    int num;
};
 
int main(int argc, char *argv[])
{
    int i;
    int count, sum = 0, total;
    struct Item *item = NULL;
 
    printf("항목의 갯수를 입력하세요.");
    scanf("%d"&count);
 
    item = (struct Item *)malloc(count * sizeof(item));
 
    for (i = 0; i<count; i++) {
 
        printf("\n품명: ");
 
        scanf("%s"&item[i].name);
 
        printf("\n단가: ");
        scanf("%d"&item[i].price);
 
        printf("\n수량: ");
        scanf("%d"&item[i].num);
 
    } // for end
 
    printf("\n-------------------------------------\n");
    printf("품명\t단가\t수량\n");
    printf("-------------------------------------\n");
 
    for (i = 0; i<count; i++) {
        printf("%s\t", item[i].name);
        printf("%d\t", item[i].price);
        printf("%d\n", item[i].num);
 
        sum += (item[i].price * item[i].num);
    }
 
    free(item);
 
    total = (int)(sum * 1.1);
    printf("\n-------------------------------------\n");
    printf("합계:%d\n", sum);
    printf("총액: %d  (부가세 10%%포함)\n", total);
 
    system("PAUSE");
    return 0;
}
cs






-성적구하기

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
 
#define MAX_NAME 20
#define SUBJECTS 3
 
struct Grade
{
    char name[MAX_NAME];        // 이름
    int score[SUBJECTS];        // 점수
    int total;            // 총점
    double average;            // 평균
};
 
int main(void)
{
    int students, i, j;
    struct Grade *grade;
    char *subject[SUBJECTS] = { "국어""영어""수학" };
    /////////////////////////////////////////////////////////
    // 학생 수 입력 및 메모리 할당
    printf("성적처리 할 학생 수를 입력하세요: ");
    scanf("%d"&students);
    grade = (struct Grade *)malloc(students*sizeof(struct Grade));
    /////////////////////////////////////////////////////////
    // 성적 입력
    for (i = 0; i<students; i++)
    {
        printf("**************** %d번째 학생 ****************\n", i + 1);
        printf("이름: ");
        scanf("%s", grade[i].name);
        for (j = 0; j<SUBJECTS; j++)
        {
            printf("%s: ", subject[j]);
            scanf("%d"&grade[i].score[j]);
        }
    }
    /////////////////////////////////////////////////////////
    // 성적 계산
    for (i = 0; i<students; i++)
    {
        grade[i].total = 0;
        for (j = 0; j<SUBJECTS; j++)
        {
            grade[i].total += grade[i].score[j];
        }
        grade[i].average = (double)grade[i].total / SUBJECTS;
    }
 
    /////////////////////////////////////////////////////////
    // 성적 출력
    printf("--------------------------------------------------\n");
    printf("이름\t| 국어\t| 영어\t| 수학\t| 총점\t| 평균\n");
    printf("--------------------------------------------------\n");
    for (i = 0; i<students; i++)
    {
        printf("%s\t| ", grade[i].name);
        for (j = 0; j<SUBJECTS; j++)
        {
            printf("%d\t| ", grade[i].score[j]);
        }
        printf("%d\t| ", grade[i].total);
        printf("%0.2f\n", grade[i].average);
    }
    printf("--------------------------------------------------\n");
    free(grade);        // 메모리 반납
    system("PAUSE");
    return 0;
}
 
cs


'스터디 > C,C++' 카테고리의 다른 글

C 문자열 거꾸로 출력하기  (8) 2018.02.12
C 문자열 자르기 문제  (7) 2018.02.12
배열포인터활용 성적구하기  (7) 2018.01.31
중첩반복문 별찍기  (7) 2018.01.26
C실행툴 DEV-C++ 설치  (5) 2018.01.22

 mame32v0120.vol1.egg

 mame32v0120.vol2.egg

 mame32v0120.vol3.egg

 mame32v0120.vol4.egg

 mame32v0120.vol5.egg

 mame32v0120.vol6.egg


[추억의 오락실 게임]

캐딜락 & 다이노서스 다운로드




      안녕하세요 오늘은 옛날에 오락실이나 동네 문방구 앞에 있던 자주 했던 캐딜락 게임 자료입니다.~!

      

       친구들과 학교끝나고 꼭 동네 문방구에 들려서 소세지나 불량식품 과자를 사먹으면서 백원만~! 백원만~! 

 

       하면서 같이 했던 캐딜락 입니다.



동네 문구점이나 슈퍼앞에 꼭 있던 이런 게임들이죠 메탈슬러그나, 캐딜락 등이죠~!!




PC에서 실행하는 파일은 마메(Mame) 파일입니다. 해당 파일의 롬파일만 추가하게 되면 

캐딜락 다이노서스 뿐만 아니라 록맨이나 기타 다른 게임도 진행할 수 가 있습니다.





게임을 시작하게 되면 처음 동전 넣는(?) 화면이 시작됩니다. 

기본키는 5,6번 셋팅후 동전 1,2 번으로 1p,2p 모두 충전하여 시작할 수가 있습니다.



환경 설정에 들어가면 조이스틱전용으로 키패드도 조절할 수 있으니 그대로 1,2p 연결하여 즐기시면 됩니다.~!! 


예전 생각하며 추억의 캐딜락 게임 Go Go~!!!!



'대외활동 > 라이프' 카테고리의 다른 글

불나방같은 봉사들의 모임  (323) 2018.04.06
봉천동사능거북이  (8) 2018.04.01
빨래 뮤지컬  (6) 2018.03.13
충무아트홀 충무스포츠센터 수영장  (27) 2018.02.21
충무스포츠센터 수영선생님  (7) 2018.01.25

안녕하세요 엘체프 GG 입니다.

오늘은 드디어 어렵다는 포인터를 배웠는데 먼말인지....ㅋㅋ 일딴 반복숙달하고 이해할 예정.

배열포인터 성적 구하는 로직입니다.


-포인트배열의 활용 성적구하기

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
32
33
34
#include <stdio.h>
#include <stdlib.h>
#define LESSONS 3
int main(void)
{
    int students;                // 학생수
    int sum = 0;                // 합계
    int l, s;                // for루프를 위한 임시변수
    int score[][LESSONS] = {
        { 859095 },            // 1번째 학생의 점수
        { 708260 },            // 2번째 학생의 점수
        { 708260 },
        { 859095 },            // 1번째 학생의 점수
        { 708260 },            // 2번째 학생의 점수
        { 708260 },
        { 708260 },
        {788492} };            // 8번째 학생의 점수
    char *lesson[] = { "Korean""English""Math" };
 
    students = sizeof(score) / sizeof(score[0]);    // 학생 수 계산
    for (l = 0; l<LESSONS; l++)             // 과목에 대해 루프
    {
        sum = 0;
        for (s = 0; s<students; s++)         // 학생 수만큼 루프
        {
            sum += score[s][l];        // 과목별 총합 계산
        }
        printf("[%7s] Total: %d, ", lesson[l], sum);
        printf("Average: %0.2f\n", (double)sum / students);
    }
    system("PAUSE");
    return 0;
}
 
cs


-배열포인터의 활용 성적구하기


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
32
33
34
35
36
#define _CRT_SECURE_NO_WARNINGS  /* scanf사용시 */
#include <stdio.h>
#include <stdlib.h>
#define LESSONS 3
 
int main(void)
{
    int students, sum = 0, l, s;
    char *lesson[] = { "Korean""English""Math" };
    int(*score)[LESSONS] = NULL;
    printf("학생 수를 입력하세요: ");
    scanf("%d"&students); //입력받기
    score = (int(*)[LESSONS])malloc(sizeof(int[LESSONS])*students); //malloc 힙역역의 자원을 쓴다.
    for (s = 0; s<students; s++)             // 학생 수만큼 루프
    {
        printf("%d번째 학생의 점수: ", s + 1);
        for (l = 0; l<LESSONS; l++)            // 과목 수만큼 루프
        {
            scanf("%d"&score[s][l]);        // 점수 입력 받음
        }
    }
    for (l = 0; l<LESSONS; l++)                 // 과목 수만큼 루프
    {
        sum = 0;
        for (s = 0; s<students; s++)             // 학생 수만큼 루프
        {
            sum += score[s][l];            // 과목별 총합 계산
        }
        printf("[%7s] Total: %d, ", lesson[l], sum);
        printf("Average: %0.2f\n", (double)sum / students);
    }
    free(score);// 메모리 해제 ex)자바의 가비지컬럭터 자원반납
    system("PAUSE");
    return 0;
}
 
cs


-2차원 포인터의활용 성적구하기.




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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#define _CRT_SECURE_NO_WARNINGS  /* scanf사용시 */
#include <stdio.h>
#include <stdlib.h>
#define LESSONS 3
 
int main(void)
{
    //////////////////////////////////////////////
    //변수부
    int students, sum = 0, l, s;
    int *lessons = NULL;
    int **score = NULL;
    //////////////////////////////////////////////
    //입력부
    printf("학생수를 입력하세요: ");
    scanf("%d"&students);
    score = (int **)malloc(sizeof(int *)*students);    // 세로축에 해당하는 메모리 할당
    lessons = (int *)malloc(sizeof(int)*students);
    
    ///////////////////////////////////////
    //처리부//출력부
    for (s = 0; s<students; s++)                 // 학생 수만큼 루프
    {
        printf("%d번째 학생의 수강과목 수: ", s + 1);
        scanf("%d"&lessons[s]);                // 학생별 수강과목 수 입력
        score[s] = (int *)malloc(sizeof(int)*lessons[s]);    // 가로축에 해당하는 메모리 할당
        printf("%d번째 학생의 점수 (%d개): ", s + 1, lessons[s]);
        
        for (l = 0; l<lessons[s]; l++)            // 과목 수만큼 루프
            scanf("%d"&score[s][l]);        // 점수 입력
    }
 
    for (s = 0; s<students; s++)                 // 학생 수만큼 루프
    {
        sum = 0;
        for (l = 0; l<lessons[s]; l++)
            sum += score[s][l];            // 학생별 평균 계산
        printf("%d번째 학생: %0.2f\n", s + 1, (double)sum / lessons[s]);
    }
    ///////////////////////////////////////////
    //자원반납부
    for (s = 0; s<students; s++)                // 학생 수만큼 루프
        free(score[s]);                    // 가로축에 해당하는 메모리 반납
    free(score);                        // 세로축에 해당하는 메모리 반납
    free(lessons);
    system("PAUSE");
    return 0;
}
 
cs



감사합니다.



'스터디 > C,C++' 카테고리의 다른 글

C 문자열 자르기 문제  (7) 2018.02.12
구조체  (6) 2018.02.05
중첩반복문 별찍기  (7) 2018.01.26
C실행툴 DEV-C++ 설치  (5) 2018.01.22
ASCII 코드 도표  (6) 2018.01.18

안녕하세요 엘체프 GG 입니다.

for문을 활용한 별찍기 입니다.


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
32
33
34
package jse_ex_20180123_2;
 
public class Diamond {
    public static void main(String[] args) {
 
        // 상단 정삼각형을 출력하는 반복문
        for (int i = 0; i < 5; i++) {
            for (int j = i; j < 5; j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < i; j++) {
                System.out.print("*");
            }
            for (int j = 0; j < i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        // 하단 역삼각형을 출력하는 반복문
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < i; j++) {
                System.out.print(" ");
            }
            for (int j = i; j < 5; j++) {
                System.out.print("*");
            }
            for (int j = i + 1; j < 5; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
 
cs



감사합니다.


'스터디 > JAVA' 카테고리의 다른 글

자바 컬렉션프레임워크(CollectionFramework)_1  (302) 2018.02.22
자바 내부 클래스  (334) 2018.02.22
자바 2차원배열 성적구하기  (6) 2018.01.30
자바 반복문 성적내기  (8) 2018.01.30
자바 구구단 로직  (8) 2018.01.30

안녕하세요 엘체프 GG 입니다.

2차원 배열의 성적 합계 평균 구하는 로직입니다.


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package jse_ex_20180125_1;
 
public class arryEx4 {
 
    public static void main(String[] args) {
        //2차원 배열 성적구하기
        
        int score[][] = new int [][] {
            {10,11,15},
            {20,16,15},
            {20,27,25}
                                        };//배열의 선언+할당+초기화 
    
//        System.out.println("score : " + score.length);                                
        
        int num = score.length;     //인원수
        int textNum = score[0].length;
//        System.out.println("textNum : " + textNum);
        int sum [] = new int [num];//총점
        int avg [] = new int [num];//평균
        
/*        //1명의 총점을
        sum[0] =0;//초기화
        for(int i = 0; i < textNum; i++){
//            sum[0] = sum[0] + score[0][i];
            sum[0] +=  score[0][i];
        }
        System.out.println("첫번째 합은 : " + sum[0]);
        avg [0] = sum[0] / textNum;
        System.out.println("첫번째 평균은 : " + avg[0]);*/
        
        for(int i = 0; i < num; i++ ){//인원수
            for(int j =0; j < textNum; j++){
//                sum[i] = sum[i] + score[i][j];
                sum[i] += score[i][j];
            }//for-j
//            System.out.println("합은 : " + sum[i]);
//            System.out.printf("%d번 학생의 총점 = %d\n" ,i+1 ,sum[i]);
            avg[i]=sum[i] / textNum;
//            System.out.printf("%d번 학생의 평균 = %d\n" ,i+1 ,avg[i]);
            
            System.out.printf("%d번 학생의 총점 = %d점, 평균 = %d점\n\n" ,i+1,sum[i] ,avg[i]);
//            System.out.println("평균은 : " + avg[i]);
        }//for-j    
        
    }//end main
 
}//end class
 
cs



감사합니다.


'스터디 > JAVA' 카테고리의 다른 글

자바 내부 클래스  (334) 2018.02.22
자바 for문 별찍기  (292) 2018.01.30
자바 반복문 성적내기  (8) 2018.01.30
자바 구구단 로직  (8) 2018.01.30
이클립스 로딩화면 변경하기  (5) 2018.01.22

+ Recent posts