giúp tui hoàn tất bài này cái(mãng)

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi runandaide, 13/11/06.

  1. runandaide

    runandaide Mr & Ms Pac-Man

    Tham gia ngày:
    12/1/05
    Bài viết:
    103
    tui chĩ làm 5 phần tử thôi
    đề bài:khai báo 1 mảng 1 chiều có tối đa 100 phần tử.mảng có kiểu dữ liệu là số nguyên.
    nhập số phần tử của mảng(nhỏ hơn 100)
    nhập giá trị cho từng mảng
    in mảng
    tính tích các phần tử của mảng,in kết quả
    in ra các phần tử chia hết cho 5
    nhập k,tìm xem trong mảng có phần tử nào có giá trị k không.Nếu có in ra phần tử đó,nếu không thông báo "trong mảng không có giá trị k"

    tui làm sap xong rồi mà bí ở đoạn nếu kô thì in ra "trong mảng kô có giá trị k"
    ai làm ơn giúp tui bài này cái tiện thể sửa cái tích thành tich nhân số lớn luôn





    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    int a[5],sophantu,i,k;
    long int tich=1;
    clrscr();
    do{
    printf("\nmoi ban nhap so phan tu:");
    scanf("%d",&sophantu);
    }while(sophantu>100);
    for(i=0;i<5;i++)
    { printf("\na[%d]=",i);
    scanf("%d",&a);}
    printf("\n nhung gia tri co trong mang:");
    for(i=0;i<5;i++)
    printf("%4d",a);
    printf("\ntich cac phan tu cua mang:");
    for(i=0;i<5;i++)
    tich=tich*a;
    printf("\ntich=%d",tich);
    printf("\nphan tu chia het cho 5:");
    for(i=0;i<5;i++)
    if(a%5==0)
    printf("%4d",a);
    printf("\nmoi ban nhap so nguyen k:");
    scanf("%d",&k);
    for(i=0;i<5;i++)
    if(k==a)
    printf("\ntrong mang co gia tri trung k: a[%d]=%d",a,k) ;}
    else(k!=a)
    printf("\nko co gia tri k trung trong mang");
    getch();
    }
     
  2. ZeroCrazy

    ZeroCrazy T.E.T.Я.I.S

    Tham gia ngày:
    8/4/06
    Bài viết:
    516
    Nơi ở:
    hỏi làm chi ?
    Làm thế này:
    for(i=0;i<5;i++)
    {
    if(k==a)
    {
    printf("\ntrong mang co gia tri trung k: a[%d]=%d",a,k) ;
    break;
    }
    }
    if(i >= 5) printf("\nko co gia tri k trung trong mang");
     
  3. red_strike

    red_strike C O N T R A

    Tham gia ngày:
    13/10/04
    Bài viết:
    1,722
    Nơi ở:
    Onikage Clone :)
    Lúc post các đoạn code các bạn thử nhét vào thẻ CODE xem sao chứ thế này thì khó xem quá !
     
  4. ZeroCrazy

    ZeroCrazy T.E.T.Я.I.S

    Tham gia ngày:
    8/4/06
    Bài viết:
    516
    Nơi ở:
    hỏi làm chi ?
    Tích nhân số lớn là gì vậy bạn.
     
  5. runandaide

    runandaide Mr & Ms Pac-Man

    Tham gia ngày:
    12/1/05
    Bài viết:
    103
    Mã:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    int a[5],sophantu,i,k;
    long int tich=1;
    clrscr();
    do{
    printf("\nmoi ban nhap so phan tu:");
    scanf("%d",&sophantu);
    }while(sophantu>100);
    for(i=0;i<5;i++)
    { printf("\na[%d]=",i);
    scanf("%d",&a[i]);}
    printf("\n nhung gia tri co trong mang:");
    for(i=0;i<5;i++)
    printf("%4d",a[i]);
    printf("\ntich cac phan tu cua mang:");
    for(i=0;i<5;i++)
    tich=tich*a[i];
    printf("\ntich=%d",tich);
    printf("\nphan tu chia het cho 5:");
    for(i=0;i<5;i++)
    if(a[i]%5==0)
    printf("%4d",a[i]);
    printf("\nmoi ban nhap so nguyen k:");
    scanf("%d",&k);
    for(i=0;i<5;i++)
    {if(k==a[i])
    {printf("\ntrong mang co gia tri trung k: a[%d]=%d",a[i],k) ;break;}}
    if(k!=a[i])
    printf("\nko co gia tri k trung trong mang");
    getch();
    }
    huhu
    chay không đúng theo i như đề bài bác à
    nếu a[0]=1,a[1]=4,a[2]=5,a[3]=15,a[4]=5
    nhập k=15 thì nó in kết quả là a[15]=15 chứ ko phải là a[3]=15 ko nhu đề bài có bác nào giúp tui giải lai ko
     
  6. ZeroCrazy

    ZeroCrazy T.E.T.Я.I.S

    Tham gia ngày:
    8/4/06
    Bài viết:
    516
    Nơi ở:
    hỏi làm chi ?

    Ặc, cái này là tui copy từ bài của bạn ra đấy, chỗ %d thứ nhất được điền vào bằng giá trị của a đáng lẽ là vị trí tìm thấy tức là i.


    Sửa lại k != a thành i >= 5 ngược lại với i < 5. Nghĩa là nếu i >= 5 đúng suy ra vòng lặp trên đã chạy hết mà không tìm ra giá trị trong mảng.
     
  7. red_strike

    red_strike C O N T R A

    Tham gia ngày:
    13/10/04
    Bài viết:
    1,722
    Nơi ở:
    Onikage Clone :)
    Bài bài giải ở trên câu lệnh if ko được hay cho lắm và sai vài chỗ !
    Nên kết hợp if - else if - else
    Như vậy sẽ hay hơn !
    Tui code lại cho bạn đoạn khác chỗ tìm k đây :


    * Test thử đi, theo tớ thì cái này đúng hơn - nếu lỗi chỗ thì post lên đây nhá vì lâu ngày hông code C roài !
     
  8. ZeroCrazy

    ZeroCrazy T.E.T.Я.I.S

    Tham gia ngày:
    8/4/06
    Bài viết:
    516
    Nơi ở:
    hỏi làm chi ?
    Ừ cách của Red strike đúng đấy, cách tui chỉ dùng để kiểm tra giá trị có hay không chứ không liệt kê các vị trí tìm thấy trong mảng.
     
  9. red_strike

    red_strike C O N T R A

    Tham gia ngày:
    13/10/04
    Bài viết:
    1,722
    Nơi ở:
    Onikage Clone :)
    Vì khi nhập vào thì có thể có hơn 1 số có giá trị = giá trị của k nên phải làm như vậy mới cầu toàn đuợc !

    Còn sau khi kết thúc vòng lặp mà đếm ko có số nào = giá trị của k mới thật sự kết luận là: " Ko có mảng nào có giá trị = k "
     
  10. runandaide

    runandaide Mr & Ms Pac-Man

    Tham gia ngày:
    12/1/05
    Bài viết:
    103
    cach moi người cũng hay nhưng tui đã hoàn tất bài rồi
    Mã:
    for(i=0;i<5;i++)
    {
    if(k==a[i])
    {
    printf("\ntrong mang co gia tri trung k: a[%d]=%d",i,a[i]) ;
    break;
    }
    }
    if(i >= 5) printf("\nko co gia tri k trung trong mang");
    bài hoàn chỉnh
    Mã:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    	int a[100],sophantu,i,k;
    	long int tich=1;
            clrscr();
            do{
    	printf("\nmoi ban nhap so phan tu:");
    	scanf("%d",&sophantu);
    	}while(sophantu>100);
    	for(i=0;i<5;i++)
    	{       printf("\na[%d]=",i);
    		scanf("%d",&a[i]);}
    	printf("\n nhung gia tri co trong mang:");
    	for(i=0;i<5;i++)
    		printf("%4d",a[i]);
            printf("\ntich cac phan tu cua mang:");
            for(i=0;i<5;i++)
    		tich=tich*a[i];
    		printf("\ntich=%d",tich);
            	printf("\nphan tu chia het cho 5:");
            for(i=0;i<5;i++)
            	if(a[i]%5==0)
    		printf("%4d",a[i]);
    	printf("\nmoi ban nhap so nguyen k:");
    	scanf("%d",&k);
    	for(i=0;i<5;i++)
    		{if(k==a[i])
    			{printf("\ntrong mang co gia tri trung k: a[%d]=%d",i,a[i]) ; 
    			break;} }
    		{if(k!=a[i])//co the dung (i>=5)
                           	printf("\nko co gia tri k trung trong mang");} 
    
    	
    	       	
           
    getch();     	
            
    
    }
    moi người xem có đúng ko tui chay dc chua tìm ra lỗi sai
     
  11. red_strike

    red_strike C O N T R A

    Tham gia ngày:
    13/10/04
    Bài viết:
    1,722
    Nơi ở:
    Onikage Clone :)

    - BREAK : bạn dùng như vầy thì khi gặp 1 mảng có giá trị = k thì nó sẽ in ra và thoát khỏi vòng lặp => cho hỏi nếu trong mảng đó có >2 mảng có giá trị = k ?
    - Đoạn 2 viết bị sai lun lẫn thuật toán lẫn đoạn code => đoạn if đó đã thoát ra khỏi vòng lặp => a đâu mà cho xét ? --> nếu có chạy được cũng in ra 1 loạt các thứ ko cần thiết !
    - Nếu k ko bằng a thì in ra cái câu đó thì sai hoàn toàn lun !
    - Nếu k >= a thì in ra cái đó cũng ko được !
    - BẠn từ lò nào ra vậy ? viết code khó đọc quá +__+ !
    - Ngay từ đoạn đầu bạn code đã ko hợp lý roài ! => nên tự tìm lỗi sai !

    Thử ghép đoạn code của tui vào xem sao ?
    Mà theo tuio biết thì bài của cậu hiện giờ vẫn chưa hoàn tất đâu ko đơn giản như vầy đâu !

    Túi ni về code cho bạn full đoạn đó vừa giúp bạn vừa ôn lại kiến thức !
     
  12. runandaide

    runandaide Mr & Ms Pac-Man

    Tham gia ngày:
    12/1/05
    Bài viết:
    103
    ờ đúng là cách của bác đúng hơn vì tưởng chạy dc rồi nen ko thữ cách của bác giờ xem lai mới thấy bài tui thíu tùm lum lenh if %5 nếu ko có phần tử chia hết cho 5 chua in ko có chán bác giúp tui hoàn tất lại nhá
     
  13. red_strike

    red_strike C O N T R A

    Tham gia ngày:
    13/10/04
    Bài viết:
    1,722
    Nơi ở:
    Onikage Clone :)
    Hôm qua, nhác ra đường quá nên tớ ở nhà cả ngày, bởi thế mà tớ ko post được !

    Lần sau khi post các đoạn code các bạn nên dùng TAG
    PHP:
     sẽ giữ nguyên được các khoảng trắng ! (Mới biết)[/COLOR][/B]

    [
    PHP]#include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    void main()
    {
            
    char quit;              
        do
        {
            
    int mang[100], sophantuk;
            
    long int tich=1;
            
    int idudem1=0dem2=0;
            
    clrscr();

            
    printf("Nhap n so phan tu cua mang (n<100): ");
            
    scanf("%d",&sophantu);

            
    printf("\nNhap gia tri cho cac phan tu\n");
            for(
    i=0;i<sophantu;i++)
            {
                
    printf("mang[%d] = ",i);
                
    scanf("%d",&mang[i]);
            }

            
    printf("\nIn cac phan tu trong mang");
            for(
    i=0;i<sophantu;i++)
            {
                
    printf("\nmang[%d] = %d",i,mang[i]);
            }

            for(
    i=0;i<sophantu;i++)
            {
                   
    tich = (long int)tich mang[i];
            }
            
    printf("\n\nTich = %ld\n",tich);

            for(
    i=0;i<sophantu;i++)
            {
                
    du mang[i]%5;
                if(
    du==0)
                {
                    
    printf("\nmang[%d] chia het cho 5",i);
                    
    dem1++;
                }
            }
            if(
    dem1==0)
                
    printf("\nKo co phan tu nao chia het cho 5");

            
    printf("\n\nNhap so k co gia tri can tim: ");
            
    scanf("%d",&k);
            for(
    i=0;i<sophantu;i++)
            {
                if(
    mang[i]==k)
                {
                    
    printf("\nmang[%d] co gia tri bang k",i);
                    
    dem2++;
                }
            }
            if(
    dem2==0)
                
    printf("\nKhong co phan tu nao co gia tri bang k");

            
    printf("\n\nBan co muon thoat (Y/N): ");
            
    quit getche();
            if(
    quit=='Y' || quit=='y')
                            exit(
    0);
        } while (
    quit=='N' || quit=='n');

            
    getch();
    }
    - Tớ đã fix đi fix lại khá nhiều lần nhưng chắc sẽ ko tránh khỏi sai sót nên có gì đóng góp cho tớ biết mà sửa!
     
  14. runandaide

    runandaide Mr & Ms Pac-Man

    Tham gia ngày:
    12/1/05
    Bài viết:
    103
    oh my god nói gì đây nhỉ no.1,mới đọc thôi đã thấy hay mới chạy bằng tay thử chưa thấy sai về nhà chạy xem lai .bác học ở đâu mà giỏi thế
     
  15. red_strike

    red_strike C O N T R A

    Tham gia ngày:
    13/10/04
    Bài viết:
    1,722
    Nơi ở:
    Onikage Clone :)
    - Cậu download cái IDE này về mà code, tớ copy từ chỗ tớ học ! Hum trước, up lên cho ai đó mà hắn đi mất...
    - Về nhà paste vào ổ C cho nó load lẹ !

    - Tớ chỉ mới hoàn thành phần căn bản C trên Aptech (có thể còn chưa làm được hết bài tập), nên có bài gì cậu post lên cho tớ giải tiện thể ôn lại kẻo quên :D
     
  16. runandaide

    runandaide Mr & Ms Pac-Man

    Tham gia ngày:
    12/1/05
    Bài viết:
    103
    oh my god noi sao nua~ nhĩ cùng lò aptech hay nhĩ mình dang học C can ban sắp xong rồi mà bài tập còn cả đống chán qá.hình như cùng thành phố rồi kô bít bác hoc KTV nhiu nhĩ
     

Chia sẻ trang này