#include <stdio.h>
#include <string.h>
int main(void)
{
int manu;
char name[100];
int call[100];
char mail[100];
char yn;
printf("<메뉴> 1. 주소록입력 2. 검색 3. 전체 출력 4. 종료 ");
scanf("%d", &manu);
if(manu == 1)
{
for(int i=0; i<100; i++)
{
printf("이름을 입력하세요 : ");
scanf("%s", &name[i]);
printf("메일주소를 입력하세요 : ");
scanf("%s", &mail[i]);
printf("전화번호를 입력하세요 : ");
scanf("%d", &call[i]);
printf("추가로 입력하실건가요 (y/n) : ");
scanf("%s", &yn);
if(yn == 'n' || yn == 'N')
{
continue;
}
}
}
}
저 if문에서 n를 누르면 나가게 메뉴쪽으로 나가야되는대 goto사용하지말고 쓰라는대... 나가는 방법좀 알려주세요 ㅜㅜ
<조건>
① 프로그램이 실행되면 다음과 같은 내용이 출력된다.
<메뉴>
1. 주소록 입력
2. 검색
3. 전체 출력
4. 종료
선택(1~4):
② 1. 주소록 입력을 선택하면 한사람에 대한 이름, 전화번호, 이메일 주소 입력 받는다.
한사람 입력이 끝나면 “계속 입력하시겠습니까(y/n)” 메시지가 출력되고 y를 입력하면 계속 다음 사람의 주소정보를 입력받고 y가 아닌 다른 문자를 입력하면 입력을 종료하고 <메뉴> 리스트가 다시 출력된다.
③ 2. 검색이 선택하면 “1: 이름으로 검색 2:이메일로 검색 선택 ” 메시지가 출력되고 둘 중 하나를 입력하면 각 기준에 따라 입력된 사람의 데이터가 검색되어 출력된다.
출력이 끝나면 <메뉴> 리스트가 다시 출력된다.
④ 3. 전체 출력이 선택되면 입력되었던 모든 사람의 주소가 출력되고 <메뉴> 리스트가 다시 출력된다.
⑤ 3. 종료를 입력하면 프로그램을 종료한다.
(모든 입력데이터에 대해서는 오류검사를 실시하여 허락된 범위가 아닌 데이터가 들어오면 오류메시지를 출력하고 다시 입력 받도록 한다.)
2번조건에 달성해야되는대 ㅜㅜ 미치겟네요
y는 재입력 n는 메뉴로 나머지는 오류확인해서 다시입력하라해야합니다 ㅜㅜ
scanf("%s", &yn;); ->scanf("%c",&yn;); 이거 일단 에러인데
while문을 적절히활용해 그리고 goto같은건 쓰면존나안좋은거고 변수이름좀 재대로지어라
call은뭐여시발 전화번호냐 manu는또먼데
123213// 미치겟네여...
123// 이해가잘...
나도 코드를보고 이해가안간다 조건에 있지도않은 포문은대체왜쓴거임 그리고 스트링을 인클루드해놓고 char배열에다가 이름을 넣을라는이유는뭐임
tounjoun //반복문을 탈출한다길래 break랑 continue를 써봣는대 브레이크는 문자넣자마자 오류뜨고 강종되고 컨티뉴는 작동도안하네여...
대충보니까 100명이라치고 니가한거같은데 char[100]이면 니가쓰는이름100개 절대안들어가 이름이 전부 알파벳1글자인인간들이면몰라도
123213 // 와일문 응용이 아직안되서 포문으로 작성 해봣습니다. 와일이 확실히 더나은 코드인가요...?
char은 가나다라 이런식이아니라 ㄱㅏㄴㅏㄷㅏ 이런식으로 저장되는건가요?
char은 1바이트 자료형이잔아 char[100]이면 1바이트자료형이 100개있으니까 니가 KIM이라고넣으면 KIM하고 97칸이남겟지 알파벳1개가 1바이트니까
123213 아 감사합니다 모르고 잇엇네여;;
일단 2번을 만족할라고한다는데 2번을 표현한게맞냐저게
123213그러면 char말고 입력받는 방법이잇나요;; str는 인식이안되던대 파랗게
니가써놓은건 메뉴를받고 100번동안 이름메일주소전화번호를받는다 인데 y를입력하고 다른문자를입력하면 빠진다 라는 부분이 아애업잔아
y를 입력시엔 추가적으로 추가로 입력합니다 라는 문자가 뜨고 다시 입력하게 해놧는대 수정해서
else( printf("메뉴로 나갑니다."); continue; ) 이렇게 해놧는대 컨티뉴가 작동을안하네여ㅛ ㅜㅜ
#inlcude<string.h>이걸 써놧으니까 뭔지알고썻을거아냐 string 쉽게말해서 유동적인char배열이라고생각하면됨 String a ="abc"라고하면 char[3]에 0번인덱스에 a 1번인덱스에b 3번인덱스에 c이렇게들어간다고생각하셈
break로 바꾸면 다른걸치면 오류가 뜨면서 강종이되버려서 ㅜㅜ
#include<string.h> 이거는 인터넷에서 보고적은거라... 잘모릅니다...
진짜 완전 초보라;;
if(yn ==n
if(yn ==n || yn == N) -> continue 그래 for문 계속 콘티뉴하겟네
다른걸써야하나요... 구글링해서봣더니 포문안에 이프 넣고 컨티뉴하면 포문빠져나간다길래...
그러면 컨티뉴말고 브레이크를 써야한다는거 라고 애기하시는거같은대 브레이크를쓰면 사진첨부가안되는대 그냥 오류뜨고 강종이되버려서;
그러면 다른 반복문을 또적어넣어야하는건가요
2번과 3번도 만들어야하는대 그렇게해야 브레이크가 정상작동하는건가요
while문 배운상태임??
랜덤함수까지 배웟고 지금 복습까지 다하고 햇엇는대 응용이 잘안됩니다...
printf("<메뉴>\n1. 주소록입력\n2. 검색\n3. 전체 출력\n4. 종료\n"); scanf("%d", &manu;); if(manu == 1) { while(1) { int i=0; printf("이름을 입력하세요 : "); scanf("%s", &name;[i]); printf("메일주소를 입력하세요 : "); scanf("%s", &mail;[i]); printf("전화번호를 입력하세요 : "); scanf("%d", &call;[i]); printf("추가로 입력하실건가요 (y/n) : "); scanf("%s", &yn;); if(yn == 'y' || yn == 'Y')
{ printf("추가로 입력합니다.\n"); } else { printf("메뉴로 나갑니다.\n"); break; } i++; } } if(manu == 2) { printf("1. 이름으로 검색\n2. 이메일로 검색"); scanf("}
아여기는 보여지지가않네요;
후 일단 이렇게 바꿔봐라 do {안에서 반복돌릴문장들 scanf(yn)}while(yn != y || yn != Y)
수정문 본문 수정해서 사진으로 올릴게요
아니시발ㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹ 진짜 내가쓴대로쓰면어떡하냐 scanf위에서썻으면 문법에맞춰써야할거아냐 내가귀찬아서 저렇게썻다고 진짜저렇게쓰냐 와나 암걸려디지겟네진짜 문법같은건 니가알아서쓰라구
do while()문도그렇고시발 으악ㄱㄱㄱㄱㄱㄱㄱㄱㄱ
이번 학점은 f로 끝나는거 같네여,. 미치겟네요 머리가 안돌아가요...
do while()문은 do{문장}while(조건); 이렇게쓴다
돌아가는방식은 말그대로 do안에 문장을 while조건걸릴때까지반복하는거고
다시 입력하라는거는 그러면 do{"다시입력하세요"}while{yn='y'||yn='Y'} 이렇게 쓰는건가요
한사람 입력이 끝나면 “계속 입력하시겠습니까(y/n)” 메시지가 출력되고 y를 입력하면 계속 다음 사람의 주소정보를 입력받고 y가 아닌 다른 문자를 입력하면 입력을 종료하고 <메뉴> 리스트가 다시 출력된다. 니까 while조건에 yn==y를쓰면 yn에y를넣으면계속돌아갈거아냐
그래 그리고 =가아니라 ==다 =는 대입하는거고
한번 만들어보고 다시 댓글 갈겟습니다.
이번엔 y도 에러가뜹니다.
사진수정햇으여
먼에러가뜨는데 또먼짓을한거야
강종되요
미칠거같아여
코드가보이지도않는다 저거보고머해란거
#include <stdio.h>int main(void){ int manu; char name[100]; int call[100]; char mail[100]; char yn; printf("<메뉴>\n1. 주소록입력\n2. 검색\n3. 전체 출력\n4. 종료\n"); scanf("%d", &manu;); if(manu == 1) { do("다시 입력하세요",scanf(&yn;));while(yn=='y' || yn=='Y'); {
int i=0; printf("이름을 입력하세요 : "); scanf("%s", &name;[i]); printf("메일주소를 입력하세요 : "); scanf("%s", &mail;[i]); printf("전화번호를 입력하세요 : "); scanf("%d", &call;[i]); printf("추가로 입력하실건가요 (y/n) : "); scanf("%s", &yn;); } }}
일단 니가쓴거 프로그램돌아가는건생각안하고 내눈에보이는 문법틀린거만말할게 1.do안에 "다시입력하세요"이거만쓰면 컴퓨터가 어캐알아먹냐 위에는 printf안에 프린트할말써놓고 저건 왜그냥썻는데 2. scanf도 왜 앞에 자료형은안써주고 니가넣을변수만썻는데 다른대는 scanf에 자료형다써놧구만 3. int i=0 이렇게 변수선언은 컴파일러마다 다르긴한데 C는 메인함수밑에 변수선언 전부다해놓고 써야되는걸로안다. 일단 눈에보이는거 끝
do(printf("메뉴로 되돌아갑니다.",scanf(&yn;)))while(yn=='n' || yn=='N');
일단 이렇게 써놧는대 자료형을 앞에다 char scanf이렇게 주면되나요
와나 니원래코드는 어떻게짠거임? 전부다주워온거냐? printf("니할말"); 이게 함수한개끝임 scanf(%자료형, &yn;); 이게 함수한개끝임 rprintf인자로 scanf를주고 뭐하는거냐대체
..... do while이 이해가 안됩니다;;
while문은 while()괄호안의조건일때 { }계속돌아가잖아 중괄호안의것이 계속 돌아가잖아 do while()도 비슷해 while()괄호안의 조건일때 do { }중괄호안의것이 계속돌아가는거야 대신에 do while이름그대로 일단 한번돌아가 한번수행한뒤에 while의 조건을 보는거야 조건이맞으면 또 do하고 while에서 조건보고 계속반복하다가 조건아니면 do while()문 끝
지금 do{ printf("추가로 입력하실건가요 (y/n) : "); scanf("%s", &yn;); } while(yn == 'y' || yn == 'Y'); { int i=0; printf("이름을 입력하세요 : "); scanf("%s", &name;[i]); printf("메일주소를 입력하세요 : "); scanf("%s", &mail;[i]); printf("전화번호를 입력하세요 : "); scanf("%d", &call;[i]); i++; }
이렇게 잡앗는대 Y가 아닌게 들어갈때 WHILE문이 실행이되네여
int chkeck; do{ printf("프린트짱짱맨"); scanf("%d", ✓);} while(check != 1); 이러면 프린트짱짱맨 이 1번출력되고 scanf로 check를 받아 그리고 while에서 검사를하겠지 check를 1이아니면 또 프린트짱짱맨이출력되고 scanf로 check를받아 계속하다가 check가 1이면 do while()이 끝나는거야
이해가되서do{ printf("연락처를 입력하실건가요 (y/n) : "); scanf("%s", &yn;); } while(yn == 'y' || yn == 'Y');
아직두이러구잇누 yn이 char형이잔아 char은 %c로받아
이렇게 넣엇는대 y일때만 실행시킬때는 while 조건에 뭐라해야할지가 고민이네요 저렇게넣으면 do문이 재실행이안됩니다,.
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ이거배웟는대 c로 받으니까 엔터 아스키코드 10이 들어가서 지랄하네요이제 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅇ아맞다 \n넣으면 해결됫엇죠
엔터 버퍼에남아있는거면 getchar()였나 이거쓰면 버퍼비워
그 scanf 위에 쓰는건가요 밑에 슨느건가요
니가걍써보는게 더빠를거같지않냐
쓰고실행시켜보고 이게여기잇으면 이런대 일로옴기면이렇게되는구나 이런생각을하면서해 맨날 그런식으로코딩하면 학기끝날떄까지 맨날고통받는다
바로 댓글쓰고 그렇게햇는대 한가지만 더질문 될까요
do{ printf("연락처를 입력하실건가요 (y/n) : \n"); scanf("%c", &yn;); getchar(); } while(yn == 'y' || yn == 'Y');
do{ printf("연락처를 입력하실건가요 (y/n) : \n"); scanf("%c", &yn;); getchar(); } while(yn == 'd' || yn == 'D');
이런식으로해서d로잘못썻는대 아무것도 다음으로 연속 입력이 되질않습니다.
y눌리면 연락처를입력하실건가요 뜨고 바로while문을 빠져나갈거임 그래서 getchar써라햇잔아 내생각인데 니가 y눌리고 엔터를쳤으니까 엔터가 버퍼에남아있어서 다음while볼때 엔터남아잇던게 거기에들어가서 바로꺼질거임
제힘으로 해보겟습니다 123213님감사합니다.