모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 게시물ID : computer_129402
    작성자 : 내일의과거
    추천 : 0
    조회수 : 810
    IP : 61.41.***.8
    댓글 : 11개
    등록시간 : 2013/11/21 23:16:14
    http://todayhumor.com/?computer_129402 모바일
    c언어 포인터 사용하는 방법좀 도와주세요 ^^//
    몇일전에도 오류가 생겨서 도움을 요청한적이 있던 유저입니다. (그떄 도와주신 모든분들 감사드려요!)

    덕분에 완성은 했는데..


    1. 자료 입력
    2. 자료 읽기
    3. 총점과 평균
    4. 등수 계산 
    5. 자료 출력
     6. 종     료 

    이런걸 만드는거거든요! 완성은 어찌저찌 했습니다! 그런데.. 교수님이 포인터를 이용해서 

    2번을 하지않았으면 3,4,5번을 눌렀을떄 자료를 읽어오지 않아서 3,4,5번을 할 수 없습니다.
    또 3번을 안했으면 4,5,번을 눌렀을떄 3번이없어서 못해요~
    4번을안하면 5번을 눌렀을떄 4번이없어서 안되요~ 라는게 나오도록 해보라고하시는데 

    포인터를 이용하라는점이 잘 와닫지가 않습니다.  우선 소스부터 적고 제나름대로 생각한거 적어볼게요~



    #ifndef _TEST_H_

    #define _TEST_H_

     

    #include <stdio.h>

    #include <windows.h> //Sleepsystem("cls")를사용하기위해추가

     

    int MENU(const char fn[], int d[][6]); //메뉴

    int FileDataInput(const char FN[]); //파일쓰기

    int FileDataRead(const char FN[],int d[][6]); //파일읽기

    int Total(const char FN[],int d[][6]); //총점구하기

    int Rank(const char FN[],int d[][6]); //등수구하기

    int Output(const char FN[],int d[][6]); //자료출력

     

    #else

    #endif

     

    /////////////////////////////////////////

     

    #include "test.h"

     

    void main()

    {

    char fn[30]; //파일이름될것

    int d[30][6]; //자료저장용

    int *LineNum;

     

    FILE*fp; //파일포인터

    puts("*******************************");

    printf("파일이름입력: ") ;

    scanf("%s",fn); //파일의이름지정

    fp=fopen(fn,"r"); //파일을읽기모드로열기

    if (fp==NULL)

    puts("파일생성에성공하였습니다.");//파일에아무것도없을경우

    else //새파일이아닐경우

    {

    puts("이미작성된파일입니다.");

    fclose(fp);

    }

    fp=fopen(fn,"a"); //이어적기형식으로열기

     

    while (Menu(fn,&LineNum,d)) //메뉴를실행한다.

    fclose(fp);

    }

     

    ///////////////////////////////////

     

     

    #include"test.h"

    int Menu(const char fn[],int *LineNum, int d[][6]) //메뉴

    {

    int MenuNum; //메뉴의1~6번을담당할정수형변수

    int a,i,t; //정수형변수a,i

    //fn= 파일불러오기용, d[][0]=a / d[][1]=b / d[][2]=c / d[][3]=total / d[][4]=Ave

    // d[][5]=Rank

     

    puts ("*************************");

    puts (" 1. 자료입력 ");

    puts (" 2. 자료읽기 ");

    puts (" 3. 총점과평균 ");

    puts (" 4. 등수계산 ");

    puts (" 5. 자료출력 ");

    puts (" 6. 종 료 ");

    puts ("*************************");

    printf ("메뉴번호입력: ");

    scanf ("%d", &MenuNum);

    switch(MenuNum) //스위치

    {

    case 1:

    FileDataInput(fn); //사용자지정함수FileDataInput

    break

    case 2:

    *LineNum=FileDataRead(fn,d); //FileDataRead에서갖고온자료의개수를LineNum 에저장

    printf("현재%d 개의자료가있습니다.\n",*LineNum);

    printf("자료를보고싶으시면1번아니면그외의버튼을눌러주세요. : ");

    scanf("%d",&a);

    fflush(stdin);

    if(a==1) // 입력받은값이1일경우이하를실행

    {

    for(i=0;i<*LineNum;i++)

    printf("%3d %3d %3d\n",d[i][0],d[i][1],d[i][2]); //자료출력

    puts("잠시후초기화면으로돌아갑니다.");

    Sleep(i*500); //자료를볼수있도록자료수*0.5초만금쉼

    system("cls"); //메뉴로돌아감

    }

     

    system("cls"); //화면지우고메뉴로돌아감

    break

    case 3:

    t= 여기가 질문포인트!!! (밑에다적어둘게요^^)

    if(t)

    {

    Total(fn,d); //사용자지정함수Total

    puts("total정보가저장되었습니다.");

    puts("잠시후초기화면으로돌아갑니다.");

    Sleep(1000);

    system("cls");

    break

    }

    else

    {

    printf("자료읽기를먼저해주세요'5cn");

    break

    }

    case 4:

    Rank(fn,d); //사용자지정함수Rank

    puts("Rank정보가저장되었습니다.");

    puts("잠시후초기화면으로돌아갑니다.");

    Sleep(1000);

    system("cls");

    break

    case 5:

    system("cls"); //단지깔끔함을위해추가

    printf("자료를출력합니다.\n");

    Output(fn,d); //사용자지정함수/전체출력

    printf("\n\n");

    break

    case 6:

    puts ("프로그램을종료합니다!!!"); //종료

    return 0;

    default :

    puts ("메뉴번호를잘못입력했습니다. 다시입력하세요");

    }

    return 1;

    }

     

    int FileDataInput(const char FN[]) //사용자지정함수

    {

    int a,b,c;

    char ch='y'

    FILE*fp;

    fp=fopen(FN,"a");

    puts("***************************************");

    while(ch=='y'||ch=='Y')

    {

    printf("세과목의점수입력: ");

    scanf("%d%d%d",&a,&b,&c);

    fprintf(fp,"%d %d %d\n",a,b,c);

    printf("Coutinue(y/n)?");

    fflush(stdin);

    scanf("%c",&ch);

    }

    fclose(fp);

    printf("파일에자료를출력했습니다.\n");

    puts("***************************************"); //파일이어적기로열어서

    //a b c를입력받아파일에저장

    return 1;

    }

     

     

    int FileDataRead(const char FN[],int d[][6])

    {

    FILE*fp;

    int i;

    fp=fopen(FN,"r"); //파일을읽기모드로불러온다

    if(fp==NULL) //파일이비어있으면끝

    return 0;

     

    i=0;

     

    while((fscanf(fp,"%d%d%d",&d[i][0],&d[i][1],&d[i][2]))!=EOF)

    i++; //비어있지않으면1줄당i1씩올라간다

     

    fclose(fp);

     

    return i; // i를반환한다(이게LineNum)

    }

     

    int Total(const char FN[],int d[][6])

    {

    FILE*fp;

    int j=0;

    fp=fopen(FN,"r"); //파일을읽어왔는데이게비어있으면종료

    if(fp==NULL)

    while((fscanf(fp,"%d%d%d",&d[j][0],&d[j][1],&d[j][2]))!=EOF)

    {

    d[j][3]=d[j][0]+d[j][1]+d[j][2]; //비어있지않으면d[][3]에다가total을지정한다

    d[j][4]=d[j][3]/3;

    j++;

    }

     

    fclose(fp);

    return 1;

    }

     

    int Rank(const char FN[],int d[][6])

    {

    FILE*fp;

    int i=0,j=0,count=FileDataRead(FN,d);

    fp=fopen(FN,"r");

    if(fp==NULL) //파일을읽어왔는데이게비어있으면종료

     

    while ((fscanf(fp,"%d%d%d", &d[i][0],&d[i][1],&d[i][2]))!=EOF)

    {

    d[i][5]=1; //Rank가될d[][4]1로초기화

    i++;

    }

    for(i=0; i<count-1; i++)

    {

    for(j=i+1; j<count; j++)

    {

    if(d[i][4]<d[j][4])

    d[i][5]++; //d[i][3] d[j][3]을순차적으로비교해서

    else if (d[i][4]>d[j][4])

    d[j][5]++; // 작은숫자의d[][4](rank)를하나씩올린다(낮춘다)

    else

    }

    }

    fclose(fp);

    return 1;

    }

     

    int Output(const char FN[],int d[][6])

    {

    FILE*fp;

    int i,j,count;

    fp=fopen(FN,"r");

    if(fp==NULL)

    count=FileDataRead(FN,d);

     

    printf("과목과목과목 총점 평균 등수\n");

    i=0;

    while(i<count)

    {

    j=0;

    while(j<6)

    {

    printf("%4d ",d[i][j]); //2~4번과정을통해얻은d[][1~5]

    j++; //순차적으로출력한다

    }

    printf("\n");

    i++;

    }

    fclose(fp);

    return 1;

    }

     


    음.. 우선은 이런 구조인데요..

    실행은 잘되요 1~6번까지 원하는대로 구현도되구! 그런데

    오늘 수업도중에 (수업에선 1~2까지만 만들고 나머지는 해오라고..하셨습니다 ㅋ..)

    포인터로 LineNum 이놈을 잡더라구요.. 왜 이걸 포인터로 잡았는지 아직도 영 감이안옵니다 이걸사용하면 어떻게

    2번을 안눌렀을때 3,4,5에서 2번안눌러서안되요~ 라고 뜨게할수있는거지요?


    저는 처음에 리턴값이 1이니까  어떤 변수 하나주어주고

    if(어떤변수=Total) 이런식으로하면 만약에 Total을 사용했다면 리턴 1(참)이되서 실행시키고 Total을 사용한적이없으면 진리값이 0으로 거짓이되서 실행이 안되게 하려했는데 이것도 안되더라구요..


    대체 왜  LineNum을 포인터로 잡으신거이실까요?+ 저걸 어떻게 이용해야지 교수님이 원하시는걸 만들수있을까요 ㅠ




    이 게시물을 추천한 분들의 목록입니다.
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    371763
    컴이 날라다니네여 [4] 시인과촌된장 24/11/17 18:38 238 2
    371762
    인터넷업무 위주 컴퓨턴데 어떤점이 부족할까요? [19] 차케라 24/11/14 10:11 408 1
    371761
    안녕하세요 선생님들 cpu고민이 되어서 질문드려봅니다 [9] 후라이케촵찹 24/11/10 18:18 477 2
    371760
    데스크탑 알림 프로그램을 찾습니다(도움ㅠㅠ) [7] 본인삭제금지 후천적 24/11/07 18:10 424 1
    371759
    중학교 들어갈 아들이 사용할 컴퓨터입니다. [13] 베스트금지베오베금지본인삭제금지외부펌금지 김차장™ 24/11/07 12:28 728 1
    371758
    LD플레이어로 게임을 하면 화면이 깨져 버립니다 [10] 후천적 24/11/06 14:19 568 1
    371757
    256g sd 카드 말인데 [2] 맥플러리 24/11/05 11:26 568 2
    371756
    노트북 노화로 인해 교체시기가 다가온것 같은데. 고르기가 너무 힘듭니다. [8] 창작글본인삭제금지 단단a 24/11/05 09:32 535 0
    371754
    선생님들) 컴퓨터 비교좀 가능할까요? 셋중에 뭐가 제일 좋을지 추천좀 해 [8] 팬티형 24/10/31 10:25 811 3
    371752
    좆댓어 [18] 싼타스틱4 24/10/28 00:48 1171 4
    371751
    컴알못이 CPU 업그레이드 질문 드립니다. [7] 대고참 24/10/24 22:12 772 0
    371750
    파워 가격차이만큼 수명이나 성능차이가 있을까요 [5] vegas999 24/10/23 14:00 813 2
    371749
    아들 컴터 사주려는데 조언 좀 부탁드립니다 [7] 미춰붜뤼겠눼 24/10/23 10:39 936 2
    371748
    날이 추워지니까 FAN들이 소리를 내네요 [2] ㅗㅠㅑ 24/10/22 09:01 815 2
    371747
    노트북 교체시기인가 합니다. 노트북 고르는 것 도와주세요. [10] 본인삭제금지 도시샤 24/10/21 16:56 936 0
    371746
    고수님들 컴퓨터 견적 질문좀 드립니다. [6] 오후10시47분 24/10/21 06:11 878 1
    371744
    GTA5 옵션 관련 질문 드립니다. (너무 버벅되요...) [11] 본인삭제금지 MincePie 24/10/19 12:04 891 1
    371743
    쉬프트키가 안먹혀요 도와주세요 [3] 맥플러리 24/10/19 11:03 1040 3
    371741
    진짜 인터넷때문에 돌아버릴것 같아요 제발 도와주세요 [10] 대고참 24/10/14 19:32 1046 1
    371740
    모니터 6개 입니다. 구성 [2] Lunatic 24/10/14 17:06 1159 4
    371739
    와 스피커 잡음해결 [3] Oh_My!_Girl 24/10/14 00:51 1135 1
    371737
    이런 스피커 잡음은 어떻게 해결해요? [5] 본인삭제금지 Oh_My!_Girl 24/10/13 21:09 917 1
    371735
    원래 스피커도 발열이 있나요? [3] 본인삭제금지 Oh_My!_Girl 24/10/13 15:14 798 1
    371734
    스피커 선을 본체에 꼽는거랑 모니터에 꼽는거랑 음질은 동일한가요? [4] 본인삭제금지 Oh_My!_Girl 24/10/09 16:52 974 1
    371733
    hdmi 선이 길어질수록 데이터 전송이 늦어지나요 [10] 맥플러리 24/10/09 11:33 1261 2
    371732
    다들 사진 파일을 어디에 보관하시나요? [14] 베스트금지베오베금지본인삭제금지 전여자친구 24/10/09 01:46 1096 3
    371731
    PC 업글했습니다 하하.. 그리고 질문이요 !! [12] 본인삭제금지 유아셀a 24/10/07 20:38 921 0
    371730
    아웃룩에서 전체 메일함 만드는 법 없나요? [2] MincePie 24/10/07 14:42 963 0
    371729
    펑션키가 자꾸 잠깁니다 라바야데르 24/10/07 08:48 812 0
    371728
    오이오이.. 기다리고 있었다구! [10] 싼타스틱4 24/10/04 04:12 1147 5
    [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [다음10개▶]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