Week10 (Full)

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Week10 (Full)

Bài gửi by haidang001 on 23/04/11, 02:48 am

[Update bài 27/04/2011]
Lần này Koltec làm sớm để lên Lạng Sơn thưởng "hương đồng gió nội".
Post hết cả lên, có gì ae cứ trao đổi + góp ý nhé.

1. Đề bài: xương cốt chính gồm 3 bài:
Bài 1: sorting
Code:

Write two function s:
      - the first sorts the integers element in an array by the decreasing order.
      - the second sort the odd elements in the decreasing order.
Write a program tha asks user to enter 10 intergers and displays the results after two styles of sorting above.
Translate:
Code:

Viết 2 hàm:
  - sắp xếp dãy theo thứ tự dảm rần.
  - sắp xếp dãy theo thứ tự rảm giần của các số lẻ trong dãy
Chương trình nhập vào 10 số nguyên, hiện thị kết quả sau 2 cách sắp xếp trên

Bài 2: mu
Code:

    Cho diem cau thu theo tran dau
    De danh gia man trinh dien cua cac cau thu MU (11) moi tuan, to bao Guardian nho 5 chuyen gia.
    Diem ecua moi cau thu se duoc lam tron theo so chan 0.5 gan nhat.
    Viet chuong trinh cho phep
        1) Nhap
            - So ao cua cau thu ra san
        - Danh gia cua chuyen gia cho cac cau thu.
        2) In ra: diem so cua cac cau thu theo dang: so ao - diem
        3) Dua ra nguoi danh gia khat khe nhat va rong rai nhat.

Bài 3: (hard) labmanager
Code:

Phong
 Lab 813 chuong trinh Viet Nhat chua 40 may tinh de ban. Hang tuan cac
may se duoc su dung de thuc tap. Biet mot lan duoc su dung - dien nang
tieu thu la 400 Watt. Viet chuong trinh quan ly viec su dung may voi cac
 menu sau:
      - Dung may: KHi mot nguoi vao phong may - chi dinh so hieu may muon su dung. Neu may con trong - duoc cap may.
      - Roi may: may ve trang thai roi.
      - IN ra trang thai cac may (dang su dung - tat)
      - In ra dien nang tieu thu tich luy tren cac may cho den thoi diem hien tai
      - In ra tong dien nang tieu thu - va tien dien thanh toan (750dong/KW)
      - In ra nhung may duoc dung nhieu nhat va it nhat

2. Tip:
Bài 1:sorting
- Dùng thuật toán sắp xếp nổi bọt (bubble sort algorithm).
Code:

  for (i = 1; i <= a[0]; i++)
    for (j = i + 1; j <= a[0]; j++)
      if (a[i] < a[j])
    {
      temp = a[i];
      a[i] = a[j];
      a[j] = temp;
    };
- Chỗ lẻ thì thêm 1 điều kiện if vào thôi.
Code:

  for (i = 1; i <= a[0]; i++)
    if (a[i] % 2 == 1)
      for (j  = i + 1; j <= a[0]; j++)
    if ((a[j] % 2 ==1) && (a[j] > a[i]))
      {
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;
      };

Bài 2: mu
Bài này Koltec không biết Tip kiểu gì nữa. Chắc thầy cho để luyện tập với dãy thôi.

Bài 3: labmanager
Bài này chuối cái viết ra bản đồ lớp.
Tuy nhiên, có lưu ý nhỏ nhỏ:
- Khi sử dụng một máy: nếu tất cả các máy đề được dùng, thoát luôn
hàm. Nếu không chương trình còn sẽ không bao giờ dừng (thử rồi biết So good )
Code:

    if ((nfree) == 0)
      {
    printf("All computer are being used!\n");
    return;
      };

- Mo tri ron, tương tự, khi dời một máy, nếu tất cả các máy đã được
dời, thoát luôn hàm. Nếu không chương trình sẽ thành "bất tử" (trăm nghe
không bằng 1 thử So good )
Code:

  if ((nfree) == ncomp)
    {
      printf("All computer are free!\n");
      return;
    };

- Cuối cùng là, trong trường hợp bắt buộc phải sử dụng biến toàn cục.
Tức là muốn thay đổi biến trong hàm main() chẳng hạn. Khai báo biến đó ở
ngay sau #include .
Code:

#include ...m .. cái phpBB, stdio.h ae nhé :)
int anywhere;
Khi đó, biến anywhere được sử dụng bất kì đâu trong chương trình với điều kiện ko có biến trùng tên trong hàm hiện tại.

3. Code: vẫn lại lưu ý cũ: code Koltec hoàn toàn mang tính chất tham khảo, chưa dám chắc đúng hết. Có gì ae góp ý hộ.
Trong bài có sử dụng một chút ít cái sắp hoc Very Happy.
Bài 1: sorting
Code:

/*Copyright (c) haidang001 (tm) (@yahoo.com)*/
/*2011 Allright reserved*/

/*Write two function s:
      - the first sorts the integers element in an array by the decreasing order.
      - the second sort the odd elements in the decreasing order.
      Write a program tha asks user to enter 10 intergers and displays the results after two styles of sorting above.*/

#include
#define maxsize  100

void enter(int [], char []), aassign(int [], int []), printa(int []), sort(int []), osort(int []);

main()
{
  int a[maxsize], b[maxsize];
 
  enter(a, "A");

  aassign(b, a); //b = a

  printf("\nArray sorted by decreasing order:\n");
  sort(b);
  printa(b);

  aassign(b, a);
  printf("\nArray sorted by decreasing odd element order:\n");
  osort(b);
  printa(b);
 
  printf("\nS_have fun! :)\n");
  return 0;
}

void sort(int a[])
{
  int i, j, temp;
  for (i = 1; i <= a[0]; i++)
    for (j = i + 1; j <= a[0]; j++)
      if (a[i] < a[j])
    {
      temp = a[i];
      a[i] = a[j];
      a[j] = temp;
    };
  return ;
}

void printa(int a[])
{
  int i;
  for (i = 1; i <= a[0]; i++)
    printf("%d, ", a[i]);
  printf("\n");
 
  return;
}


void aassign(int a[], int b[])
{
  int i;
 
  a[0] = b[0];
  for (i = 1; i <= a[0]; i++)
    a[i] = b[i];
  return ;
}

void osort(int a[])
{
  int i, j, temp;

  for (i = 1; i <= a[0]; i++)
    if (a[i] % 2 == 1)
      for (j  = i + 1; j <= a[0]; j++)
    if ((a[j] % 2 ==1) && (a[j] > a[i]))
      {
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;
      };
  return;
}

void enter(int a[], char name[])
{
  int i;
 
  do
    {
      printf("Enter number of element of array %s: ", name);
      scanf("%d", &a[0]);
    }
  while (a[0] < 0);

  for (i = 1; i <= a[0]; i++)
    {
      printf("Enter %s[%d]: ", name, i);
      scanf("%d", &a[i]);
    };
  return;
}

//S_have fun! :)

Bài 2: mu
Code:

/*Copyright (c) haidang001 (tm) (@yahoo.com)*/
/*2011 Allright reserved*/

/*    Cho diem cau thu theo tran dau
    De danh gia man trinh dien cua cac cau thu MU (11) moi tuan, to bao Guardian nho 5 chuyen gia.
    Diem cua moi cau thu se duoc lam tron theo so chan 0.5 gan nhat.
    Viet chuong trinh cho phep
    1) Nhap
    - So ao cua cau thu ra san
    - Danh gia cua chuyen gia cho cac cau thu.
    2) In ra: diem so cua cac cau thu theo dang: so ao - diem
    3) Dua ra nguoi danh gia khat khe nhat va rong rai nhat.*/

#include <stdio.h>
#define nplayer 11
#define nexpert 5
#define maxsize 100

void enter(int [][maxsize], int []), menu(), prints(int [][maxsize], int []), commend(int [][maxsize]), rmenu();
char vquit(), select();
int idmin(int [][maxsize]), idmax(int [][maxsize]), numcheck(int [], int), calc(int, int [][maxsize]);

main()
{
  char quit = 'N';
  int a[maxsize][maxsize] = {0}, num[maxsize] = {0}; //a[nplayer + 1][nexpert + 1] num[nplayer + 1]
 
  do
    {
      menu();
      switch (select())
    {
    case '1':
      enter(a, num);
      rmenu();
      break;

    case '2':
      prints(a, num);
      rmenu();
      break;

    case '3':
      commend(a);
      rmenu();
      break;

    case '4':
      quit = vquit();
      break;
    };
    }
  while (quit != 'Y');
     
  printf("\nS_have fun! :)\n");
  return 0;
}

void menu()
{
  printf("\n\n\t\t\tMU 's player 's score v1.0\n");
  printf("\t\tCopyright (c) haidang001 (tm) (@yahoo.com)\n");
  printf("\t\t\t 2011 Allright reserved\n\n");
 
  printf("\t1. Input\n");
  printf("\t2. Print score\n");
  printf("\t3. Some comment about expert\n");
  printf("\t4. Quit\n\n");

  return;
}


char vquit()
{
  char ans[100];

  do
    {
      printf("Do you really want to exit? (Y/N)");
      gets(ans);
      ans[0] = toupper(ans[0]);
    }
  while ((ans[0] != 'Y') && (ans[0] != 'N'));
 
  return ans[0];
}

int numcheck(int num[], int x)
{
  int i;
  if (num[x] <= 0)
    return 0;
  for(i = 1; i < x; i++)
    if (num[x] == num[i])
      return 0;
  return 1;
}

void enter(int a[][maxsize], int num[])
{
  int i, j;
  for (i = 1; i <= nplayer; i++)
    {
      do
    {
      printf("\nEnter number sign of player %d: ", i);
      scanf("%d", &num[i]);
    }
      while (numcheck(num, i) != 1);
     
      for (j = 1; j <= nexpert; j++)
    {
      printf("Enter score of expert %d for player having number size %d: ", j, num[i]);
      scanf("%d", &a[i][j]);
      getchar();
    };
    };
  printf("\n");
  return;
}

int calc(int x, int a[][maxsize])
{
  double res;
  int i;
  for(i = 1, res = 0; i <= nexpert; i++)
    res += a[x][i];
  res = res / nexpert;
  if (((int)res != res) && ((int) (res * 2) == (res * 2)))
    return (int)(res + 1);
  else
    return (int)(res);
}

void prints(int a[][maxsize], int num[])
{
  int i;
 
  for (i = 1; i <= nplayer; i++)
    printf("\nScore of player having number sign %d: %d\n", num[i], calc(i, a));
 
  return;
}

void commend(int a[][maxsize])
{
  int i, j;

  for (i = 1, a[0][i] = 0; i <= nexpert; i++)
    for (j = 1; j <= nplayer; j++)
      a[0][i] += a[j][i];
 
  printf("Expert number %d is sternest.\n", idmax(a));
  printf("Expert number %d is easiest.\n", idmin(a));
  return;
}

int idmin(int a[][maxsize])
{
  int res, i;
  for (i = 2, res = 1; i <= nexpert; i++)
    if (a[0][i] < a[0][res])
      res = i;
  return res;
}

int idmax(int a[][maxsize])
{
  int res, i;
  for (i = 2, res = 1; i <= nexpert; i++)
    if (a[0][i] > a[0][res])
      res = i;
  return res;
}

char select()
{
  char ans[100];

  do
    {
      printf("Enter your selection: ");
      gets(ans);
    }
  while ((ans[0] < '1') || (ans[0] > '4'));

  return ans[0];
}

void rmenu()
{
  char ans[100];
  printf("\nPress Enter to return to main menu . . .");
  gets(ans);
  return;
}


//S_have fun! :)


Bài 3: labmanager
Code:

/*Copyright (c) haidang001 (tm) (@yahoo.com)*/
/*2011 Allright reserved*/

/*Phong
 Lab 813 chuong trinh Viet Nhat chua 40 may tinh de ban. Hang tuan cac
may se duoc su dung de thuc tap. Biet mot lan duoc su dung - dien nang
tieu thu la 400 Watt. Viet chuong trinh quan ly viec su dung may voi cac
 menu sau:
  - Dung may: KHi mot nguoi vao phong may - chi dinh so hieu may muon su dung. Neu may con trong - duoc cap may.
  - Roi may: may ve trang thai roi.
  - IN ra trang thai cac may (dang su dung - tat)
  - In ra dien nang tieu thu tich luy tren cac may cho den thoi diem hien tai
  - In ra tong dien nang tieu thu - va tien dien thanh toan (750dong/KW)
  - In ra nhung may duoc dung nhieu nhat va it nhat*/

#include
#define perpow 400
#define powcost 750
#define ncomp 40
#define sizemax 100

void
 fill(int []), menu(), getuse(int [], int [], int*), rmenu(), leave(int
[], int [], int*), status(int [], int [], int), sumup(int []),
statistic(int []);
char vquit(), select();

main()
{
  int pow[sizemax] = {0}, free[sizemax] = {0}, nfree = 40;
  char quit;

  fill(free);
  do
    {
      menu();
      switch (select())
    {
    case '1':
      getuse(pow, free, &nfree);
      rmenu();
      break;

    case '2':
      leave(pow, free, &nfree);
      rmenu();
      break;

    case '3':
      status(pow, free, nfree);
      rmenu();
      break;

    case '4':
      sumup(pow);
      rmenu();
      break;

    case '5':
      statistic(pow);
      rmenu();
      break;
     
    case '6':
      quit = vquit();
    };
    }
  while (quit != 'Y');

  printf("\nS_have fun! :)\n");       
  return 0;
}

int getmin(int pow[])
{
  int i, res = pow[1];
  for (i = 1; i <= ncomp; i++)
    if (pow[i] < res)
      res = pow[i];
  return res;
}

int getmax(int pow[])
{
  int i, res = pow[1];
  for (i = 1; i <= ncomp; i++)
    if (pow[i] > res)
      res = pow[i];
  return res;
}

void statistic(int pow[])
{
  int min = getmin(pow), max = getmax(pow), i;
 
  printf("Computer most has being used:");
  for (i = 1; i <= ncomp; i++)
    if (pow[i] == max)
      printf("%d ", i);
  printf("\n");
 
  printf("Computer least has being used:");
  for (i = 1; i <= ncomp; i ++)
    if (pow[i] == min)
      printf("%d ", i);
  printf("\n");
   
  return;
}

void sumup(int pow[]) //IN ra tong dien nang tieu thu va tien dien thanh toan
{
  int i, sumpow = 0, bill = 0;
  for(i = 1; i <= ncomp; i++)
    sumpow += pow[i];
  sumpow *= perpow;
  bill = sumpow * powcost;

  printf("Power has being used: %d (Watt)\n", sumpow);
  printf("Total: %d (VND)\n", bill);
 
  return;
}

void status(int pow[], int free[], int nfree)
{
  int i, j;
 
  printf("-----|          |--------------------------------------------------------------\n");
  printf("|                                                  -----------------          |\n");
  printf("|                                                  |%-15s|          |\n", "Teacher 's");
  printf("|                                                  |%15s|          |\n", "Desktop");
  printf("|                                                  -----------------          |\n");

  for (i = 1; i <= ((ncomp + 3) / 4); i ++)
    {
      j = (i - 1) * 4;
     
      printf("|%-77s|\n", "");
      printf("|%-77s|\n", "");

      printf("|-----------------  -----------------  -----------------  -----------------|\n");
     
      printf("||Number: %-7d|  ", j + 1);
      printf("|Number: %-7d|  ", j + 2);
      printf("|Number: %-7d|  ", j + 3);
      printf("|Number: %-7d||\n", j + 4);
     
      printf("||  Pow: %-8d|  ", pow[j + 1] * perpow);
      printf("|  Pow: %-8d|  ", pow[j + 2] * perpow);
      printf("|  Pow: %-8d|  ", pow[j + 3] * perpow);
      printf("|  Pow: %-8d||\n", pow[j + 4] * perpow);

      printf("||  Status: %-5s|  ", (free[j + 1] == 1) ? "Free" : "Using");
      printf("|  Status: %-5s|  ", (free[j + 2] == 1) ? "Free" : "Using");
      printf("|  Status: %-5s|  ", (free[j + 3] == 1) ? "Free" : "Using");
      printf("|  Status: %-5s||\n", (free[j + 4] == 1) ? "Free" : "Using");     
     
      printf("|-----------------  -----------------  -----------------  -----------------|\n");
    };
  printf("-------------------------------------------------------------------------------\n\n");

  printf("There are %d being used computer(s)\n", ncomp - nfree);
  printf("Remaing %d free computer(s)\n", nfree);

  return;
}

void leave(int pow[], int free[], int (*nfree))
{
  if ((*nfree) == ncomp)
    {
      printf("All computer are free!\n");
      return;
    };

  int num;
  do
    {
      printf("Enter number of computer to leave: ");
      scanf("%d", &num);
      getchar();
      if ((num < 1) || (num > ncomp))
    printf("Invalid number!\n");
      else
    if (free[num] == 1)
      printf("Computer number %d already has been leaved!\n", num);
    else
      break;
    }
  while (1);

  free[num] = 1;
  (*nfree) ++;
  printf("\nNow, computer number %d is free!\n", num);
 
  return;
}
     

void getuse(int pow[], int free[], int (*nfree))
{
  if ((*nfree) == 0)
    {
      printf("All computer are being used!\n");
      return;
    };
 
  int num;
  do
    {
      printf("Enter number of computer to be used: ");
      scanf("%d", &num);
      getchar();
      if ((num < 1) || (num > ncomp))
    printf("Invalid number!\n");
      else
    if (free[num] == 0)
      printf("Computer number %d is being used!\n", num);
    else
      break;
    }
  while (1);

  pow[num]++;
  free[num] = 0;
  (*nfree) --;
  printf("\nNow, computer number %d is being used!\n", num);
 
  return;
}

