c언어 성적 프로그램 오류 문제

c언어 성적 프로그램 오류 문제

작성일 2016.05.17댓글 1건
    게시물 수정 , 삭제는 로그인 필요

#include<stdio.h>
#include<string.h>
 // 제목: 성적프로그램 작성


void main()
{
 int paper[20][20] =
 { { 1, 3, 2, 3, 4, 2, 3, 1, 4, 2, 3, 4, 1, 4, 1 },//1번 강강시
 { 1, 2, 2, 2, 4, 2, 3, 1, 4, 2, 2, 1, 4, 3, 2 },//2번 요사이
 { 4, 3, 2, 3, 4, 2, 3, 1, 4, 2, 3, 2, 2, 1, 3 },//3번 기하인
 { 1, 3, 2, 2, 4, 3, 3, 4, 4, 2, 4, 1, 3, 4, 4 },//4번 송중기
 { 1, 3, 2, 3, 4, 2, 3, 3, 4, 1, 2, 4, 1, 2, 2 },//5번 한예진
 { 1, 1, 2, 4, 4, 3, 3, 2, 1, 3, 1, 3, 4, 1, 1 },//6번 넌솔로
 { 1, 3, 2, 3, 3, 2, 3, 1, 4, 2, 3, 4, 1, 2, 3 },//7번 커풀은
 { 1, 3, 2, 3, 4, 2, 3, 1, 4, 2, 3, 3, 1, 4, 3 },//8번 지옥얌
 { 2, 3, 3, 3, 3, 2, 4, 1, 4, 2, 2, 1, 1, 1, 1 },//9번 송상인
 { 3, 4, 4, 2, 4, 1, 2, 1, 4, 2, 4, 2, 2, 1, 3 },//10번 나이엘라
 { 2, 4, 2, 3, 1, 4, 2, 3, 2, 1, 4, 2, 1, 1, 3 },//11번 비상
 { 3, 4, 1, 2, 3, 1, 2, 1, 1, 3, 2, 1, 2, 1, 2 },//12번 달구니
 { 3, 2, 4, 2, 4, 1, 2, 1, 4, 2, 4, 2, 2, 1, 3 },//13번 삼이다
 { 3, 1, 3, 1, 2, 1, 1, 4, 1, 2, 4, 2, 4, 2, 3 },//14번 비라라
 { 3, 1, 3, 1, 1, 1, 1, 4, 1, 1, 2, 1, 4, 2, 1 } };//15번 오인가

 int answer[15] = { 1, 3, 2, 3, 4, 2, 3, 1, 4, 2, 3, 3, 1, 4, 3 };//문항별 정답
 int score[10] = { 1,1,1,1,1,1,1,1,1,1 };//각 석차 변수
 int bun[10] = { 1,2,3,4,5,6,7,8,9,10 };// 각 번호 변수
 int jumsu[15] = { 0 };//각 문항별 점수 저장 변수
 int ok[10][15] = { 0 }, ok2[15] = { 0 };//각 문항별 맞은 개수 저장 변수
 int av2=0;//점수 평균 합계
 float av1=0;//점수 평균
 char name[20][20] = { "강강시","요사이","기하인","송중기","한예진","넌솔로","커풀은","지옥얌","송상인","나이엘라","비상","달구니","삼이다","비라라","오인가"};//이름

 printf("\n각 문항 8점씩이고\n11번,9번,6번,4번,2번 문항만 4점씩 입니다\n");
 printf("\n\t\t\t\t\t      ■ 문항별 채점 결과 ■\n");
 printf("┌--------------┬-------------------------------------------------------------------------------┬-----------┐\n");
printf("│ 이름 번호│문항: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 │ 점수/평균 │\n");
 printf("├--------------┼-------------------------------------------------------------------------------┼-----------┤\n");
 for (int i = 0; i<15; i++)//이름,번호,각 문항별 정답 과 틀린답,점수 출력
 {
  printf("│%8s", name[i]);//각 이름 출력
  printf("  %2d번│   ", i + 1);//각 번호 출력
  for (int j = 0; j<15; j++)//정답 밑 틀린답 분별
  {
   if (answer[j] == paper[i][j])//각 문항 8점
   {
    if (&answer[j] == &answer[10])//문항 11번 4점       ★★문제 구간 ★★
    {
     ok[i][j] += 1;
     printf("   ○");
     jumsu[i] += 4; //점수 4점 저장
     continue;
    }
    else if (&answer[j] == &answer[8])//문항 9번 4점
    {
     ok[i][j] += 1;
     printf("   ○");
     jumsu[i] += 4;
     continue;
    }
    else if (&answer[j] == &answer[5])//문항 6번 4점
    {
     ok[i][j] += 1;
     printf("   ○");
     jumsu[i] += 4;
     continue;
    }
    else if (&answer[j] == &answer[3])//문항 4번 4점
    {
     ok[i][j] += 1;
     printf("   ○");
     jumsu[i] += 4;
     continue;
    }
    else if (&answer[j] == &answer[1])//문항 2번 4점
    {
     ok[i][j] += 1;
     printf("   ○");
     jumsu[i] += 4;
     continue;
    }
    else
    {
     printf("   ○");
     jumsu[i] += 8;//각 점수 8점 저장
     ok[i][j] += 1;//각 문항별 맞은 개수 저장            ★★문제 구간 ★★
    }
   }
   else
    printf("   X");
  }
  printf(" │ 점수 :%3d │\n", jumsu[i]);// 점수 출력
 }//end for
 for (int i = 0; i < 10; i++)//점수 합계
  av2 += jumsu[i];
 printf("├--------------┼-------------------------------------------------------------------------------┼-----------┤\n")


 

개속 오류 뜨내요 ㅠㅠ

도와주세요


     ok[i][j] += 1;
     printf("   ○");
     jumsu[i] += 4;   

이 식이 문제인거 같은대 왜 이게 문제인건지 모르겠어요 ㅠㅠ


도와 주세요 천재 님들!!!






profile_image 익명 작성일 -

1.  몇 가지 의심되는 부분들을 수정했습니다. 
    - 초기 설정값이 있는 배열 선언들은 전역변수로 옮겼습니다. (오류와 무관한 사항) 

    - paper[][], name[][] 등 이중배열의 갯수를 실제 사용갯수로 변경했습니다. (20 -> 15로 수정) 

    - 점수를 계산하는 부분을 4점 자리와 8점 자리 두가지 if ~ else 문으로 수정했습니다. 

    - 예제에서 사용하신 if (&answer[j] == &answer[1]) 등의 비교문은 정상 동작하지 않습니다. 
      정수형이기 때문에, 그냥 if (answer[j] == answer[1]) 형태로 사용하시면 됩니다. 

2. 수정된 소스코드입니다.  (참고용) 
#include<stdio.h>
#include<string.h>
 // 제목: 성적프로그램 작성

#include <stdio.h>

int paper[15][15] =
 { { 1, 3, 2, 3, 4, 2, 3, 1, 4, 2, 3, 4, 1, 4, 1 },      //1번 강강시
   { 1, 2, 2, 2, 4, 2, 3, 1, 4, 2, 2, 1, 4, 3, 2 },      //2번 요사이
   { 4, 3, 2, 3, 4, 2, 3, 1, 4, 2, 3, 2, 2, 1, 3 },      //3번 기하인
   { 1, 3, 2, 2, 4, 3, 3, 4, 4, 2, 4, 1, 3, 4, 4 },      //4번 송중기
   { 1, 3, 2, 3, 4, 2, 3, 3, 4, 1, 2, 4, 1, 2, 2 },      //5번 한예진
   { 1, 1, 2, 4, 4, 3, 3, 2, 1, 3, 1, 3, 4, 1, 1 },      //6번 넌솔로
   { 1, 3, 2, 3, 3, 2, 3, 1, 4, 2, 3, 4, 1, 2, 3 },      //7번 커풀은
   { 1, 3, 2, 3, 4, 2, 3, 1, 4, 2, 3, 3, 1, 4, 3 },      //8번 지옥얌
   { 2, 3, 3, 3, 3, 2, 4, 1, 4, 2, 2, 1, 1, 1, 1 },      //9번 송상인
   { 3, 4, 4, 2, 4, 1, 2, 1, 4, 2, 4, 2, 2, 1, 3 },      //10번 나이엘라
   { 2, 4, 2, 3, 1, 4, 2, 3, 2, 1, 4, 2, 1, 1, 3 },      //11번 비상
   { 3, 4, 1, 2, 3, 1, 2, 1, 1, 3, 2, 1, 2, 1, 2 },      //12번 달구니
   { 3, 2, 4, 2, 4, 1, 2, 1, 4, 2, 4, 2, 2, 1, 3 },      //13번 삼이다
   { 3, 1, 3, 1, 2, 1, 1, 4, 1, 2, 4, 2, 4, 2, 3 },      //14번 비라라
   { 3, 1, 3, 1, 1, 1, 1, 4, 1, 1, 2, 1, 4, 2, 1 } };    //15번 오인가
int answer[15] = 
   { 1, 3, 2, 3, 4, 2, 3, 1, 4, 2, 3, 3, 1, 4, 3 };//문항별 정답
int score[10] = { 1,1,1,1,1,1,1,1,1,1 };//각 석차 변수
int bun[10] = { 1,2,3,4,5,6,7,8,9,10 };// 각 번호 변수
char name[15][10] = { "강강시","요사이","기하인","송중기","한예진","넌솔로","커풀은","지옥얌","송상인","나이엘라","비상","달구니","삼이다","비라라","오인가"};  //이름


void main()
{

 int jumsu[15] = { 0 };//각 문항별 점수 저장 변수
 int ok[15][15] = { 0 }, ok2[15] = { 0 };//각 문항별 맞은 개수 저장 변수
 int av2=0;//점수 평균 합계
 float av1=0;//점수 평균

 int i, j;

 printf("\n각 문항 8점씩이고\n11번,9번,6번,4번,2번 문항만 4점씩 입니다\n");
 printf("\n\t\t\t\t\t      ■ 문항별 채점 결과 ■\n");
 printf("┌--------------┬-------------------------------------------------------------------------------┬-----------┐\n");
 printf("│ 이름 번호│문항: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 │ 점수/평균 │\n");
 printf("├--------------┼-------------------------------------------------------------------------------┼-----------┤\n");

 for (i = 0; i < 15; i++) //이름,번호,각 문항별 정답 과 틀린답,점수 출력
 {
  printf("│%8s", name[i]);       //각 이름 출력
  printf("  %2d번│   ", i + 1);  //각 번호 출력
  for (j = 0; j < 15; j++)    //정답 밑 틀린답 분별
  {
   if (answer[j] == paper[i][j])//각 문항 8점
   {
  if ((j==10) || (j==8) || (j==5) || (j==3) || (j==1))  {
  ok[i][j] += 1;
           printf("   ○");
           jumsu[i] += 4; //점수 4점 저장
  }
  else  {
           printf("   ○");
           jumsu[i] += 8;//각 점수 8점 저장
           ok[i][j] += 1;//각 문항별 맞은 개수 저장            ★★문제 구간 ★★
       }
   }
   else {
     printf("   X");
   }
  }
  printf(" │ 점수 :%3d │\n", jumsu[i]);  // 점수 출력
 } //end for
 

 for (int i = 0; i < 10; i++) //점수 합계
  av2 += jumsu[i];
 printf("├--------------┼-------------------------------------------------------------------------------┼-----------┤\n");
}

도움이 되셨길 바랍니다. 
감사합니다.


c언어 성적 프로그램 오류 문제

... h> // 제목: 성적프로그램 작성 void main() { int... 개속 오류 뜨내요 ㅠㅠ 도와주세요 ok[i][j] += 1; printf(" ○"); jumsu[i] += 4; 이 식이 문제인거...

c언어 코딩 오류 문제

c언어 코드를 짜고 있는데 값이 안나오는 문제가 발생했는데 도저히... 계산하다 문제가 생겨서 프로그램이 halt 된다는 얘긴가요? 좀 더 정보가...

c언어 배열관련 성적프로그램

밑에있는 "2차"파일을 c언어 pdf에 있는 조건으로 해결해주실수있나요 저도 만들어 보긴했는데 문제도 많고 제대로 안되서 질문올립니다 힌트로...

c언어 성적 입력받기

... //Y, N 이외 알파벳 입력시 오류 메세지... //메인 함수에서 N을 입력 받으면 프로그램을 종료하는 함수 void main() { char c; do { printf("성적...

# c언어성적프로그램짜기★"

c언어공부를 하다가; 성적프로그램짜는게 잇어서 해보고잇거든요... 하는거니깐 문제가 없는데요^^;; /*구조체 선언하기*/ struct student{ char name[80]...

C언어 성적 프로그램 질문입니다!

... 일단 문제는 아래와 같습니다 성적 프로그램... main.c 파일에는 위 함수의 선언 및 정의가 존재 하지않음. 결론, C언어 공부를 다시 할...

C언어 성적프로그램 돌리는 방법

문제) 이름과 세 과목의 성적을 입력받아 세... 출력하는 프로그램을 작성하시오. 이름 : XXX... C언어 시험에 관련된겁니다 ㅠㅠ 알기쉽고...

c언어 성적프로그램

... 주는 프로그램입니다. 초기화방식을 사용하구요 예)... 가령 n명의 성적을 기록한 배열은 어찌 선언할까요? int... 풀어내야할 문제로 보입니다. 아직 프로그래밍 언어에...