C/C++2009. 3. 31. 20:25

#include <turboc.h>
#define MAX 10


struct BOOM {
 int map;
 int block;
 int flag;
};


int Clear_Check(struct BOOM boom[MAX][MAX],int Boom_Check){
 int Count = 0;
 int i,j;
 for(i=0;i<MAX;i++){
  for(j=0;j<MAX;j++){

   if(boom[i][j].block == 1)
    Count++;   
  }
 }
 gotoxy(0,MAX+1);
 printf("Block_Count = %d \n",Count);

 if( ( Count == ((MAX-2)*(MAX-2) - MAX) ) && Boom_Check == MAX){
  return 1; // 참
 }else{
  return 0; // 거짓


 }
}

 

int  Check_Count(struct BOOM boom[MAX][MAX],int i,int j){
 int Count =0;
 int x,y;

 


 for(x=-1;x<=1;x++){
  for(y=-1;y<=1;y++){   
   if(boom[i+x][j+y].map == 10){
    Count++;


   }
  }
 }


 return Count;
}
void Print_MAP(struct BOOM boom[MAX][MAX]){
 int i,j;
 gotoxy(0,0);
 for(i=0;i<MAX;i++){
  for(j=0;j<MAX;j++){
   if(boom[i][j].block == 0){
    switch(boom[i][j].map){
    case 9:
     textcolor(15);
     printf("▧");
     break;
    default:
     textcolor(2);
     printf("□");
     break;


    }
   }else{
     switch(boom[i][j].map){
    case 0:
     printf("  ");
     break;
    case 1:
     textcolor(11);
     printf("①");
     break;
    case 2:
     textcolor(14);
     printf("②");
     break;
    case 3:
     textcolor(13);
     printf("③");
     break;
    case 4:
     textcolor(8);
     printf("④");
     break;
    case 5:
     textcolor(9);
     printf("⑤");
     break;
    case 9:
     textcolor(15);
     printf("▧");
     break;
    case 10:
     textcolor(RED);
     printf("※");
     break;


     }
    }
    if(boom[i][j].block == 0 && boom[i][j].flag == 1 ){
     textcolor(BLUE);
     printf("\b\b▶");
    }

 


   }


  


   printf("\n");
  }


}

 

 


int main(){


 struct BOOM boom[MAX][MAX];


 int i,j;
 int x,y;
 int X,Y;
 char ch;
 int Boom_Check=0;


 for(i=0;i<MAX;i++){
  for(j=0;j<MAX;j++){
   if(i==0||j==0|| i == MAX-1 || j == MAX-1){
    boom[i][j].map = 9;
   }else{
    boom[i][j].map = 0;
    boom[i][j].block = 0;
    boom[i][j].flag = 0;
   }
  }
 }

 


 //지뢰 심기
 for(i=0;i<MAX;i++){
  x = baserand(1,MAX-2);
  y = baserand(1,MAX-2);
  if(boom[x][y].map != 10){
   boom[x][y].map = 10;
  }else{
   i--;
   continue;
  }


 }
 //Count 세기

 


 for(i=1;i<MAX-1;i++){
  for(j=1;j<MAX-1;j++){
   if(boom[i][j].map != 10){
    boom[i][j].map = Check_Count(boom,i,j);


   }


  }
 }


 X = Y = 2;


 Print_MAP(boom);


 while(1){
  gotoxy(0,MAX+3);
  printf("  X = %2d , Y = %2d \n",X,Y);
  printf("  Count = %2d \n",boom[Y][X].map);
  printf("  Boom Check = %2d\n",Boom_Check);


  gotoxy(X*2,Y);
  ch = getch();


  switch(ch){
   case UP:
    if(Y!=1)Y--;
    break;
   case DOWN:
    if(Y!=MAX-2)Y++;
    break;
   case LEFT:
    if(X!=1)X--;
    break;
   case RIGHT:
    if(X!=MAX-2)X++;
    break;
   case 'f':


    if(boom[Y][X].block == 0){


     if(boom[Y][X].flag == 1){
     
      boom[Y][X].flag = 0;


      if(boom[Y][X].map == 10){
       Boom_Check--;
      }


     }else{
    
      boom[Y][X].flag = 1;


      if(boom[Y][X].map == 10){
       Boom_Check++;
      }


     }
    }
   

 

 


    break;


   case ' ':


    boom[Y][X].block = 1;
    if(boom[Y][X].map == 10){
     gotoxy(0,MAX+6);
     textcolor(WHITE);


     for(i=0;i<MAX;i++){
      for(j=0;j<MAX;j++){
       if(boom[i][j].map==10){
        boom[i][j].block = 1;
       }


      }


     }


     Print_MAP(boom);


     printf("지뢰를 밟았습니다 \n");     
     printf("게임을 끝내겠습니다...\n");
     return 0;
    }
    break;


  }

 


  Print_MAP(boom);


  if(Clear_Check(boom,Boom_Check/*클리어 조건*/) == 1 ){

 

 

   gotoxy(0,MAX+7);
   printf("게임을 클리어 하셨습니다 \n");
   printf("수고하셨습니다 ^^ \n");
   break;
  }


 }
  return 0;
 }


아직 구현할게 남았고...  

쌤 ver.이다  

어렵다....

Posted by 샤키
C/C++2009. 3. 31. 20:23
/*
#include <stdio.h>
#include <time.h>
int main(){
 time_t t;
 time(&t);
 printf("숫 자 : %d \n",t);
 printf("문 자 : %s \n",ctime(&t));
 
 return 0;
}
*/
/*
#include <stdio.h>
#include <time.h>
int main(){
 char date[10];
 char time[10];
 _strdate(date);
 _strtime(time);
 printf("날 짜 : %s \n",date);
 printf("시 간 : %s \n\n",time);
 printf("시: %c%c \n",time[0],time[1]);
 printf("분: %c%c \n",time[3],time[4]);
 printf("초: %c%c \n\n",time[6],time[7]);
 printf("월: %c%c \n",date[0],date[1]);
 printf("일: %c%c \n",date[3],date[4]);
 printf("년: %c%c \n",date[6],date[7]);
 
 return 0;
}
*/
/*
#include <turboc.h>  //디지털 시계구현
int main(){
 time_t t;
 struct tm *pt;
 while(1){
  time(&t);
  pt=localtime(&t);    //현재시간
  printf("%d년 %d월 %d일 %d시 %d분 %d초 \r",
   1900+pt->tm_year,pt->tm_mon+1,pt->tm_mday,pt->tm_hour,pt->tm_min,pt->tm_sec);
  Sleep(1000);
  }
 return 0;
}
*/
/*
#include <turboc.h>  //세부적인 시간 구하기
#include <sys/timeb.h>
int main(){
 struct tm t;
 struct _timeb tb;
 while(1){  
  if(kbhit()){
  _ftime(&tb);
  t=*localtime(&tb.time);    //현재시간  
  printf("%d년 %d월 %d일 %d시 %d분 %d.%d \r",
   1900+t.tm_year,t.tm_mon+1,t.tm_mday,t.tm_hour,t.tm_min,t.tm_sec,tb.millitm);  
  Sleep(10);    
  getch();
   printf("\n");
 }
 } 
 
 return 0;
}
*/
/*
#include <turboc.h>   //D-day 프로그램
#define DAYSEC (24*60*60)
 void input(struct tm * in_time){
 printf("년도 : ");
 scanf("%d",&(in_time->tm_year));
 in_time->tm_year-=1900;
 printf("월 : ");
 scanf("%d",&(in_time->tm_mon));
 in_time->tm_mon-=1;
 printf("일 : ");
 scanf("%d",&(in_time->tm_mday));
}
int main(){
 time_t n1,n2;
 struct tm t1,t2 = {0,0,0,1,0,100}; //2000년 1월 1일     {1,0,100} 일 월 1900년
 int tmp;
 input(&t2);

 n1 = time(NULL);
 t1 = *localtime(&n1);
 n1 = mktime(&t1);
 n2 = mktime(&t2);
 n1 = n1 - n2;
 tmp = (int)(n1/DAYSEC);
 printf("%d년 %d월 %d일부터 지금까지\n",
  t2.tm_year+1900,t2.tm_mon+1,t2.tm_mday);
 if(mktime(&t1) > mktime(&t2)){
  printf("%d일 지났습니다.\n",tmp);
 }else{
  printf("%d일 남았습니다.\n",abs(tmp));
 }
 return 0;
}
*/


/*
#include <stdio.h>   //동적 할당예제
#include <stdlib.h>  //malloc함수 및 free 함수
int main(){
 int* int_p;        //↓sizeof(int) 해야
 int_p = (int *)malloc(4);  //heap영역에 4byte를 할당
 if(int_p==NULL){ //메모리 할당 실패 시 종료
  printf("메모리 할당 실패 \n");
  return 1;
 }
 *int_p = 100;
 printf("*int_p의 값은 : %d \n", *int_p);
 free(int_p);   //메모리 해제
 printf("*int_p의 값은(메모리 해제후) : %d \n", *int_p);
 
 return 0;
}
*/
/*
#include <stdio.h>
#include <stdlib.h>   //malloc함수 및 free 함수
int main(){
 int* int_ar;
 int i;
 int sel;
 printf("메모리를 할당할 공간 : ");
 scanf("%d",&sel);
 int_ar = (int*)malloc(sel*sizeof(int));
 for(i=0;i<sel;i++){
  int_ar[i] = (i+1)*2;
  printf("ar[%d] = %d \n", i, int_ar[i]);
 }
 free(int_ar);  //메모리 해제
 return 0;
}
*/
#include <stdio.h>
struct node {
 int Data;
 char Name[10];
 int Kor;
 int Eng;
 int Math;
};
int main(){
 struct node * tmp;
 int i;
 tmp = (struct node *)malloc( 5 * sizeof(struct node));
 for(i=0;i<5;i++){
  tmp[i].Data = 1001 + i;
  printf("ID : %d \n",tmp[i].Data);
  printf("이름 : ");
  fflush(stdin);
  scanf("%s",&tmp[i].Name);
  printf("국어 : ");  
  scanf("%s",&tmp[i].Kor);
 }
 

 for(i=0;i<5;i++){
  printf("%5d | %10s | 5d \n",tmp[i].Data,tmp[i].Name,tmp[i].Kor);
 }
 return 0;
}
Posted by 샤키
C/C++2009. 3. 30. 00:42

turboc.h 받아두는거 있지 말길

2009/03/30 - [C/C++] - UI (User Interface)  참고!!


/*
#include <turboc.h>        //Mapping

 

void Print_MAP(){
 int i,j;
 gotoxy(0,0);


 for(i=0;i<10;i++){
  for(j=0;j<10;j++){
   if(i==0 || j == 0 || i == 9 || j==9){
    textcolor(YELLOW);
    printf("■");


   }else{
    printf("  ");

   }
  }
  printf("\n");
 }
}

 


int main(){
 
 int x,y;
 
 int ch;


 x=y=3;
 system("mode con cols=22 lines=16");


 Print_MAP();


 while(1){
  gotoxy(0,13);
  textcolor(WHITE);
  printf("x = %d , y = %d \n",x,y);
  gotoxy(x,y);
  ch = getch();


  if(ch== 0xe0){ //
   ch = getch();
   switch(ch){
    case UP:
     if(y!=1)y--;
     break;
    case DOWN:
     if(y!=8)y++;
     break;
    case LEFT:
     if(x!=2)x--;
     break;
    case RIGHT:
     if(x!=17)x++;
     break;
   }
  }else{ // nomal key


   switch(ch){
    case 'q':
     gotoxy(0,15);
     return 0;
    case ' ':
     textcolor(baserand(0,10));
     printf("%c",baserand('A','Z'));
     break;
   }
  }
 }
 return 0;
}
*/

 

#include <turboc.h>


int main(){
 int i,j;


 int x,y;
 char ch;


 int MAP[10][10] = {
  {1,1,1,1,1,1,1,1,1,1,},
  {1,0,1,0,0,0,0,0,0,1,},
  {1,0,1,0,0,1,0,1,0,1,},
  {1,0,1,0,1,1,0,1,0,1,},
  {1,0,1,0,0,0,1,0,0,1,},
  {1,0,1,0,0,1,0,0,0,1,},
  {1,0,1,0,1,0,0,1,0,1,},
  {1,0,0,0,0,0,1,1,0,1,},
  {1,0,0,0,0,0,0,1,0,0,},
  {1,1,1,1,1,1,1,1,1,1,}
 };


 x = y = 1;
 gotoxy(0,0);
 for(i=0;i<10;i++){
  for(j=0;j<10;j++){
   if(MAP[i][j] == 1){
    printf("■");    
   }else if(MAP[i][j] == 2){
    printf("○");    
   }else{
    printf("  ");
   }
  }
  printf("\n");
 }
 MAP[x][y] = 2;


 while(1){


  gotoxy(0,13);
  printf("x = %d y = %d \n",x,y);

 


  gotoxy(0,0);
  for(j=0;j<10;j++){
   for(i=0;i<10;i++){
    if(MAP[i][j] == 1){
     printf("■");    
    }else if(MAP[i][j] == 2){
     printf("○");    
    }else{
     printf("  ");
    }
   }
   printf("\n");
  }

 

 


  ch = getch();


  switch(ch){


  case UP:
   if(MAP[x][y-1] == 0){
    MAP[x][y-1] = 2;
    MAP[x][y] = 0;
    y--;
   }
   break;
  case DOWN:
   if(MAP[x][y+1] == 0){
    MAP[x][y+1] = 2;
    MAP[x][y] = 0;
    y++;
   }
   break;
  case LEFT:
   if(MAP[x-1][y] == 0){
    MAP[x-1][y] = 2;
    MAP[x][y] = 0;
    x--;
   }
   break;
  case RIGHT:
   if(MAP[x+1][y] == 0){
    MAP[x+1][y] = 2;
    MAP[x][y] = 0;
    x++;
   }
   break;
  }

 


  if(x==8 && y == 9){
   printf("Game End... \n");
   break;


  }
 }
 return 0;
}

Posted by 샤키
C/C++2009. 3. 30. 00:39




/*
#include <turboc.h>

int main(){

gotoxy(37,12);   //turboc.h 헤더파일에 포함된

printf("Center");
gotoxy(0,24);

return 0;

}
*/

/*
#include <turboc.h>

int main(){

int x,y;
int i;


textcolor(9);         //색을 이렇게 사용 해도 된다.
printf("blue\n");
textcolor(RED);
printf("red\n");


//system("color FC");  //cmd창에서 색 넣기
while(1){ 
textcolor(baserand(0,15));
x = baserand(0,79);
y = baserand(0,24);
gotoxy(x,y);
printf("%c",baserand('0','9'));  
Sleep(10);       //점차 출력

}

return 0;
}
*/


/*
#include <turboc.h>

int main(){

int i;
int y;


system("mode con cols=70 lines=70");
while(1){
y = baserand(0,15);

for(i=0;i<65;i++){
gotoxy(i,y);        //오른쪽으로 이동
printf("바보");
Sleep(30);   //0.1초씩 멈추었다가
printf("\b\b\b\b    ");  
}

for(i=65;i>0;i--){
gotoxy(i,y);
printf("바보");
Sleep(30);
printf("\b\b\b\b    ");
}
}

return 0;
}
*/

/*
#include <turboc.h>

int main(){   //별떨어지는거

int y;
int x;

while(1){
x = baserand(0,40);

for(y=0;y<15;y++){
textcolor(baserand(1,15));
gotoxy(x,y);
printf("☆");
Sleep(70);
gotoxy(x,y);
printf("★");
}
for(y=0;y<15;y++){
gotoxy(x,y);
printf("  ");   
}
}

return 0;
}
*/

/*
#include <turboc.h>       //색 Reverse 방법

int main(){

 int i,j;
 int tmp;
 int A[16];


 for(i=0;i<16;i++){
  A[i] = 16 *i;
 }

 while(1){
  gotoxy(0,0);
  for(j=0;j<4;j++){
   for(i=0;i<16;i++){
    textcolor(A[i]);
    printf("  ");
   }
  }
  printf("\n");
  for(j=0;j<4;j++){
   for(i=15;i>=0;i--){
    textcolor(A[i]);
    printf("  ");
   }
  }
  tmp = A[0];
  for(i=0;i<15;i++){
   A[i] = A[i+1];
  }
  A[15] = tmp;
  Sleep(70);
 }
 printf("\n");

 return 0;

}
*/

/*
#include <turboc.h>       //별떨어지기 구조체를 사용
#define MAX 10


struct star{
 int x,y;
 int Speed;
 int tmp;
 int Color;
};


int main(){
 int i,j;
 struct star ST[MAX];
 for(i=0;i<MAX;i++){
  ST[i].x = baserand(0,50);
  ST[i].y = baserand(0,15);
  ST[i].Speed = baserand(0,10);
  ST[i].tmp = ST[i].Speed;
  ST[i].Color = baserand(1,15);
 }
 while(1){
  gotoxy(0,0);
  for(i=0;i<MAX;i++){
   gotoxy(ST[i].x,ST[i].y);
   textcolor(ST[i].Color);
   printf("★");
  }
  Sleep(10);
  
  for(i=0;i<MAX;i++){
   if(--ST[i].Speed ==0){
   gotoxy(ST[i].x,ST[i].y);
   printf("  ");
   ST[i].y++;
   if(ST[i].y == 16){
    ST[i].y = 0;
    ST[i].x = baserand(0,50);
   }
   ST[i].Speed = ST[i].tmp;
   }
  }
 }

 return 0;
}
*/

/*


Posted by 샤키
C/C++2009. 3. 26. 22:04

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 10
#define FPATH "D:\\test.txt"


struct Student {     
 int ID;
 int Kor,Eng,Math;
 int Sum;
 float Avg;
 char name[12];
 char grand[3];
};

void Input_detail(struct Student ST[MAX], int i){
 printf("%d번째 학생의 ID : %d\n",i+1,ST[i].ID);
 printf("학생의 이름 : ");
 fflush(stdin);
 scanf("%s",&ST[i].name);
 printf("학생의 국어 성적 : ");
 scanf("%d",&ST[i].Kor);
 printf("학생의 영어 성적 : ");
 scanf("%d",&ST[i].Eng);
 printf("학생의 수학 성적 : ");
 scanf("%d",&ST[i].Math); 
 Avg(ST,i);
}
void Input(struct Student *ST){
 int i;
 for(i=0;i<MAX;i++){
  if(ST[i].ID == -1)break;
 }  
 ST[i].ID = 1001+i;
 Input_detail(ST,i);   
}

Avg(struct Student ST[MAX],int i){
 ST[i].Sum = ST[i].Kor + ST[i].Eng + ST[i].Math;
 ST[i].Avg = (float)ST[i].Sum/3;
 if(ST[i].Avg >= 90){
  strcpy(ST[i].grand,"수");
 }else if(ST[i].Avg >= 80){
  strcpy(ST[i].grand,"우");
 }else if(ST[i].Avg >= 70){
  strcpy(ST[i].grand,"미");
 }else if(ST[i].Avg >= 60){
  strcpy(ST[i].grand,"양");
 }else{
  strcpy(ST[i].grand,"가");   
 }
}

Print(struct Student ST[MAX],int i){
 printf("   ID |   이름 |  국어 |  영어 |  수학 |  합계 |  평균 |  등급\n"); 
 for(i=0;i<MAX;i++){
  if(ST[i].ID != -1){
   printf("%5d | %5s | %5d | %5d | %5d | %5d | %.2f | %5s\n",
    ST[i].ID,ST[i].name,ST[i].Kor,ST[i].Eng,ST[i].Math,ST[i].Sum,
    (float)ST[i].Avg,ST[i].grand);
  }
 }
}

void Sujung(struct Student ST[MAX], int i){
 int Sel; 
 printf(" 1. 수정 \n");
 printf(" 2. 삭제 \n");
 printf(" > ");
 fflush(stdin);
 scanf("%d",&Sel);
 printf(" %번째 학생: ");   //ID 선택으로 삭제를 하고 싶은데 도저히 모르겠다 ㅜㅜ
 fflush(stdin);
 scanf("%d",&i);
 i--;
 if(Sel==1){
  Input_detail(ST,i);
 }else if(Sel==2){ 
  ST[i].ID = -1;    //삭제는 -1 즉 작성되지 않은상태로 돌린다는 의미
 }else{
  printf("잘못입력 하셨습니다 \n");

 }
}


void Save(struct Student ST[MAX]){
 int i;
 FILE * f = fopen(FPATH,"w"); 
 for(i=0;i<MAX;i++){
  if(ST[i].ID != -1){
   fprintf(f,"%d  %s  %d  %d  %d\n",
    ST[i].ID,ST[i].name,ST[i].Kor,ST[i].Eng,ST[i].Math);
   printf("%d  %s  %d  %d  %d\n",
    ST[i].ID,ST[i].name,ST[i].Kor,ST[i].Eng,ST[i].Math);

  }else{
   fprintf(f,"-1\n");
  }
 }
 printf("이런 데이터를 저장 했습니다\n");
 fclose(f);
}

void Load(struct Student ST[MAX]){
 int i;
 FILE * f = fopen(FPATH,"r");
 for(i=0;i<MAX;i++){
  fscanf(f,"%d",&ST[i]);
  if(ST[i].ID != -1){
   fscanf(f,"%s %d %d %d",ST[i].name,&ST[i].Kor,&ST[i].Eng,&ST[i].Math);
   printf("%d  %s  %d  %d  %d\n",
    ST[i].ID,ST[i].name,ST[i].Kor,ST[i].Eng,ST[i].Math);

   Avg(ST,i);
  }
 }
 printf("이런 데이터를 읽어 왔습니다\n");
 fclose(f);
}

 

int main(){

 struct Student ST[MAX];
 int Select;
 int Sel;
 int i;

 


 for(i=0;i<MAX;i++){
  ST[i].ID = -1; //과연 이것도 이렇게 초기값이 될런지

 }


 while(1){
  system("cls");
  printf("==성적관리 프로그램==\n");
  printf(" 1. 입 력 \n");
  printf(" 2. 출 력 \n");
  printf(" 3. 수정 및 삭제 \n");
  printf(" 4. 저 장 \n");
  printf(" 5. 읽 기 \n");
  printf(" 6. 프로그램 종료 \n");
  scanf("%d",&Select);
  switch(Select){
   case 1:
    Input(ST);
    break;
   case 2:   
    Print(ST,i);
    break;
   case 3:
    Print(ST,i);
    Sujung(ST,i);   
    break;
   case 4:   
    Save(ST,i);
    break;
   case 5:   
    Load(ST,i);
    break;
   case 6:
    printf("프로그램을 종료하겠습니다 \n");
    return 0;
  }
  system("pause");

 

 }

 return 0;
}



기존에 성적관리 프로그램에 구조체와 입출력 기능(?)까지 모두 포함한 결정판(?) 이다

점점 기능이 좋아질수록 어렵다 ㅜㅜ

뭐 굳이 결정판이 아닐수도 또다른 기능이 추가 될수도...

그때 가서 다시 갱시하면 되는거고... ㅋ

Posted by 샤키
C/C++2009. 3. 26. 22:00
파일 입출력
⊙ 디스크에 있는 파일을 읽어오거나 저장하는것



/*

#include <stdio.h>
int main(){     //파일 저장

 char ar1[10] = "Apple! ";
 FILE * f = fopen("d:\\test.txt","w");
 puts(ar1);  //모니터에 출력
 fputs(ar1,f); //스트림을 통해 출력한다.
 fclose(f);  //꼭 닫아준다.

  return 0;
}
*/

/*
#include <stdio.h>

int main(){   //파일 열기

 char ar1[10] = "Empty!";
 FILE * f = fopen("d:\\test.txt","r");
 if(f==NULL){
  printf("파일을 열수 없습니다 \n");
  return 1;
 }
 puts(ar1);       //모니터에 출력
 fgets(ar1,sizeof(ar1),f);
 puts(ar1);
 fclose(f);
  return 0;
}
*/

/*
#include <stdio.h>   //fprintf 함수를 통해 구구단 파일 저장

int main(){

 int i,j;
 FILE * f = fopen("c:\\test.txt","w");
 for(i=1;i<10;i++){
  for(j=1;j<10;j++){
  fprintf(f,"%2d * %2d = %2d",i,j,i*j);
  if(!(j%1)){
   fprintf(f,"\n");
  }else{
   fprintf(f," // ");
  }
  }
  for(j=0;j<25;j++)fprintf(f,"-");
  fprintf(f, "\n");
 }
 fclose(f);
 return 0;
}
*/

 

#include <stdio.h>     //구구단 파일을 읽어와서 출력
#include <string.h>

int main(){

 char Read[100] = "\0";
 char String[10000] = "\0";
 int i,j;
 FILE * f = fopen("c:\\test.txt","r");
 while(!feof(f)){
  strcat(String,Read);
  fgets(Read,sizeof(Read),f);
         
 }
 puts(String);
 fclose(f);
 return 0;
}



Posted by 샤키
C/C++2009. 3. 25. 20:42
구조체란?
◎ 하나 이상의 변수를 그룹 지어서 새로운 자료형을 정의 하는것
◎ 붙어 다니게 되는 데이터들은 하나로 묶어서 관리 하는것이 편리하다


/*
#include <stdio.h>

struct Man {       //구조체
int ID;
float key;
char name[10];
char address[50];
};

Input_Man(struct Man * Lee2){  //함수로 뺏을경우

(*Lee2).ID = 1002;   
//Lee2->ID = 1002;  위와 동일한 기능

(*Lee2).key = 180.2;
strcpy((*Lee2).name,"Gist Lee");
strcpy((*Lee2).address,"Japan");
}

int main(){
int x;
int y;
struct Man Lee = {1001,173.2,"Shakii","서울시 동대문구 신설동"};

struct Man Lee2;

printf("Lee의 정보\n");
printf("Lee구조체의 전체 Byte : %d \n", sizeof(Lee));
printf("ID : %d \n",Lee.ID);
printf("이름 : %s \n",Lee.name);
printf("키 : %.2f \n",Lee.key);
printf("주소 : %s \n",Lee.address);
printf("Lee : %d \n",Lee);  //첫번째 값을 사용
printf("\n\n\n");


//Lee2 = Lee;      //오른쪽것이 왼쪽으로 복사

Input_Man(&Lee2);

printf("Lee2의 정보\n"); 
printf("ID : %d \n",Lee2.ID);
printf("이름 : %s \n",Lee2.name);
printf("키 : %.2f \n",Lee2.key);
printf("주소 : %s \n",Lee2.address);

 

return 0;
}
*/

Posted by 샤키
C/C++2009. 3. 24. 20:55

/*
#include <stdio.h>
int main(){

 int ch;

 while(1){ 
 ch = getchar ();
 if(ch==0xe0){
 printf("특수키입니다\n",ch);
 ch = getchar ();
 }
 
 printf("입력한 문자는 %c(%x)(%d)입니다\n",ch,ch,ch);

 if(ch=='q'){

 printf("잠시만 기다려주세요...");
 getch();
 return 0;
 }
 }
}
*/

#include <stdio.h>
#include <stdlib.h>


int main(){

 char ch[10];
 /*
 puts("gets함수 사용");
 gets(ch); //10개의 문자 이상의 값을 입력 받을 시 에러
 puts(ch);

 */
 puts("fgets함수 사용");
 fgets(ch,sizeof(ch),stdin); //입력 받을 size크기를 조절가능
 puts(ch);
 


}


/*
#include <stdio.h>

int main(){          //문자열의 길이를 반환하는 함수

char ch[20];
printf("문자열 입력 : ");
fgets(ch,sizeof(ch),stdin);;
printf("입력한 문자열의 크기는 : %d\n",strlen(ch));
return 0;
}
*/

/*
#include <stdio.h>     //문자열을 복사하는 함수
#include <string.h>

int main(){

char ar1[10] = "Apple";
char ar2[10] = "Orange";
printf("ar1 : %s\n",ar1);
strcpy(ar1,ar2);
printf("ar1 : %s\n",ar1);
strncpy(ar1,"Banananananananana",sizeof(ar1)-1);
printf("ar1 : %s\n",ar1);
return 0;

}
*/

/*
#include <stdio.h>   //문자열을 연결하는 함수
#include <string.h>

int main(){

char si[10] = "서울시 ";
char gu[10] = "동대문구 ";
char dong[10] = "신설동 ";
char address[100] = "\0";

strncat(address, si, sizeof(address)-strlen(address)-1);
strncat(address, gu, sizeof(address)-strlen(address)-1);
strncat(address, dong, sizeof(address)-strlen(address)-1);
puts(address);
return 0;
}
*/

/*
#include <stdio.h>     //문자열을 복사하는 함수
#include <string.h>

int main(){

char ar1[10] = "Apple";
char ar2[10] = "Apple";
int tmp;
tmp = strcmp(ar1,ar2);   //두 문자열이 같을 때 0을 반환
printf("비교값 %d\n",tmp);
tmp = strcmp(ar1,"Orange");  //뒤의 문자열의 값이 더 클때 -1 반환
printf("비교값 %d\n",tmp);
tmp = strcmp(ar1,"Appld");  //앞의 문자열의 값이 더 클때 1을 반환
printf("비교값 %d\n",tmp);
tmp = strcmp(ar1,"Apppp",3);
printf("비교값 %d\n",tmp);  //앞의 3문자만 비교하여 결과를 반환
return 0;

}
*/

 

/*
//strstr   문자열 검색후 검색결과가 참일경우 그문자열의 주소를 반환(참), 검색결과 없을시 NULL(거짓)
#include <stdio.h>    
#include <string.h>

int main(){

char ch[] = "apple orange grape banana";
char * p;

p = strstr(ch,"orange");

if(p==NULL){
printf("문자열을 찾지 못했습니다.\n");
}else{
printf("해당 문자열이 있습니다.\n");
}

return 0;
}
*/


/*
#include <stdio.h>
#include <string.h>
#define 후렴 "\n후렴 : 무궁화 삼천리 화려강산\n대한사람 대한으로 길이 보전하세\n\n"

int main(){

char ch[]="1.동해물과 백두산이 마르고 닳도록\n"
"하느님이 보우하사 우리 나라만세\n"
후렴
"2.남산 위에 저소나무 철갑을 두른듯\n"
"바람서리 불변함은 우리 기상일세\n"
후렴
"3.가을하늘 공활한데 높고 구름 없이\n"
"밝은달은 우리가슴 일편담심일세\n"
후렴
"4.이기상과 이맘으로 충성을 다하여\n"
"괴로우나 즐거우나 나라 사랑하세\n"
후렴;

char *p = ch;
char search[] = "나라";
int Count = 0;

while(1){
p = strstr(p,search);
if(p==NULL){break; 
}
Count++;
strncpy(p,"국가",4);
}

printf("%s는 총 %d번 검색되었습니다 \n",search,Count);
printf("%s",ch);

return 0;

}
*/

/*
#include <Turboc.h>
#include <string.h>

void main(void){

char str[]="Made In Korea";
char str2[16];

strcpy(str2,str);
strupr(str2);
printf("strupr => %s\n",str2);
strcpy(str2,str);
strlwr(str2);
printf("strlwr => %s\n",str2);
strcpy(str2,str);
strrev(str2);
printf("strrev => %s\n",str2);
strcpy(str2,str);
strset(str2,'*');
printf("strset => %s\n",str2);


return 0;

}
*/

#include <stdio.h>
#include <string.h>

int main(){

 char ch[]="Made In Korea";
 char *p;
 int i;

 
 printf("\n");
 for(i=strlen(ch+1);i>=0;i--){
  printf("%c",ch[i]);
  
 }

 return 0;
}

여기부터 멍 때려서

하나도 모르겠다 ㅜㅜ

Posted by 샤키
C/C++2009. 3. 24. 20:52

/*
#include <stdio.h>
#define MAX 10


void Input_detail(int grade[MAX][4],int i){
 printf("학생의 국어 : ");
 scanf("%d",&grade[i][0]);
 printf("학생의 영어 : ");
 scanf("%d",&grade[i][1]);
 printf("학생의 수학 : ");
 scanf("%d",&grade[i][2]);


 grade[i][3] = grade[i][0] + grade[i][1] + grade[i][2];


}
void Input(int (*grade)[4]){  // grade[MAX][4]
 int i;
 for(i=0;i<MAX;i++){
  if(grade[i][0] == -1)break;
 }


 Input_detail(grade,i);

 


 


}

 


int ranking(int grade[MAX][4] , int Sum){
 int rank=1;          //rank라는 변수를 1로 하고
 int i;


 for(i=0;i<MAX;i++){
  if(grade[i][0] != -1){
   if(grade[i][3] > Sum){      //입력된 합계가 Sum보다 많은 1씩 누적
    rank++;
   }
  }
 }


 return rank;

 

 


}

 


Print(int grade[MAX][4]){
 int i;
 for(i=0;i<MAX;i++){
  if(grade[i][0] != -1){
   printf("%5d | %5d | %5d | %5d | %5d | %.2f | %5d \n",
    i+1,grade[i][0],grade[i][1],grade[i][2],grade[i][3],
    (float)grade[i][3]/3, ranking(grade,grade[i][3]) );


  }


 }


}
void Sujung(int grade[MAX][4]){
 int Sel;
 int i;


 printf(" 1. 수정 \n");
 printf(" 2. 삭제 \n");
 printf(" > ");
 scanf("%d",&Sel);
 printf("몇번째 테이블 : ");
 scanf("%d",&i);
 i--;
 if(Sel==1){
  Input_detail(grade,i);
 }else if(Sel==2){
  grade[i][0] = -1;    //삭제는 -1 즉 작성되지 않은상태로 돌린다는 의미
 }else{
  printf("잘못입력 하셨습니다 \n");


 }
}

 


int main(){


 int grade[MAX][4];
 int Select;
 int i;


 


 for(i=0;i<MAX;i++){
  grade[i][0] = -1;  //초기값 성적이 작성 되지 않은상태를 -1


 }


 while(1){


  system("cls");
  printf("==성적관리 프로그램 ==\n");
  printf(" 1. 입 력 \n");
  printf(" 2. 출 력 \n");
  printf(" 3. 수정 및 삭제 \n");
  printf(" 4. 프로그램 종료 \n");
  scanf("%d",&Select);
  switch(Select){
   case 1:
    Input(grade);
    break;
   case 2:
    Print(grade);
    break;
   case 3:
    Sujung(grade);
    break;
   case 4:
    printf("프로그램을 종료하겠습니다 \n");
    return 0;
  }
  system("pause");

 


 } 

 


 return 0;
}
*/

함수를 이용이 눈에 띄는 쌤 ver.

Posted by 샤키
C/C++2009. 3. 24. 20:51

/*
#include <stdio.h>   //문자열 중에 일치되는 첫문자 찾기

int main(){

char Select;
char Sel[]= "None but The Brave deserves the Fair";
char *tmp;


printf("문자열 : %s\n",Sel);
printf("찾을 문자 입력 : ");
scanf("%c",&Select);
for(tmp=Sel;*tmp!=NULL;tmp++){
if(*tmp==Select)break;
}
printf("일치되는 첫번째 문자열은 %d입니다 \n",tmp-Sel+1);
}
*/

/*
#include <stdio.h>
int main(){

char *name1[4] = { "apple","Orange","Banana","Grape"};
char name2[4][10] = { "apple","Orange","Banana","Grape"};
int i;

for(i=0;i<4;i++){  //2차원 배열
printf("name2[%d] = %8s (%d) \n",i,name2[i],name2[i]);//12로 시작 스텍영역
}
printf("============================\n");

for(i=0;i<4;i++){  //포인터 배열
printf("name1[%d] = %8s (%d) \n",i,name1[i],name1[i]);//4로 시작 데이터영역
}
return 0;
}
*/

/*
#include <stdio.h>

int main(){

int A[5] = {10,20,30,40,50};
int *p = A;
int i;
int AA[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int (**pp)[4];  //**pp 두번으로 커널영역 접근하여 에러발생

for(i=0;i<5;i++){
printf("%d\n",p[i]);
}

pp = AA;

printf("pp = %d \n",pp);
printf("AA = %d \n",AA);

printf("*pp = %d \n",*pp);
printf("*AA = %d \n",*AA);

printf("**pp = %d \n",**pp);
printf("**AA = %d \n",**AA);

printf("AA[1][2] = %d \n",AA[0][1]);
printf("pp[1][2] = %d \n",pp[0][1]);
return 0;

}
*/


/*
#include <stdio.h>
int main(){

 char c;
 printf("getchr : ");
 c = getchar ();
 printf("입력한 값 : %c\n",c);
 //fflush(stdin);
 printf("fgetc : ");
 c = fgetc(stdin);
 printf("입력한 값 : %c\n",c);
 return 0;
}
*/

 

Posted by 샤키