void menu()
{
  printf("\n\n\t\t813 Laboratory manager v1.0\n");
  printf("\tCopyright (c) haidang001 (tm) (@yahoo.com)\n");
  printf("\t\t  2011 Allright reserved\n\n");

  printf("Main menu:\n");
  printf("\t1. Pick free computer to use\n");
  printf("\t2. Leave a computer\n");
  printf("\t3. View status\n");
  printf("\t4. Check sum up\n");
  printf("\t5. View statistic\n");
  printf("\t6. Quit\n\n");

  return;
}

void fill(int free[])
{
  int i;
  for (i = 1; i <= ncomp; i++)
    free[i] = 1;
  return;
}

char vquit()
{
  char ans[100];

  do
    {
      printf("Do you really want to exit? (Y/N)");
      gets(ans);
      ans[0] = toupper(ans[0]);
    }
  while ((ans[0] != 'Y') && (ans[0] != 'N'));

  return ans[0];
}

char select()
{
  char ans[100];

  do
    {
      printf("Enter your selection: ");
      gets(ans);
    }
  while ((ans[0] < '1') || (ans[0] > '6'));

  printf("\n");
  return ans[0];
}

void rmenu()
{
  char ans[100];
  printf("\nPress Enter to return to main menu . . .");
  gets(ans);
  return;
}



//S_have fun! :)

Chào ae, Koltec đi Lạng Sơn So good).
S_have fun!


Được sửa bởi haidang001 ngày 27/04/11, 10:33 pm; sửa lần 1.

_________________
koltec.
Email : tranvansangk41@gmail.com.

Y!M : haidang001.
Skype : haidang001.
Website : haidang001.tk or trầnvănsáng.vn

Facebook : facebook.com/haidang001[/size]

SĐT: 0942 666 890 (or 0982 802 454).


Thu đi để lại lá vàng
Anh đi để lại cho nàng thằng く
Mùa thu nối tiếp mùa thu.
Thằng くnối tiếp thằng くra đời.


S_have fun!

haidang001

Tổng số bài gửi : 91
Points : 176
Join date : 25/09/2010
Age : 24

Xem lý lịch thành viên http://haidang001.tk

Về Đầu Trang Go down

Re: Week10 (Full)

Bài gửi by Tung_tobe on 23/04/11, 05:40 pm

So good) tìm đc lỗi vớ vấn trong bài MU của Sáng So good) đấy là các cầu thủ có thể mặc cùng số áo @@ hoặc số áo âm nhưng nói vậy mình ngồi sửa cũng ko sửa đc So good)
còn nữa cái a[][] nghĩa là sao?

mới làm đc bài 3, trình bày ko đc đẹp như Sáng, ae ngồi bới lông tìm vết hộ nhá ;;) còn 2 bài kia chán + lười, ko muốn làm, lấy luôn bài Sáng cho tiện
Code:
#include<stdio.h>
#define diennang 400
#define giadien 70
int c=0,i,maybat,maytat,menu,may[40],dem[40],m,tdn=0;
int checkfull(const int may[];)
{
  int i;
  for(i=0;i<40;i++)
    {
      if (may[i]==0)
      return 1;//con may
    }
  return 0;//het may
}
int checkfree(const int may[];)
{
  int i;
  for(i=0;i<40;i++)
    {
      if(may[i]==1)
 return 1;//da co may su dung
    }
  return 0;
}
int batmay(int m ,int may[],int dem[])
{
  int i;
  i=m;
  if(may[i]==0)
    {
      may[i]=1;
      dem[i]++;
      return 1;//*bat may
    }
  if(may[i]!=0)
    {
      return 2;//*may dang su dung
    }
}
int tatmay(int m,int may[])
{
  int i;
  i=m;
  if(may[i]==1)//*check xem may tat chua
    {
      may[i]=0;
      return 1;//*may tat
    }
  if(may[i]==0) return 2;//may chua dc bat
}

void trangthai()
{
  int i,j;
  for(j=0;j<40;j+=4)
    {
      for(i=j;i<=(j+3);i++){
 printf("May %2d: %-7s  ",i+1,may[i+1]==1?"--ON--":"off"); } 
      printf("\n\n");
    }
}
void dn()
{
  int i,j;
  for(j=0;j<40;j+=4)
    {
      for(i=j;i<=(j+3);i++){
 printf("May %-2d:%4d(W) |  ",i+1,dem[i+1]*diennang );  }
      printf("\n              |                |                |                |\n");
    }
}
void tongdn()
{
  int i,tdn,td,tien;
  for(i=0;i<40;i++)
    {
      td+=dem[i];
    }
  tdn=td*diennang;
  tien=tdn*giadien;
  printf("\nTong dien nang tieu thu cua phong may:%d W",tdn);
  printf("\nTien dien phong may:%d VND\n\n",tien);
}
main()
{
  for(i=1;i<41;i++)
    {
      may[i]=0;
      dem[i]=0;
    }
  do{
 
    printf("\n  ===Phong may 813 du an Viet Nhat===\n");
    printf("\n\t1.Su dung may chon may");
    printf("\n\t2.Roi khoi may");
    printf("\n\t3.Trang thai cac may");
    printf("\n\t4.Dien nang tieu thu tung may");
    printf("\n\t5.Tong dien nang tieu thu cua phong may");
    printf("\n\t6.May duoc dung nhieu nhat,it nhat");
    printf("\n\t7.Thoat");
    printf("\n\t...");scanf("%d",&menu);
    switch (menu)
      {
      case 1://case 1
      {
 if(checkfull(may)==0){printf("\n[!!!]Tat cac ca may dang dc su dung...\n");break;}
 do
  {
 
    printf("\nXin moi chon may muon su dung:");scanf("%d",&m);
    if(m<1||m>40){printf("\n[!!!]Du lieu khong dung, xin moi nhap lai...");c=1; }
    if(batmay(m,may,dem)==1){c=0;continue;}
    if(batmay(m,may,dem)==2)
 {
  printf("\n[!!!] May dang duoc su dung, moi chon may khac...\n");c=1;
 }
  }while (c!=0);
      }break;
      case 2://case 2
    {
      if (checkfree(may)==0){printf("\n[!!!]Khong co may nao de tat, xin moi chon lai...\n");break;}
      do{
 printf("\nXin moi chon may muon tat:");scanf("%d",&m);
 if(m<1||m>40){printf("\n[!!!]Du lieu khong dung, xin moi nhap lai...");c=1;}
 else {
  if (tatmay(m,may)==1){c=0;break;}
  if (tatmay(m,may)==2){printf("\n[!!!] May chua duoc bat hoac dang trong trang thai nghi...\n");c=1;}
 }
      }while(c==1);
    }break;
      case 3://case 3
 {
  printf("\n\n");
  trangthai();
 }break;
      case 4://case 4
 {
  dn();
 }break;
      case 5://case 5
 {
  tongdn();
 }break;
      case 6://case 6
 {
  int maymax=0,maymin=0,ma=1,mi=1;
  for (i=0;i<40;i++)
    {
      if (dem[i]>maymax)
  {
  maymax=dem[i];
  ma=i;
  }
      if(dem[i]<maymin)
  {
    maymin=dem[i];
    mi=i;
  }
    }
  printf("\nMay su dung nhieu nhat la May %d (%d lan)",ma,maymax);
  printf("\nMay su dung nhieu it la May %d (%d lan)",mi,maymin);
 }
      }
  }while(menu!=7);
  printf("\n\nXIN CHAO, HEN GAP LAI LAN SAU\n\n");
 
 

  return 0;
}

Tung_tobe

Tổng số bài gửi : 100
Points : 124
Join date : 27/09/2010

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Week10 (Full)

Bài gửi by hieupro1269 on 24/04/11, 07:41 pm

Bài 3 của em,các bác xem có lỗi gì ko nhé.
Code:
/*Bui Trung Hieu - 20101503*/
/*    5C Viet Nhat K55    */
/*      Lab manager      */
#include<stdio.h>
#define W 400
#define giadien 750
#define sosv 40
void main()
{
  void dungmay(int,int[],int[]);
  void tatmay(int,int[]);
  void inmanhinh(int,int,int[],int[]);
  void tongdien_tien(int,int[]);
  void maxmin(int,int[],int[]);
  int ktonoff(int,int[]);
  int i,choice,onoff[sosv],lansd[sosv],c,pt=sosv;
  for (i;i<40;i++)
    {
      onoff[i]=0;
      lansd[i]=0;
    }
  do
    {printf("\033[2J");
      printf("      Chuong trinh quan ly phong lab HEDPSI\n\n\n");
      printf("1.Su dung may.\n");
      printf("2.Ngung su dung may.\n");
      printf("3.In trang thai cac may.\n");
      printf("4.In dien nang tieu thu tren cac may tinh den thoi diem hien tai.\n");
      printf("5.In tong dien nang tieu thu - tien dien thanh toan.\n");
      printf("6.In may su dung nhieu nhat va it nhat.\n");
      printf("7.Thoat\n\n");
      printf("Chon mot chuc nang de tiep tuc:");
      scanf("%d",&choice);
      if (choice>7||choice<1) continue;
      switch (choice)
    {
    case 1:
      {
        dungmay(pt,onoff,lansd);
        break;
      }
    case 2:
      {
        tatmay(pt,onoff);
        break;
      }
    case 3:
      {
        c=1;
        printf("Trang thai cac may (0 la tat,1 la bat):\n\n");
        inmanhinh(pt,c,onoff,lansd);
        break;
      }
    case 4:
      {
        c=2;
        inmanhinh(pt,c,onoff,lansd);
        break;
      }
    case 5:
      {
        tongdien_tien(pt,lansd);
        break;
      } 
    case 6:
      {
        maxmin(pt,lansd,onoff);
        break;
      }
    case 8:for (i=0;i<40;i++) printf("  %d-%d  ",i,lansd[i]);
    }
    }
  while (choice!=7);
}
/****************************/
void dungmay(int phantu,int onoff[],int lansd[])
{
  int so,kt,i;
  kt=1;
  do
    { 
      if (ktonoff(phantu,onoff)==1)
    {
      printf("Tat cac cac may deu dang dung!");
      kt=0;
      continue;
    }
      printf("nhap may muon dung:");
      scanf("%d",&so);
      if (so<0||so>40) continue;
      if (onoff[so-1]==0)
    {
      printf("May dang trang thai roi,ban co the dung.\n\n");   
      onoff[so-1]=1;
      lansd[so-1]=lansd[so-1]+1;
      kt=0;
    }
      else printf("May ban,moi ban chon may khac.\n\n");
    }
  while (kt==1);
  printf("Nhan Enter de tiep tuc...");
  getchar();getchar();
}
/*-------------*/
void tatmay(int phantu,int onoff[])
{
  int so,kt=1;
  do
  {
    if (ktonoff(phantu,onoff)==0)
      {
    printf("Tat ca cac may deu tat!\n");
    kt=0;
    continue;
      }
    printf("nhap may muon tat:");
    scanf("%d",&so);
    if (so<0||so>40) continue;
    if (onoff[so-1]==0) printf("May dang trang thai roi,moi ban nhap lai.\n\n");   
    else
      {
    printf("May da tat.\n\n");
    onoff[so-1]=0;
    kt=0;
      }
  }
  while (kt==1);
  printf("Nhan Enter de tiep tuc...");
  getchar();getchar();
}
/*-------------*/
void inmanhinh(int phantu,int chon,int onoff[],int lansd[])
{
  int i,in[40];
  switch(chon)
    {
    case 1:
      {
    for (i=0;i<phantu;i++) in[i]=onoff[i];break;
      }
    case 2:
      {
    for (i=0;i<phantu;i++) in[i]=lansd[i]*W;break;
      }
    }
      printf("        1                      2                      3                      4\n");
  for (i=0;i<phantu;)
    { 

      printf("    ______________        ______________        ______________        ______________ \n");
      printf("%-2d |%-2d%12d|      |%-2d%12d|      |%-2d%12d|      |%-2d%12d|\n",i/4+1,i+1,in[i],i+2,in[i+1],i+3,in[i+2],i+4,in[i+3]);i=i+4;
      printf("  |______________|      |______________|      |______________|      |______________|\n\n\n");
    }
  printf("Nhan Enter de tiep tuc...");
  getchar();getchar();
}
/*-------------*/
void tongdien_tien(int phantu,int lansd[])
{
  int dien=0,i;
  float tien=0;
  for (i=0;i<phantu;i++) dien=dien+lansd[i]*W;
  tien=dien*giadien;
  tien=tien/1000;
  printf("Tong dien nang tieu thu:%d W\n",dien);
  printf("Tong tien thanh toan:%.0f VND\n",tien);
  printf("Nhan Enter de tiep tuc...");
  getchar();getchar();
}
/*-------------*/
void maxmin(int phantu,int lansd[],int onoff[])
{
  int max,min,i,kt=0;
  max=min=lansd[0];
do
  {
    for (i=0;i<phantu;i++)
      {
    if (lansd[i]>max) max=lansd[i];
    if (lansd[i]<min) min=lansd[i];
      }
    if (max==0)
      {
    printf("Chua co may nao duoc su dung!\n");
      continue;
      }
    printf("May duoc su dung nhieu nhat:");
    for (i=0;i<phantu;i++) if (lansd[i]==max) printf("%d  ",i+1);
    printf("\n");
    printf("May duoc su dung it nhat:");
    for (i=0;i<phantu;i++) if (lansd[i]==min) printf("%d  ",i+1);
    printf("\n");
    printf("Nhan Enter de tiep tuc...");
    getchar();getchar();
  }
 while (kt==1);
}
/*-------------*/
int ktonoff(int phantu,int onoff[])
{
  int i,dem=0;
    for (i=0;i<phantu;i++)
      if (onoff[i]==1) dem++;
    if (dem==phantu) return 1;
    else if (dem==0) return 0;
}

