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

Đề tài: xuất các số nguyên trong mảng

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    1

    Thumbs down xuất các số nguyên trong mảng

    mình có một bài tập này mà mình làm mãi mà nó không chịu xuất ra các số nguyên trong mảng. pro nào có thể chỉ cho minh đc ko. thanks
    Code:
    #include<conio.h>
    #include<stdio.h>
    #include<math.h>
    void nhap(int a[100], int &n)
    {
    	do
    	{
    		printf("nhap n= ");
    		scanf("%d",&n);
    	}
    	while(n<0||n>100);
    	for(int i=0;i<n;i++)
    	{
    		printf("a[%d]=",i);
    		scanf("%d",&a[i]);
    	}
    }
    void xuat(int a[100], int n)
    {
    	printf("Mang gom cac phan tu: ");
    	for (int i=0;i<n; i++)
    		printf("%3d",a[i]);
    }
    void max(int a[100],int n)
    {
    	int max=a[0];
    	for (int i=1;i<n;i++)
    		if(max<a[i]) max=a[i];
    	printf("\n--->so lon nhat trong mang la: %d",max);
    }
    void min(int a[100], int n)
    {
    	int min=a[0];
    	for (int i=1;i<n;i++)
    		if(min>a[i]) min=a[i];
    	printf("\n--->so nho nhat trong mang la: %d",min);
    }
    int ktnt(int n)
    {
    	int dem=0;
    	printf("\n---------------------kiem tra so nguyen to--------------------");
    	printf("\nnhap so n=");
    	scanf("%d",&n);
    		for(int i=1;i<=n;i++)
    			if(n%i==0)  dem++;
    		if(dem==2) return 1;
    		return 0;
    }
    void dem(int a[], int n)
    {
    	int x,dem=0;
    	printf("\nTim so phan tu giong x=");
    	scanf("%d",&x);
    	for (int i=0;i<n;i++)
    		if(x==a[i]) dem++;
    	printf("--->mang co %d phan tu giong x",dem);
    }
    void xuatnt(int a[], int n)
    {
    	int dem=0;
    	printf("\nmang gom cac so nguyen to: ");
    	for(int i=0;i<n;i++)
    		if(a[i]%i==0) dem++;
    	if(dem==2) printf("%3d",a[i]);
    }
    void main()
    {
    	clrscr();
    	int n,a[100];
    	nhap(a,n);
    	xuat(a,n);
    	max(a,n);
    	min(a,n);
    	if(ktnt(n)==1) printf("n la so nt");
    	else printf("n ko la so nt");
    	dem(a,n);
    	getch();
    }

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    169

    Mình chạy thấy đâu bị gì đâu ???!

  3. #3
    Ngày gia nhập
    02 2007
    Nơi ở
    TP.HCM - dưới cầu SG
    Bài viết
    12

    Bài bạn làm hơi rối, mình chỉnh lại một chút thôi.
    Code:
    int ktnt(int n)
    {
    	int dem=0;
    	printf("\n-------------kiem tra so nguyen to--------------------");
    	printf("\nnhap so n=");
    	scanf("%d",&n);
    		for(int i=1;i<=n;i++)
    			if(n%i==0)  dem++;
    		if(dem==2) return 1;
    		return 0;
    }
    Mục tiêu của hàm ktnt() nảy là: truyền vào cho hàm 1 số nguyên n, nếu n là nguyên tố thì trả về 1, nếu ko nguyên tố thì trả về 0. Như vậy, trong hàm này bạn ko cần phải nhập n thêm 1 lần nữa. Mình viết gọn lại theo ý bạn:
    Code:
    int ktnt(int n)
    {
    	int dem=0;
    	printf("\n-------------kiem tra so nguyen to--------------------");
    	for(int i=1;i<=n;i++)
    		if(n%i==0)  dem++;
    	if(dem==2) return 1;
    	return 0;
    }
    Tương tự như vậy, hàm void xuatnt(int a[], int n), bạn tận dụng ngay hàm ktnt() bên trên để chương trình được đơn giản hơn như sau:
    Code:
    void xuatnt(int a[], int n)
    {
    	int dem=0;
    	int i;
    	printf("\nmang gom cac so nguyen to: ");
    	for( i=0;i<n;i++)
    		if(ktnt(a[i]) ==1 ) printf("%3d",a[i]);
    }
    Thân!
    Nơi nào khiến anh dừng bước, nơi đó có em.

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

    bác whoru cho em hỏi ở đoạn code trên nếu dùng a[i] thay n
    Code:
    if(n%i==0)  dem++;
    thì có được không ạ.

  5. #5
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Bạn ơi không được đâu bạn ạ, bởi vì đó là 1 hàm riêng với đối số là số nguyên n bạn ạ. Hàm là phải dùng kết hợp với đối số chứ.

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

    Mặc định xuất các số nguyên trong mảng

    Bác kiểm tra hộ em đoạn này
    Code:
    void ktnt()
    {
    	int dem=0;
    	printf("\nmang gom cac so nguyen to: ");
    	for( i=1;i<n;i++)
    	{	if(n%i==0)
               dem++;
    	     if(dem==2) 
              printf("%3d",a[i]);
         }
    }
    em hiểu số nguyên tố là chỉ chia hết được 1 và chính nó, vậy mà đoạn trên có khi nó ra cả 6,8...em pó tay. Em ko thích dùng return vì chưa hiểu hết nên dùng if các bác thông cảm cho em.

    Em chép lại cả bài cho các bác tiện kiểm tra

    Code:
    #include <stdio.h>
    #include <conio.h>
    
    int n,i,tg,j,a[100];
    
    void nhapn()
    { printf("\n  n:="); scanf("%d",&n); 
    }
    
    void nhapmang()
    { for(i=0;i<n;i++)
        { printf("\n a[%d]=",i); scanf("%d",&a[i]); }
    }
    
    void inmang()
    { for(i=0;i<n;i++)
      printf("%5d",a[i]);
    }
    
    void tong()
    { int s=0,i;
       for(i=0;i<n;i++)
        if((a[i]%2!=0)&&(i%3==0))
         s=s+a[i];
          printf("\n tong so le o vi tri chia het cho 3 la=%d",s);
    }
    
    void tongmu()
    { long s=1;
       for(i=0;i<n;i++)
        s=s+(pow(a[i],i));
         printf("\n tong mu s=%d",s);
    }
    
    void ktnt()
    {
    	int dem=0;
    	printf("\nmang gom cac so nguyen to: ");
    	for( i=1;i<n;i++)
    	{	if(n%i==0)
               dem++;
    	     if(dem==2) 
              printf("%3d",a[i]);
         }
    }
    
    
    
    
    
    
    
    
    
    void main()
    { nhapn();
      nhapmang();
      printf("\n in mang ");
      inmang();
      tong();
      tongmu();
      ktnt();
      getch();
    }

  7. #7
    Ngày gia nhập
    06 2008
    Bài viết
    51

    em chép 2 đoạn code của bác whoru vào bài nhưng em nhập mảng thì số nguyên tố và mảng nhập giống hệt nhau, ko biết vì sao ạ?

    Code:
    #include <stdio.h>
    #include <conio.h>
    
    int n,i,tg,j,a[100];
    
    void nhapn()
    { printf("\n  n:="); scanf("%d",&n); 
    }
    
    void nhapmang()
    { for(i=0;i<n;i++)
        { printf("\n a[%d]=",i); scanf("%d",&a[i]); }
    }
    
    void inmang()
    { for(i=0;i<n;i++)
      printf("%5d",a[i]);
    }
    
    void tong()
    { int s=0,i;
       for(i=0;i<n;i++)
        if((a[i]%2!=0)&&(i%3==0))
         s=s+a[i];
          printf("\n tong so le o vi tri chia het cho 3 la=%d",s);
    }
    
    void tongmu()
    { long s=1;
       for(i=0;i<n;i++)
        s=s+(pow(a[i],i));
         printf("\n tong mu s=%d",s);
    }
    
    int ktnt()
    {
    	int dem=0;
    
    	for( i=1;i<=n;i++)
    		if(n%i==0)  dem++;
    	if(dem==2) return 1;
    	return 0;
    
    }
    
    void xuatnt()
    {
    	int dem=0;
    	int i;
    	printf("\n mang gom cac so nguyen to: ");
    	for( i=0;i<n;i++)
    		if(ktnt(a[i]) ==1 ) printf("%3d",a[i]);
    }
    
    
    
    
    
    
    
    void main()
    { nhapn();
      nhapmang();
      printf("\n in mang ");
      inmang();
      tong();
      tongmu();
      ktnt();
      xuatnt();
      getch();
    }

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

  1. Xuất số nguyên tố trong mảng 2 chiều
    Gửi bởi hoang minh nguyen 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: 04-11-2013, 01:21 PM
  2. Mảng trên C Có 2 số nguyên nhập vào mảng tìm số lần xuất hiện trong mảng
    Gửi bởi o0mickey0o trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 7
    Bài viết cuối: 14-11-2012, 05:02 PM
  3. Lỗi khi xuất giá trị = 0 kiểu số nguyên trong bài tập min max?
    Gửi bởi vophuvinh trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 19-04-2012, 06:02 PM
  4. Bài tập C Đếm số lần xuất hiện của số nguyên trong mảng.
    Gửi bởi navyblue 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: 10-05-2011, 01:16 PM
  5. Bài tập C++ kiểm tra và xuất số nguyên tố trong ma trận vuông
    Gửi bởi tranbacongbee trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 01-04-2011, 09:36 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