car-parking.rar

  • PUDN用户
    了解作者
  • C/C++
    开发工具
  • 2KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2016-11-07 14:45
    上传日期
counting how much car parked in the parking area.
car-parking.rar
  • car parking.c
    10.2KB
内容介绍
/*Parking Management Agredo Mesakh Fajar 1306368545*/ #include <stdio.h> #include <stdlib.h> #include <conio.h> #define mobil 1 #define motor 2 struct kendaraan { int num ; int row ; int col ; int type ; } ; int infoparkir[4][10] ; /* 2-D untuk kendaraan yang diparkir */ int kendcount ; /* untuk menyimpan total kendaraan yang ada di tempat parkir */ int mobilcount ; /* untuk menyimpan total mobil */ int motorcount ; /* untuk menyimpan total motor */ void display( ) ; void changecol ( struct kendaraan * ) ; struct kendaraan * add ( int, int, int, int ) ; void del ( struct kendaraan * ) ; void getfreerowcol ( int, int * ) ; void getrcbyinfo ( int, int, int * ) ; void show( ) ; /* untuk menggeser data yang lama dengan data yang baru diinput */ void changecol ( struct kendaraan *v ) { v -> col = v -> col - 1 ; } /* memasukkan data - data kendaraan seperti tipe, nomor kendaraan ke dalam kolom dan baris */ struct kendaraan * add ( int t, int num, int row, int col ) { struct kendaraan *v ; v = (struct kendaraan*)malloc(sizeof (struct kendaraan )); v -> type = t ; v -> row = row ; v -> col = col ; if ( t == mobil ) mobilcount++ ; else motorcount++ ; kendcount++ ; infoparkir[row][col] = num ; return v ; } /* untuk menghapus jika kendaraan keluar */ void del ( struct kendaraan *v ) { int c ; for ( c = v -> col ; c < 9 ; c++ ) infoparkir[v -> row][c] = infoparkir[v -> row][c+1]; infoparkir[v -> row][c] = 0 ; if ( v -> type == mobil ) mobilcount-- ; else motorcount-- ; kendcount-- ; } /* memulai motor untuk diparkir pada row dan col 2 */ void getfreerowcol ( int type, int *arr ) { int r, c, fromrow = 0, torow = 2 ; if ( type == motor ) { fromrow += 2 ; torow += 2 ; } for ( r = fromrow ; r < torow ; r++ ) { for ( c = 0 ; c < 10 ; c++ ) { if ( infoparkir[r][c] == 0 ) { arr[0] = r ; arr[1] = c ; return ; } } } if ( r == 2 || r == 4 ) { arr[0] = -1 ; arr[1] = -1 ; } } /* get the row-col position for the vehicle with specified number */ void getrcbyinfo ( int type, int num, int *arr ) { int r, c, fromrow = 0, torow = 2 ; if ( type == motor ) { fromrow += 2 ; torow += 2 ; } for ( r = fromrow ; r < torow ; r++ ) { for ( c = 0 ; c < 10 ; c++ ) { if ( infoparkir[r][c] == num ) { arr[0] = r ; arr[1] = c ; return ; } } } if ( r == 2 || r == 4 ) { arr[0] = -1 ; arr[1] = -1 ; } } /* pemunculan data parkir yang telah ada */ void display( ) { int r, c ; printf ( "Mobil ->\n" ) ; for ( r = 0 ; r < 4 ; r++ ) { if ( r == 2 ) printf ( "Motor ->\n" ) ; for ( c = 0 ; c < 10 ; c++ ) printf ( "%d\t", infoparkir[r][c] ) ; printf ( "\n" ) ; } } void main( ) { int choice, type, number, row = 0, col = 0 ; int i, tarr[2] ; int finish = 1 ; struct kendaraan *v ; /* pembuatan array 2D untuk data kendaraan */ struct kendaraan *car[2][10] ; struct kendaraan *motorcycle[2][10] ; system("cls"); while ( finish ) { system("cls"); printf ( "#########################################################################\n" ); printf ( "# \t\t\t\tParking Management\t\t\t#\n" ) ; printf ( "# 1. Parkir kendaraan\t\t\t\t\t\t\t#\n" ) ; printf ( "# 2. Total kendaraan yang telah terparkir\t\t\t\t#\n" ) ; printf ( "# 3. Total mobil yang telah terparkir\t\t\t\t\t#\n" ) ; printf ( "# 4. Total motor yang telah terparkir\t\t\t\t\t#\n" ) ; printf ( "# 5. Denah parkir\t\t\t\t\t\t\t#\n" ) ; printf ( "# 6. Keluar dari parkiran\t\t\t\t\t\t#\n" ) ; printf ( "# 7. Close\t\t\t\t\t\t\t\t#\n" ) ; printf ( "#########################################################################\n\n" ); scanf ( "%d", &choice ) ; switch ( choice ) { case 1 : /*memasukkan data kendaraan yang akan diparkir*/ system("cls"); printf ( "Add: \n" ) ; type = 0 ; /* cek tipe kendaraan */ while ( type != mobil && type != motor ) { printf ( "Masukkan tipe kendaraan (1 untuk mobil / 2 untuk motor ): \n" ) ; scanf ( "%d", &type ) ; if ( type != mobil && type != motor ) printf ("\nTipe kendaraan invlaid.\n"); } printf ("Masukkan nomor kendaraan: "); scanf ("%d", &number); /* memasukkan data - data kendaraan */ if ( type == mobil || type == motor ) { getfreerowcol ( type, tarr ) ; if ( tarr[0] != -1 && tarr[1] != -1 ) { row = tarr[0] ; col = tarr[1] ; if ( type == mobil ) car[row][col] = add ( type, number, row, col ) ; else motorcycle[row - 2][col] = add ( type, number, row, col ) ; ; } else { if ( type == mobil ) printf ( "\nParkir penuh\n" ) ; else printf ( "\nParkir penuh\n" ) ; } } else { printf ( "Input tipe kendaraan salah\n" ) ; break ; } printf ( "\nPress any key to continue..." ) ; getch( ) ; break ; case 2 : /*total kendaraan yang diparkirkan*/ system("cls"); printf ( "Total kendaraan yang terparkir: %d\n", kendcount ) ; printf ( "\nPress any key to continue..." ) ; getch( ) ; break ; case 3 : /*total mobil yang diparkirkan*/ system("cls"); printf ( "Total mobil yang terparkir: %d\n", mobilcount ) ; printf ( "\nPress any key to continue..." ) ; getch( ) ; break ; case 4 : /*total motor yang diparkirkan*/ system("cls"); printf ( "Total motor yang terparkir: %d\n", motorcount ) ; printf ( "\nPress any key to continue..." ) ; getch( ) ; break ; case 5 : /*Denah parkiran */ system("cls"); printf ( "Denah\n" ) ; display(); printf( "\nPress any key to continue..." ) ; getch() ; break ; case 6 : /*Untuk mengeluarkan kendaraan yang telah diparkir*/ system("cls"); printf ( "Keluarkan kendaraan\n" ) ; type = 0 ; /* pengecekan tipe kendaraan untuk dikeluarkan dari parkiran, jika kendaraan bukan mobil=1 dan bukan motor=2 */ while ( type != mobil && type != motor ) { printf ( "Masukkan tipe kendaraan yang diparkir (1 mobil / 2 motor ): \n" ) ; scanf ( "%d", &type ) ; if ( type != mobil && type != motor ) printf ( "\nTipe kendaraan tidak terdaftar atau salah\n" ) ; } printf ( "Masukkan nomor k
评论
    相关推荐