게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
안녕하세요! 매틀랩 고수분들 계신가요?
게시물ID : science_48708짧은주소 복사하기
작성자 : 핑크공주님
추천 : 0
조회수 : 788회
댓글수 : 2개
등록시간 : 2015/04/14 17:31:26
옵션
  • 본인삭제금지
안녕하세용! 본삭금 후다닥 걸어요!

봄날이라 봄바람에 마음도 살랑살랑 말랑말랑 해지내요! 봄은 너무 좋은거 같아용 ㅎㅎ


다름이 아니라

학부생들 실습용으로 Matlab 프로그램을 만들고 있는 중입니다

매틀랩으로 원카드 프로그램을 짜고 있는 중인대

for 문에서 자꾸 오류가 나내요 ㅠ

실력이 너무 보잘것 없어서 그런가 봐용 ㅎㅎ


아직 짜고 있는 중이라 완성된건 아니지만 

멋진 과게분들에게 도움을 요청해볼까 해서 찾아왔습니다


카드내기 부분에서 오류가 나기 시작하는대


Error using  == 
Matrix dimensions must agree.

Error in onecard (line 72)
    if  mine{i,2} == start{1,2} | mine{i,2} == start{1,3}

요렇게 나내요 


if 문 조건에 너무 많은 조건을 넣어서 그런건지;;

개속 실행하다 보면 어쩔때는 되고 어쩔때는 안되고...

미치겠내요 ㅠ

조언좀 부탁드립니다 !!


%-----------------------------------------------------------------------%
% 작성일 : 2015. 4. 13
% 작성자 : 핑크공주님
%-----------------------------------------------------------------------%

%% 변수 초기화
clear all, close all, clc;

%% 카드댁 만들기

% 카드장수 설정
number = 1:13;

% 문자열 함수 입력을 위한 셀 생성
% card = cell(1,3);

% 생성된 셀에 문자열 상수 입력
card(1,1) = {'diamond'};
card(1,2) = {'clover'};
card(1,3) = {'heart'};
card(1,4) = {'space'};

% 공행렬 생성
card2 = {0,0,0};

% % 랜덤값 생성
rn = randperm(52);

% 문자열과 숫자를 합친 카드댁 생성
for i = 1:13
diamond(i,:) = cat(2,rn(1,i),card(1,1), number(1,i));
clover(i,:) = cat(2,rn(1,13+i),card(1,2), number(1,i));
heart(i,:) = cat(2,rn(1,26+i),card(1,3), number(1,i));
space(i,:) = cat(2,rn(1,39+i),card(1,4), number(1,i));
end

% 카드덱 섞기
Total = [diamond; clover; heart; space];
Total2 = sortrows(Total);

% 섞은 카드덱 위에 공행렬 입력 (게임중 카드제출후 카드섞는대 사용)
Total2 = [card2; Total2];

%% 게임 시작

% 카드 한장 뒤집기
fprintf('카드 한장을 뒤집습니다!')
start = Total2(2, :);
sprintf('처음카드는 카드는 %s %d 입니다',start{1,2},start{1,3})

% 카드 덱에서 첫번쨰 카드 제외하기
Total3 = Total2(3:end, :);

% 사용자 카드 6장 받기
sprintf('게임을 시작합니다! 카드 여섯장을 받아옵니다!')
sprintf('    목록  |   모양   |  카드숫자')
mine = Total3(1:6,:)

% 카드 덱에서 사용자 6장 카드 제외하기
Total4 = Total3(7:end,:);


%% while 문 시작예정지

% % 내가 들고있는 카드 장수 확인
HM = length(mine);

% 카드 내기
for i = 1:HM
    if  mine{i,2} == start{1,2} | mine{i,2} == start{1,3}
        input_number = input('어떤 카드를 내시겠습니까? (목록번호를 넣어주세요) : ')
        [x,y] = find(mine{i,1},input_number);
        print_card = mine(y,:);
        sprintf('낸 카드는 %s %d 입니다',print_card{1,2},print_card{1,3})
        mine1 = mine{1:input_number,:};
        mine2 = mine{input_number:end,:};
        mine = [mine1; mine2];
        break
    end
    
    
    if mine{i,2} == start{1,2} | mine{i,2} == start{1,3}
        sprintf('카드를 가져갑니다')
        draw_card = Total4(1,:);
        sprintf('뽑은 카드는 %s %d 입니다',draw_card{1,2},draw_card{1,3})
        mine = [mine; draw_card]
        Total4 = Total4(2:end,:);
    end
    
end

꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호