hieupro1269

Tổng số bài gửi : 31
Points : 37
Join date : 04/10/2010
Age : 24

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Week10 (Full)

Bài gửi by Woodyx on 24/04/11, 11:13 pm

Hix. Sao bài tập về nhà của thầy giao isumo dùng toàn cái chưa học mới làm được zậy. :shock:

Woodyx

Tổng số bài gửi : 26
Points : 35
Join date : 27/09/2010
Age : 24
Đến từ : Hà nội pro

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Week10 (Full)

Bài gửi by chikclik on 25/04/11, 05:53 pm

Code:
//ON = 0; OFF = 1;400W/h
#include <stdio.h>
#include <stdlib.h>
#include<time.h>

void menu()
{
    printf("\t\t\tMENU\n\n");
    printf("1:dung may\n");
    printf("2:nghi may\n");
    printf("3:trang thai cac may\n");
    printf("4:dien nag tieu thu\n");
    printf("5:dien nang tieu thu va tien dien\n");
    printf("6:may duoc su dung nhieu nhat\n");
    printf("7:quit\n");
}
int main()
{
    clock_t start[40],finish[40],now[40];
    double totaltime[40],timenow[40],dien[40],tongdien=0,tien[40],tongtien=0;
    int i,select,quit=0,h,min,j;
    int trangthai[40],max[40],may;

    for (i=0;i<40;i++) {trangthai[i]=1;max[i]=0;start[i]=0;tien[40]=0;dien[i]=0;}
    j=max[0];
    while (1)
    {
        menu();
        printf("select....");scanf("%d",&select);
        switch (select)
        {
            case 1:printf("nhap so may dung:");
            scanf("%d",&may);
            if (trangthai[may-1]==0) printf("may da duoc su dung! Hay dung may khac!\n"); else {
            trangthai[may-1]=0;
            start[may-1]=clock();
            max[may-1]++;
            printf("ban da ngoi may %d",may);}
            break;
            case 2:printf("ban nghi may so?...");
            scanf("%d",&may);
            if (trangthai[may-1]==1) printf("may nay ko duoc su dung!!\n"); else
            {finish[may-1]=clock();
            totaltime[may-1]=(double)(finish[may-1]-start[may-1])/(CLOCKS_PER_SEC);
            dien[may-1]=totaltime[may-1]/9000;
            h=(totaltime[may-1]/3600);
            min=totaltime[may-1]/60-h*60;
            printf("ban da su dung %d h %d min %.0lf s",h,min,totaltime[may-1]-h*3600-60*min);
            trangthai[may-1]=1;
            }
            break;
            case 3:printf("\t\t\tTRANG THAI HOAT DONG\n");
            for (i=0;i<40;i++) {
            printf("may %d: ",i+1);
            if (trangthai[i]==1) printf("Off\t"); else printf("ON\t");
            if ((i+1)%4==0) printf("\n\n\n\n");
            }
            break;
            case 4:printf("\t\t\tDIEN NANG TIEU THU\n");
            for (i=0;i<40;i++) {
            printf("may %d: ",i+1);
            if (trangthai[i]==0)
            {
            now[i]=clock();
            timenow[i]=(double)(now[i]-start[i])/(CLOCKS_PER_SEC);
            dien[i]=(timenow[i]/3600)*400;
            printf("%.0lf W\t",dien[i]);
            } else {printf("0 W\t");}
            if ((i+1)%4==0) printf("\n\n\n\n");
            }
            break;
            case 5:for (i=0;i<40;i++) {tongdien+=dien[i];}tongtien=tongdien*750;
            printf("tong so dien su dung :%.2lf kW\n",tongdien);
            printf("Tong so tien thanh toan:%.0lf $\n",tongtien);
            break;
            case 6:printf("May duoc su dung nhieu nhat:\n");
            for (i=0;i<40;i++) if(j<max[i]) j=max[i];
            for (i=0;i<40;i++)  if (max[i]==j) printf("%d\t",i+1);
            break;
            case 7:quit++;
            system("PAUSE");
            break;
        }
        if (quit!=0) break;
    }
    printf("hen gap lai!!!\n\n");
    return 0;
}
bài 3 của mình.chak la ổn

chikclik

Tổng số bài gửi : 12
Points : 20
Join date : 21/03/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Week10 (Full)

Bài gửi by senior_kien on 25/04/11, 11:58 pm

cac bac show kinh qa' hey

senior_kien

Tổng số bài gửi : 1
Points : 1
Join date : 30/09/2010

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Week10 (Full)

Bài gửi by zxcvbnm<>? on 26/04/11, 12:29 am

Bai 1
Code:
#include <stdio.h>

 
int print_menu();

int yourArr(int a[]);

int randArr(int a[]);

int occur0(int a[], int size);

int max0(int a[], int size);

void occur_all(int a[], int size);

 
int main()

{

    int a[100], i, size = 0, menu, occur_0, max_0;

 
    for(i = 0; i < 100; i++)

        a[i] = 0;

 
    do

    {

        menu = print_menu();

        printf("\n");

 
        switch (menu)

        {

            case 1:

                {

                    size = yourArr(a);

                    printf("\n-------------------------------------------------------\n\n");

                    break;

                }

            case 2:

                {

                    size = randArr(a);

                    printf("\n-------------------------------------------------------\n\n");

                    break;

                }

            case 3:

                {

                    printf("The Array: ");

                    for(i = 0; i < size; i++)

                        printf("%d ", a[i]);

                    occur_0 = occur0(a, size);

                    printf("\n\nThe Frequency of Occurence of Number 0: %d\n", occur_0);

                    printf("\n-------------------------------------------------------\n\n");

                    break;

                }

            case 4:

                {

                    printf("The Array: ");

                    for(i = 0; i < size; i++)

                        printf("%d ", a[i]);

                    max_0 = max0(a, size);

                    printf("\n\nThe Max Length of Number 0 Subsequence: %d\n", max_0);

                    printf("\n-------------------------------------------------------\n\n");

                    break;

                }

            case 5:

                {

                    printf("The Array: ");

                    for(i = 0; i < size; i++)

                        printf("%d ", a[i]);

                    printf("\n\n");

                    occur_all(a, size);

                    printf("\n-------------------------------------------------------\n\n");

                    break;

                }

            case 6: printf("See You Again!\n\n"); break;

            default:

                {

                    printf("Invalid Choice! Please Choose Again!\n");

                    printf("\n-------------------------------------------------------\n\n");

                }

        }

    }

    while (menu != 6);

 
    return 0;

}

 
int print_menu()

{

    int menu;

 
    printf("PROGRAM MAIN MENU\n\n");

    printf("1. Enter Your Integer Array.\n");

    printf("2. Let The Computer Randomly Generate an Integer Array.\n");

    printf("3. The Frequency of Occurence of Number 0.\n");

    printf("4. The Max Length of Number 0 Subsequence.\n");

    printf("5. The Frequency of Occurence of All numbers.\n");

    printf("6. Exit.\n");

    printf("\nYour choice: ");

    scanf("%d", &menu);

 
    return menu;

}

 
int yourArr(int a[])

{

    int i, size;

 
    for(i = 0; i < 100; i++)

        a[i] = 0;

 
    do

    {

        printf("Size of Array (1 - 100): ");

        scanf("%d", &size);

        if ((size < 1)||(size > 100))

            printf("Invalid! Size must be between 1 and 100! Enter Again!\n\n");

    }

    while ((size < 1)||(size > 100));

 
    printf("\n");

    for(i = 0; i < size; i++)

    {

        printf("Enter a[%d]: ", i);

        scanf("%d", &a[i]);

    }

 
    return size;

}

 
int randArr(int a[])

{

    int i, size;

 
    for(i = 0; i < 100; i++)

        a[i] = 0;

 
    do

    {

        printf("Size of Array (1 - 100): ");

        scanf("%d", &size);

        if ((size < 1)||(size > 100))

            printf("Invalid! Size must be between 1 and 100! Enter Again!\n\n");

    }

    while ((size < 1)||(size > 100));

 
    for(i = 0; i < size; i++)

    {

        a[i] = rand()%100;

    }

 
    return size;

}

 
int occur0(int a[], int size)

{

    int i, count = 0;

 
    for(i = 0; i < size; i++)

        if (a[i] == 0)

            count++;

 
    return count;

}

 
int max0(int a[], int size)

{

    int i, in = 1, out = 0, stt, length = 0, max = 0;

 
    stt = out;

 
    for(i = 0; i < size; i++)

    {

        if (a[i] == 0)

            if (stt == in)

                length++;

            else

            {

                length = 1;

                stt = in;

            }

        else if (stt == in)

        {

            stt = out;

            if (length > max)

                max = length;

        }

    }

 
    return max;

}

 
void occur_all(int a[], int size)

{

    int i, k, temp, occur = 1, b[100];

 
    for(i = 0; i < 100; i++) /* copy array */

        b[i] = a[i];

 
    for(i = 0; i < size; i++)

        for(k = i; k > 0; k--)

        {

            if (b[k] < b[k-1])

            {

                temp = b[k];

                b[k] = b[k-1];

                b[k-1] = temp;

            }

        }

 
    printf("Number\tOccurence\n\n");

    printf("%d", b[0]);

    for(i = 1; i < size; i++)

    {

        if (b[i] == b[i - 1])

        {

            occur++;

        }

        else

        {

            printf("\t%d\n", occur);

            printf("%d", b[i]);

            occur = 1;

        }

    }

    printf("\t%d\n", occur);

 
}


Bai 3
Code:
#include <stdio.h>

#define POWER 400

#define PRICE 750

 
int print_menu();

void logOn(int a[],int b[]);

void logOff(int a[]);

void states( int a[]);

void usage(int a[]);

void totalUsage(int a[]);

void most_least(int a[]);

 
int main()

{

    int i, menu, com[40], elec[40];

 
    for(i = 0; i < 40; i++)

        com[i] = elec[i] = 0;

 
    do

    {

        menu = print_menu();

        printf("\n");

 
        switch (menu)

        {

            case 1:

            {

                logOn(com, elec);

                printf("\n------------------------------------------\n\n");

                break;

            }

            case 2:

            {

                logOff(com);

                printf("\n------------------------------------------\n\n");

                break;

            }

            case 3:

            {

                states(com);

                printf("\n------------------------------------------\n\n");

                break;

            }

            case 4:

            {

                usage(elec);

                printf("\n------------------------------------------\n\n");

                break;

            }

            case 5:

            {

                totalUsage(elec);

                printf("\n------------------------------------------\n\n");

                break;

            }

            case 6:

            {

                most_least(elec);

                printf("\n------------------------------------------\n\n");

                break;

            }

            case 7:

            {

                printf("See You Again!\n\n");

                break;

            }

            default: printf("Invalid Choice! Choose Again!\n\n");

        }

    }

    while (menu != 7);

 
    return 0;

}

 
int print_menu()

{

    int menu;

 
    printf("COMPUTER MANAGEMENT PROGRAM - R.813\n\n");

    printf("1. Log On a Computer.\n");

    printf("2. Log Off a Computer.\n");

    printf("3. Computers' States.\n");

    printf("4. Computers' Electricity Usage.\n");

    printf("5. Total Electricity Consumption.\n");

    printf("6. Most/Least Used Computer.\n");

    printf("7. Exit.\n\n");

    printf("Your Choice: ");

    scanf("%d", &menu);

 
    return menu;

}

 
void logOn(int a[],int b[])

{

    int com, valid = 1;

 
    do

    {

        printf("Choose a Computer to Log On [1-40]: ");

        scanf("%d", &com);

        if ((com < 1)||(com > 40))

        {

            printf("Invalid Choice! Choose Again!\n\n");

            valid = 0;

        }

        else if (a[com - 1] == 1)

        {

            printf("This computer is currently logged on. Please choose another one!\n\n");

            valid = 0;

        }

        else

        {

            printf("You have logged on Computer %d.\n", com);

            a[com - 1] = 1;

            b[com - 1] += POWER;

            valid = 1;

        }

    }

    while (valid == 0);

}

 
void logOff(int a[])

{

    int com, valid = 1;

 
    do

    {

        printf("Choose a Computer to Log Off [1-40]: ");

        scanf("%d", &com);

        if ((com < 1)||(com > 40))

        {

            printf("Invalid Choice! Choose Again!\n\n");

            valid = 0;

        }

        else if (a[com - 1] == 0)

        {

            printf("This computer is already logged off.\n");

            valid = 1;

        }

        else

        {

            printf("You have logged off Computer %d.\n", com);

            a[com - 1] = 0;

            valid = 1;

        }

    }

    while (valid == 0);

}

 
void states( int a[])

{

    int i;

 
    printf("Computer\tState\n\n");

    for(i = 0; i < 40; i++)

    {

        printf("%d\t\t", i+1);

        if (a[i] == 1)

            printf("On\n");

        else printf("Off\n");

    }

}

 
void usage(int a[])

{

    int i;

 
    printf("Computer\tElectricity Usage (W)\n\n");

    for(i = 0; i < 40; i++)

    {

        printf("%d\t\t%d\n", i+1, a[i]);

    }

}

 
void totalUsage(int a[])

{

    int i;

    float total = 0;

 
    for(i = 0; i < 40; i++)

        total += (float) a[i];

 
    printf("%-40s%20.1f\n", "Total Electricity Consumption (kW):", total/1000);

    printf("%-40s%16s%4d\n", "Price (per kW):", "x", PRICE);

    printf("--------------------------------------------------------------\n");

    printf("%-40s%20.0f\n", "Total Cost (VND):", total/1000*(float)PRICE);

}

 
void most_least(int a[])

{

    int i, max, maxCom, min, minCom;

 
    max = min = a[0];

 
    for(i = 1; i < 40; i++)

    {

        if (a[i] > max)

        {

            max = a[i];

        }

    }

 
    for(i = 1; i < 40; i++)

    {

        if (a[i] < min)

        {

            min = a[i];

        }

    }

 
    printf("The Most Used Computer(s) is:  Computer ");

    for(i = 0; i < 40; i++)

        if (a[i] == max)

            printf("%d, ", i+1);

    printf("\b\b (%d W)\n", max);

 
    printf("The Least Used Computer(s) is:  Computer ");

    for(i = 0; i < 40; i++)

        if (a[i] == min)

            printf("%d, ", i+1);

    printf("\b\b (%d W)\n", min);

}

(st)

Mon nay minh chi hy vong duoc D de do ton 550k hoc lai

zxcvbnm<>?

Tổng số bài gửi : 15
Points : 27
Join date : 04/10/2010

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Week10 (Full)

Bài gửi by darklord226 on 26/04/11, 03:43 pm

đọc thì chả hiểu
ý kiên mỗi cái ai dạy viết motriron thế kia vậy

darklord226

Tổng số bài gửi : 16
Points : 18
Join date : 04/10/2010

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Week10 (Full)

Bài gửi by Woodyx on 27/04/11, 08:50 pm

Bài của zxcvbnm<>? làm ngon nhỉ. Kết nhất vì dễ hiểu. Phù hợp vs trình độ hiểu bít. Very Happy . Thanks phát. Lần sau cố gắng phát huy. . . So good

Woodyx

Tổng số bài gửi : 26
Points : 35
Join date : 27/09/2010
Age : 24
Đến từ : Hà nội pro

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Week10 (Full)

Bài gửi by Tung_tobe on 27/04/11, 09:09 pm

bài của chikclik sai rồi, check mà xem, bật máy lên xong tắt máy đi điện năng tiêu thụ vẫn bằng 0 với cả tính watt toàn là 1 w với 2w, đc cái tính đc thời gian sử dụng máy Very Happy
Bài Hiếu sai ngay từ chỗ nhập dữ liệu đầu tiên, nhập máy nào cũng báo là đang sử dụng Neutral

Tung_tobe

Tổng số bài gửi : 100
Points : 124
Join date : 27/09/2010

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Week10 (Full)

Bài gửi by Tung_tobe on 27/04/11, 09:14 pm

hơ hơ còn bài mình dịch trên code block còn ko chạy So good) sang ubuntu đã Very Happy

Tung_tobe

Tổng số bài gửi : 100
Points : 124
Join date : 27/09/2010

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Week10 (Full)

Bài gửi by Sponsored content Today at 03:12 pm


Sponsored content


Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết