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

Đề tài: Tìm số chính phuơng nhỏ nhất trong mảng

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    22

    Exclamation Tìm số chính phuơng nhỏ nhất trong mảng

    Em làm được tới đây thì chịu , mọi người góp ý giúp minh với
    Code:
    void docm(char *tentt,mang *u)
    {
    	FILE *p;
    	int i,tam;
    	int ret=0;
    	p=fopen(tentt,"rt");
    	if(p!=NULL)
    	{
    		fscanf(p,"%d",&(u->n));
    		if(u->n>size)
    			u->n=size;
    		for(i=0;i<u->n;i++)
    		{
    			if(feof(p)==0)
    			{
    				fscanf(p,"%d",&tam);
    				u->a[i]=tam;
    				if(chinhphuong(tam)==1)
    				ret++;
    			}
    		}
    			printf("So phan tu la song chinh phuong=%d\n",ret);
    			fclose(p);	
    	}
    }
    void xuatm(mang u)
    {
    	int i;
    	printf("So phan tu cua mang=%d\n",u.n);
    	for(i=0;i<u.n;i++)
    		printf("%d\t",u.a[i]);
    
    }
    void timminm(mang u)
    {
    	int i,j,vt,min;
    	for(i=0;i<u.n;i++)
    		if(chinhphuong(u.a[i]==1))
    		{	
    			vt=i;
    			break;
    		}
    		if(i>u.n)
    			printf("Mang khong co phan tu la so chinh phuong\n");
    		else
    		{
    			for(j=vt+1;j<u.n;j++)
    				if(chinhphuong(u.a[j])==1 && u.a[vt]>u.a[j])
    			min=u.a[j];
    		}
    	
    	printf("so Chinh phuong be nhat mang la %d\n",min);
    		
    
    	
    		
    }
    đã xây dựng hàm kiểm tra chính phương trên rồi

  2. #2
    Ngày gia nhập
    01 2011
    Bài viết
    116

    mình ko kiểm tra mấy hàm trên, nhưng với bài nhỏ này thì liệu có cần 1 struct kiểm mang ko?
    mình ko có ide, nên ko chạy đc, nhưng bạn nên kiểm tra ( tốt nhất là debug lại )lại hàm chinhphuong và hàm nhập.

    Bạn đâu cần phức tạp quá như vậy, lúc đầu cho min =30000, rồi kiểm tra từng số trong mảng có là số chính phương ko? có nhỏ hơn min ko? nếu đúng thì gán min bằng số đó.
    cuối cùng thì xuất ra, nếu min ==30000 thì ko có kq, còn ko thì in số tìm đc ra.
    C++ Code:
    1. while ( you_live) {
    2. if (you_failed) try_again();
    3. else if ( you_won) find_new_challenge();
    4. }
    5. system("DEATH");
    6. return HELL;

  3. #3
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    Trích dẫn Nguyên bản được gửi bởi loveboom3012 Xem bài viết
    Em làm được tới đây thì chịu , mọi người góp ý giúp minh với
    Code:
    void docm(char *tentt,mang *u)
    {
    	FILE *p;
    	int i,tam;
    	int ret=0;
    	p=fopen(tentt,"rt");
    	if(p!=NULL)
    	{
    		fscanf(p,"%d",&(u->n));
    		if(u->n>size)
    			u->n=size;
    		for(i=0;i<u->n;i++)
    		{
    			if(feof(p)==0)
    			{
    				fscanf(p,"%d",&tam);
    				u->a[i]=tam;
    				if(chinhphuong(tam)==1)
    				ret++;
    			}
    		}
    			printf("So phan tu la song chinh phuong=%d\n",ret);
    			fclose(p);	
    	}
    }
    void xuatm(mang u)
    {
    	int i;
    	printf("So phan tu cua mang=%d\n",u.n);
    	for(i=0;i<u.n;i++)
    		printf("%d\t",u.a[i]);
    
    }
    void timminm(mang u)
    {
    	int i,j,vt,min;
    	for(i=0;i<u.n;i++)
    		if(chinhphuong(u.a[i]==1))
    		{	
    			vt=i;
    			break;
    		}
    		if(i>u.n)
    			printf("Mang khong co phan tu la so chinh phuong\n");
    		else
    		{
    			for(j=vt+1;j<u.n;j++)
    				if(chinhphuong(u.a[j])==1 && u.a[vt]>u.a[j])
    			min=u.a[j];
    		}
    	
    	printf("so Chinh phuong be nhat mang la %d\n",min);
    		
    
    	
    		
    }
    đã xây dựng hàm kiểm tra chính phương trên rồi
    mình góp ý đoạn code này bạn thử xem
    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<math.h>
    #include<time.h>
    int check(float n);
    void nhap(float* a,int n);
    void xuat(float* a,int n);
    float timmin(float* a,int n);
    float Min(float* a,int n);
    void main()
    {
    	int n;
    	printf("\n nhap so phan tu: ");
    	scanf("%d",&n);
    	float* a=(float*)malloc(n*sizeof(float));
    	nhap(a,n);
    	xuat(a,n);
    	printf("\n so chinh phuong nho nhat trong mang la %6.1f",timmin(a,n));
        getch();
    }
    int check(float n)
    {
    	int ok=0;
    	if(int(sqrt(n))==sqrt(n))
    		ok=1;
    	return ok;
    }
    void nhap(float* a,int n)
    {
    	int i;
    	for(i=0;i<n;i++)
    	{
    		printf("\n a[%d]: ",i);
    		scanf("%f",&a[i]);
    	}
    }
    void xuat(float* a,int n)
    {
    	int i;
    	for(i=0;i<n;i++)
    		printf("%6.1f",a[i]);
    }
    float timmin(float* a,int n)
    {
    	int i;
    	float* b=(float*)malloc(n*sizeof(float));
    	int t=0;
    	for(i=0;i<n;i++)
    	{
    		if(check(a[i]))
    			b[t++]=a[i];
    	}
    	return Min(b,t);
    }
    float Min(float* a,int n)
    {
    	int i=0;
    	int Mini=a[i];
    	for(i=1;i<n;i++)
    		if(a[i]<Mini)
    			Mini=a[i];
    	return Mini;
    	
    }
    I'll come back

  4. #4
    Ngày gia nhập
    07 2011
    Bài viết
    22

    thank minh đã làm đựoc rồi!!!!!!!!!!

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

  1. Bài tập C cân bằng phuơng trình õy hóa khử
    Gửi bởi demonwalkerx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 02-10-2013, 11:10 PM
  2. tìm số xuât hiện nhiều nhất trong khối lập phuơng
    Gửi bởi huongtan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 08-04-2011, 11:57 AM
  3. Lập dự án, lập phuơng án, quy trình lập dự án 0903034381
    Gửi bởi thngxanhcty trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 20-10-2010, 03:56 PM
  4. cách sử dụng phuơng thức Sort có sẵn trong Arraylist ?? :-s
    Gửi bởi anhnv118 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 07-08-2010, 06:41 AM
  5. giải phuơng trình bậc hai bằng hàm
    Gửi bởi quyen1991 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 12
    Bài viết cuối: 17-04-2010, 07:35 PM

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