Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: tách chuỗi

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    20

    Mặc định tách chuỗi

    Bài tập của mình là sử dụng kiểu cấu trúc kết hợp với các hàm cấp phát bộ nhớ để cộng các đa thức.Đa thức được lưu trữ dưới dạng chuỗi.Và số đa thức nhập vào là không giới hạn.Nhưng mình đang bị mắc ở phần tách chuỗi thành các hệ số và số mũ tương ứng.Các cậu júp mình giải thuật phần đó với nha.

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Bài tập của mình là sử dụng kiểu cấu trúc kết hợp với các hàm cấp phát bộ nhớ để cộng các đa thức.Đa thức được lưu trữ dưới dạng chuỗi.Và số đa thức nhập vào là không giới hạn.Nhưng mình đang bị mắc ở phần tách chuỗi thành các hệ số và số mũ tương ứng.Các cậu júp mình giải thuật phần đó với nha.
    Trước trên cần yêu cầu nhập đa thức đúng chuẩn. VD: a*x^b + ...
    Khi tính toán bạn sẽ tách các hằng vào một mảng mà vị trí của nó tương ứng với bậc đa thức.

    Bây giờ mới là cái bạn hỏi, bạn duyệt đa thức gặp kí tự số or '-' thì lưu vào một chuỗi mới temp dùng hàm chuyển thành số lưu tạm vào một biến số myConst. Tiếp tục duyệt, lại gặp số thì tách vào chuỗi temp (đưa temp về chuỗi trắng nhé) chuyển nó thành số rồi lưu vào biên myDegree.

    Lặp lại quá trình trên đến hết chuỗi.

    Cho 2 cái đó vào mảng a[myDegree]=myConst;

    Chuyển từ chuỗi sang số dùng atoi cả số âm cũng đc, VD:
    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3.  
    4. int main()
    5. {
    6.     char *st="-123";
    7.     printf("st = %d",atoi(st));
    8. }

    Have fun!

  3. #3
    Ngày gia nhập
    09 2008
    Bài viết
    20

    uhm,để mình làm thử rùi cậu xem lại coi có đúng không nha.
    Đã được chỉnh sửa lần cuối bởi cutecat : 08-11-2008 lúc 07:52 AM.

  4. #4
    Ngày gia nhập
    09 2008
    Bài viết
    20

    Cám ơn cậu nha.Đây là bài mình làm nhưng chưa xong.Các cậu xem qua rùi sửa júp mình nha nếu thấy chỗ nào không cần thiết.
    Code:
     
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #define MAX 100
    #define MAXLEN 200
    #define TRUE 1
    #define FALSE 0
     struct	DaThuc
    {
    	int SoMu ;
    	int HeSo;
    }
    	dt,*pF1,*pF2,*F1,*F2,Tong[MAX],*p1,*p2,T,Tich[MAX];
    
    	typedef struct CauTrucHamSo
    	{
    		char TenHam ;
    		char Ham[MAXLEN];//mang chuoi
    		struct DaThuc DT[MAX];
    		int SoMuMax;
    		struct CauTrucHamSo *tiep ;
    	}
    		HamSo ;
    		HamSo *pdau,*p;
    
    	char Name ;
    	char Ham[MAXLEN],s1[10],s2[10];
    	char kt ;
    	int i,j,len,dem,Max;
    	int HS,SM,InHS,InSM;
    
    void NhapDaThuc()
    {
    	 int isalpha;//kiem tra xem ki tu nhap vao
    	 pdau =NULL ;
    	while(1)
    	{
    		printf("NHAP VAO HAM SO  \n");
    		printf("Nhap ten ham(A,B,C... :  ");
    		Name=getche();//tra ve ki tu doc tu ban phim
    		printf("\n");
    		if(!isalpha(Name))
    		{
    			printf("Ten ham ban nhap khong dung ..Ban an 1 phim bat ky de ket thuc");
    			getch();
    			break;
    		}
    			fflush(stdin);
    			printf("Nhap vao ham so : ");
    		        gets(Ham);
    		        if(pdau==NULL)
    			{
    				 pdau =(HamSo *)malloc(sizeof(HamSo));
    				 p=pdau;
    			}
    		else
    			{
    				p->tiep =(HamSo*)malloc(sizeof(HamSo));
    				p=p->tiep ;
    			}
                   p->TenHam =Name;
                    strcpy(p->Ham ,Ham);
                    //tach chuoi thanh he so va so mu tuong ung 
                    strcat(Ham,"+");
    		len =strlen(Ham);
    		HS =TRUE ;SM=FALSE;
    		InHS =FALSE ;InSM =FALSE ;
    		dem=0;
    		for(i=0;i<=len;i++)
    		{
    
    			if(Ham[i] =='^')
    			{
    				SM=TRUE  ;
    				j=i+1;
    				continue;
    			}
    			if(Ham[i] =='+'||Ham[i]=='-' )
    			{
    				HS=TRUE ;
    				SM=FALSE;
    				InSM=TRUE;
    			}
    
    			if(Ham[i]=='x'||Ham[i]=='X')
    			{
    				HS=FALSE;
    				InHS =TRUE ;
    			}
    
    			if(SM)
                               s2[i-j]=Ham[i];
    			
    			else if(InSM)
    			{
    				s2[i-j]='\0';
    				(*(p+dem)).DT->SoMu=atoi(s2);
    				 InSM =FALSE;
    				 ++dem ;
    				 j=i;
    			 }
    			
    			if(HS)
    			   s1[i-j] =Ham[i] ;
    			else if (InHS)
    			{	
    				s1[i-j]='\0';
    				(*(p+dem)).DT->HeSo =atoi(s1);
    				InHS =FALSE ;
    			}
    			
    		}
    ]

  5. #5
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Mỗi hàm nhập thôi dài quá, mà mình thấy chẳng cần dùng struct không thì chỉ cần cái struct như này:
    Code:
    typedef struct Polymonical
    {
         char *PolyStr;
         int *PolyArray;
         int degree;
    } POLY[10];
    PolyStr nhập đa thức vào là một chuỗi;
    PolyArray: sử lý chuỗi đó đưa vào mảng;
    degree: độ dài mảng đa thức trên = bằng bậc cao nhất của đa thức = cái bậc đầu tiên trong chuỗi.
    POLY[10] chắc chỉ nhập vào đa thức vào rồi tính toán thôi, nên mình để 10 phần tử.

    Việc tính toán thì ta sẽ tính dần từng cặp đa thức, chỉ cần viết một hàm gọi nhiều lần là được.

    Phát triển bài này lên cộng (trừ) và nhân.
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 08-11-2008 lúc 09:27 AM.

  6. #6
    Ngày gia nhập
    09 2008
    Bài viết
    20

    Mặc định tách chuỗi

    uhm,mình cũng đang xây dựng bài toán đó rùi cộng và nhân các đa thức lại với nhau.Nhưng theo cậu nếu ko dùng struct thì phải làm thế nào?

  7. #7
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Theo mình dùng mảng lưu đa thức quá tốn và lãng phí dùng danh sách móc nối đi .
    I'm superman

Các đề tài tương tự

  1. Bài tập C++ Cách để so sánh 2 chuỗi kí tự giữa chuỗi nhập từ phím và chuỗi từ file xem có giống nhau không?
    Gửi bởi davilson18 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 09-06-2012, 09:47 AM
  2. Lập trình C Thay thế chuỗi s1 trong chuỗi s bằng chuỗi s
    Gửi bởi duytue trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 23-09-2011, 04:16 PM
  3. thay thế chuỗi con thứ i trong chuỗi mẹ bằng 1 chuỗi khác
    Gửi bởi nhat1811 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 06-08-2011, 08:25 AM
  4. Trả lời: 1
    Bài viết cuối: 29-06-2011, 12:02 AM
  5. xem một từ trong chuỗi là một chuỗi con, sắp xếp các chuỗi con theo thứ tự tăng dần
    Gửi bởi qpkdct1101 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 20-01-2011, 08:22 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn