HN - Aptech


 
IndexIndex  PortalPortal  CalendarCalendar  GalleryGallery  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Thành viênThành viên  NhómNhóm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Share | 
 

 Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
haph86
Gà mới lớn
Gà mới lớn


Tổng số bài gửi : 40
Join date : 04/06/2009

Bài gửiTiêu đề: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Tue Jun 23, 2009 10:11 am

Đề04_Q2:
1. Yêu cầu:
- Nhập chuỗi
- Đếm số lần xuất hiện ký tự ch
- Xóa bỏ các ký tự space ( cách ) ở đầu chuỗi
2. Hướng giải quyết:
- Ý 1 và 2 mọi người làm quen rồi, mình ko đề cập tới nữa nhé Wink
- Ý3: Chú ý là đề bài chỉ yêu cầu: "the program must be divided into modules" -> có thể viết bao nhiêu modules ( hàm ) đều được. Vậy ở đây mình sẽ xây dựng thêm một hàm "xóa ký tự tại vị trí k" void del(int k, char a[]);
Sau đó ta viết hàm xóa ký tự space ở đầu:
void trim_space(char a[])
Trong thân hàm ta chỉ cần thực hiện đơn giản vòng lặp while:
while(phần tử đầu tiên còn = ký tự space) { xóa ký tự tại vị trí 0 };
Anh em thử làm và hồi âm nhé, nều chưa được thì mình mới post code lên Very Happy
Về Đầu Trang Go down
Xem lý lịch thành viên
haph86
Gà mới lớn
Gà mới lớn


Tổng số bài gửi : 40
Join date : 04/06/2009

Bài gửiTiêu đề: Re: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Tue Jun 23, 2009 11:01 am

Đề05 Q2
1. Yêu cầu:
- Nhập N chuỗi ( 0- Tính độ dài của chuỗi có... độ dài lớn nhất Very Happy (max length)
- In ra các chuỗi có độ dài bằng độ dài lớn nhất vừa tìm được
2. Giải quyết:
- Nhập N chuỗi: Dùng mảng hai chiều để lưu trữ N chuỗi. Có thể coi như sau: Là mảng một chiều gồm N phần tử, mỗi phần tử con lại là một chuỗi. Vậy mảng để sử dụng là: char arr[50][100]; ( chỉ số 50 ứng với số N tối đa, chỉ số 100 ứng với độ dài tối đa của mỗi chuỗi con )
Vậy hàm của ta sẽ là:
void input(int *N, char arr[][100]);
+ Nhập N bình thường ( thông qua con trỏ )
+ Chạy vòng lặp N lần, mỗi lần nhập vào một chuỗi thứ i thông qua hàm: gets(a[i]);

- Tìm độ dài của chuỗi dài nhất:
+ Khai báo biến MaxL để lưu giá trị độ dài lớn nhất sẽ tìm được
+ Khởi tạo MaxL = độ dài chuỗi đầu tiên ( strlen(a[0] )
+ Chạy vòng lặp N lần, so sánh MaxL với độ dài chuỗi đang xét ( strlen(a[i] ). Nếu MaxL < strlen(a[i]) thì gán MaxL=strlen(a[i]);
+ Kêt thúc hàm, MaxL mang giá trị cần tìm. Return MaxL cho hàm để in ra kết quả trong hàm main
=> Hàm: int MaxLength(int N, char arr[][100]);

- In ra các chuỗi có độ dài bằng MaxL
+ Gọi hàm MaxLength để tìm độ dài lớn nhất, gán bằng m ( m = MaxLength(N,arr); )
+ Chạy vòng lặp, so sánh độ dài chuỗi thứ i đang xét có bằng m không, nếu có thì in ra
=> Hàm: void display(int N, char arr[][100]);

Anh em ngâm cứu và hồi âm nhé, mình sẽ post code sau Wink
Về Đầu Trang Go down
Xem lý lịch thành viên




Join date : 01/01/1970

Bài gửiTiêu đề: Re: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Tue Jun 23, 2009 11:07 pm

chém gió hehehe
Về Đầu Trang Go down
Xem lý lịch thành viên
haph86
Gà mới lớn
Gà mới lớn


Tổng số bài gửi : 40
Join date : 04/06/2009

Bài gửiTiêu đề: Re: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Wed Jun 24, 2009 10:02 am

Đề06 Q2
1. Yêu cầu:
- Nhập chuỗi
- Đềm từ
- Xóa ký tự space ( dấu cách ) tại vị trí đầu và cuối của chuỗi ( nếu có )
2. Giải quyết:
- Nhập chuỗi

- Đếm từ:
+ Khái niệm từ: nhóm ký tự khác space liền nhau
+ VD: Cong hoa x4 hoi -> 4 từ
+ Khới tạo biến dem=0;
+ Duyệt chuỗi, tìm kí tự khác ' ' (space) đầu tiên, tăng biến dem; break để thoát khỏi vòng lặp;
+ Duyệt chuỗi từ vị trí kế tiếp vị trí vừa tìm được. Nếu gặp ký tự nào khác ' ', khác NULL và ký tự trước nó là ' ' thì tăng biến dem
+ in ra gia tri bien dem, chính là số từ của chuỗi.

- Xóa ' ' tại vị trí đầu tiên và cuối cùng của chuỗi ( nếu có )
+ Xây dựng hàm xóa ký tự tại vị trí k của chuỗi a[]; // void del(int k, char a[]);
+ Chạy vòng lặp while: chừng nào a[0] còn == ' ' thì còn xóa ký tự tại vị trí 0 // del(0,a);
+ Chạy vòng lặp while: chừng nào a[n-1] còn == ' ' thì còn xóa ký tự tại vị trí n-1 ( a[n-1] là ký tự liền kề trước ký tự NULL của chuỗi ) // với n=strlen(a);
-> xóa được tất cả các ký tự space thừa tại vị trí đầu tiên và cuối cùng của chuỗi.
Về Đầu Trang Go down
Xem lý lịch thành viên
haph86
Gà mới lớn
Gà mới lớn


Tổng số bài gửi : 40
Join date : 04/06/2009

Bài gửiTiêu đề: Re: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Fri Jun 26, 2009 7:55 pm

Mọi người thích post code lên rồi cop về luôn cho nhanh thì phải
Về Đầu Trang Go down
Xem lý lịch thành viên




Join date : 01/01/1970

Bài gửiTiêu đề: Re: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Sat Jun 27, 2009 12:55 am

hehehe làm gì có ai làm hehehe
Về Đầu Trang Go down
Xem lý lịch thành viên
spyware
Đại Bàng Tinh
Đại Bàng  Tinh


Tổng số bài gửi : 116
Join date : 04/06/2009
Age : 32
Đến từ : HN

Bài gửiTiêu đề: Re: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Sun Jun 28, 2009 12:44 pm

có nè, nhưng 6_2 hơi lạ chút, lúc thì bảo chỉ cắt đầu, lúc lại bảo cắt đầu cắt đuôi. xem lại phần đề sẽ thấy
- code thế này được hem
- mới edit
Code:

#include<conio.h>
#include<stdio.h>
#include<string.h>
// declare all function
void input(char s[]);
int count(char s[]);
void ftrim(char s[]);
void ltrim(char s[]);
void trim(char s[]);
//define all function
void main()
{
   int i,c;
   char str[100];
   clrscr();
   input(str);
   printf("\nNumbers of words is: %d",count(str));
   trim(str);
   getch();
}
void input(char s[])
{
   printf("\nInput string:");
   fflush(stdin);
   gets(s);
}
int count(char s[])
{
   int c=0,i,j,len;
   len=strlen(s);
   for(i=0;i<len;i++)
   {
   if(s[i]!=' ' && s[i]!='\t')
      {
      c++;
      for(j=i+1;j<len;j++)
         {
         if(s[j]==' ' || s[j]=='\t')
            {
            i=j;
            break;
            }
         }
      }
   }
   return c;
}
void ftrim(char s[])
{
   int i,j,k,len;
   len=strlen(s);
   for(i=0;i<len;i++)
      if(s[i]!=' ' && s[i]!='\t') break;
   if(i)
   {
      for(j=i,k=0;j<len;j++)
         {
         s[k]=s[j];
         k++;
         }
      s[k]=NULL;
   }

}
void ltrim(char s[])
{
   int i,j,len;
   len=strlen(s);
   for(i=len-1;i>0;i--)
      if(s[i]!=' '&& s[i]!='\t') break;
   if(i!=len-1)   s[i+1]=NULL;
}
void trim(char s[])
{
   int len;
   len=strlen(s);
   printf("\nLength of string before trim: %d",len);
   ftrim(s);
   ltrim(s);
   printf("\nString after trim:"); puts(s);
   printf("Length of string after trim: %d",strlen(s));
}

_________________
::::Real Programmer :::::


Được sửa bởi spyware ngày Mon Jun 29, 2009 8:09 pm; sửa lần 1.
Về Đầu Trang Go down
Xem lý lịch thành viên
haph86
Gà mới lớn
Gà mới lớn


Tổng số bài gửi : 40
Join date : 04/06/2009

Bài gửiTiêu đề: Re: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Mon Jun 29, 2009 2:14 pm

Không hiểu lắm Hiến ơi, " lúc cắt đầu, lúc cắt đuôi " là sao ? Theo đề bài, yêu cầu là: cắt tất cả các khoảng trống ( thừa ) ở đầu chuỗi hoặc cuối chuỗi - có kèm theo thông báo độ dài trước và sau khi cắt. Chưa hiểu ý anh em lắm :-??
Về Đầu Trang Go down
Xem lý lịch thành viên
spyware
Đại Bàng Tinh
Đại Bàng  Tinh


Tổng số bài gửi : 116
Join date : 04/06/2009
Age : 32
Đến từ : HN

Bài gửiTiêu đề: Re: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Mon Jun 29, 2009 6:17 pm

Q2: write a program to accept one strings, after that count the number of words and trim all space character at the last of string (you must print length of string before and after trim)
- accept one string
- count the number of words
- trim all space character at the first and last of string (you must print length of string before and after trim)
- vấn đề là mấy cái bộ đề này rất củ chuối, không đề nào khỏi sai cả, chắc phải kiến nghị nhà trường tôn trọng học viên hơn mới được
- còn đề này thì cắt đầu hay cắt đuôi hay cả 2 cũng chỉ là ở thuật toán thôi, làm cả 2 phần đầu và đuôi cho nó quen thôi mà.

_________________
::::Real Programmer :::::
Về Đầu Trang Go down
Xem lý lịch thành viên




Join date : 01/01/1970

Bài gửiTiêu đề: Re: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Mon Jun 29, 2009 8:31 pm

(ha` pót code de 04 đi câu xóa chưa làm đc nè)
làm đc rồi ^_^ pót code lên chém tí nhá
làm theo hướng dẫn của bác Ha huyền .
Code:

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

void accept(char s[],char *ch);
int count(char *ch,char s[]);
void del(int k,char s[]);
void trim(char s[]);

void main()
{
   char s[100],ch;
   clrscr();
   accept(s,&ch);
   count(&ch,s);
   trim(s);
   getch();
}

void accept(char s[],char *ch)
{
   printf("\nInput string: ");
   fflush(stdin);
   gets(s);
   printf("\nInput charater: ");
   *ch=getchar();

}

int count(char *ch,char s[])
{
   int i,dai,dem=0;
   dai=strlen(s);

   for(i=0;i<dai;i++)
   {
      if(s[i]==*ch)
         dem++;
   }
   printf("\nNumber of %c is: %d",*ch,dem);
   return dem;
}
void del(int k,char s[])
{
   int i,dai;
   dai=strlen(s);
   for(i=k;i<dai;i++)
   {
      s[i]=s[i+1];
   }
   dai=dai-1;

}
void trim(char s[100])
{
 //   int i,dai,j;
 //   dai=strlen(s);
   printf("\nString after trim: ");


      while(s[0]==' ')

      {
         del(0,s);

      }
   
   puts(s);
}
Về Đầu Trang Go down
Xem lý lịch thành viên
haph86
Gà mới lớn
Gà mới lớn


Tổng số bài gửi : 40
Join date : 04/06/2009

Bài gửiTiêu đề: Re: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Mon Jun 29, 2009 10:34 pm

Phải công nhận là bộ đề này nhiều chỗ rất không hợp lý, có những lúc gây ức chế cho mình khi giải quyết đề. Lúc nào a e thử đóng góp ý kiến xem sao. Chỉ sợ nhà trường đưa ra ý kiến đây chỉ là bộ đề tham khảo, đề thi sẽ chuẩn hơn thì... :-< nản quá ~X(
Về Đầu Trang Go down
Xem lý lịch thành viên




Join date : 01/01/1970

Bài gửiTiêu đề: Re: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Tue Jun 30, 2009 11:14 pm

thế thì mới có ít học sinh tiêu biểu ^_^
các bác cứ ra hợp lý các bác lên hết trang vàng à .
phải vô lý cực ky vo lý thì mới loạn đầu lên mới ko co ai ở trang vàng .






(chém tý thôi nha đừng tưởng thật)
Về Đầu Trang Go down
Xem lý lịch thành viên
Sponsored content




Bài gửiTiêu đề: Re: Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!   Today at 11:22 pm

Về Đầu Trang Go down
 
Một số gợi ý giải quyết Q2 của các đề - a e tham khảo nhé!
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» bán thảm cũ,bán thảm trải sàn cũ,,giá tốt Thịnh
» HCM- Cho thuê căn hộ Nguyễn Quyền, ngay ngã 4 Bốn Xã. 62m2.4.5tr/tháng
» Bán chung cư Sen Vàng,độc quyền phân phối giá rẻ-liên hệ
» Bán đất mỹ đình vỡ nợ giải quyết trong tuần
» Bán độc quyền chung cư VP5 Linh Đàm giá rẻ 0934523626

Permissions in this forum:Bạn không có quyền trả lời bài viết
HN - Aptech :: Khóa Học :: SEMESTER I :: C :: Bài Tập-
Chuyển đến