Results 1 to 7 of 7

Thread: หาค่าArrayค่ะ....ทำไมมันขึ้นแบบนี้ง่า?

  1. #1
    Junior Member
    Join Date
    Jul 2010
    Posts
    10


    หาค่าArrayค่ะ....ทำไมมันขึ้นแบบนี้ง่า?

    พอดีจะพยายามเขียนโค้ดให้ผลลัพธ์ได้แบบนี้ค่ะ
    [1]x[1]
    [2]x[2]
    [3]x[3]
    [4]x[4]
    [5]x[5]
    [6]x[6]
    [7]x[7]
    [8]x[8]
    [9]x[9]
    [10]x[10]
    Sum of array : 385 (คือเอาผลลัพธ์ทั้งหมดที่xไว้ มาบวกกันน่ะ)

    โค้ดที่เราเขียนเป็นแบบนี้อ่ะ

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

    void main()

    {
    int i,n=10,sum=0;
    int x[10],y[10],z[10];
    for(i=0;i<=n-1;i++)
    {
    x[i],y[i]=i+1;
    }
    for(i=0;i<=n-1;i++)
    {
    printf("x1[%d]x x2[%d]\n",x[i],y[i]);
    }
    for(i=0;i<=n-1;i++)
    {
    z[i]=x[i]*y[i];
    sum=sum+z[i];
    }
    cout<<"Sum of array :"<<sum<<"\n";
    }


    ไหงมันออกมาอีกรูปนี้อ่ะ งง แล้ว-858993460 มันคืออะไรเนี่ยยยย???

    หรือว่าส่งค่าผิด อะไรยังไง ช่วยแนะนำทีค่ะ
    ไม่เคยเขียนC++ค่ะ กะลังฝึกหัดเขียนC++แบบเด็กอนุบาลอยู่ อิอิ ^^"
    Last edited by warlock13; 10-07-2010 at 02:54 PM. Reason: คำนวณผลลัพธ์ผิดค่ะ

  2. #2
    Member Black_Hold's Avatar
    Join Date
    Sep 2009
    Location
    BlackHole
    Posts
    64


    งงเฮะ แต่เห็นอย่างนี้มัน overflow แน่นอนเลย ผมคิดว่าน่าจะเป็นที่คุณเอาค่า address ของหน่วความจำมาคูณกันอ่ะครับ
    ซึ่งผมลองทดสอบโค้ดดู แต่ละครั้งจะได้ค่าทีไม่เหมือนกันเลย [ใช้ Turbo C++ 4.5]
    ถ้าผมเข้าใจผิดก็ขอโทษด้วยคร้าบ
    "โง่" กับ "ไม่รู้" มันต่างกันนะครับ
    อย่าไปว่าเขาเลยถ้าเขาถามอะไรที่เหมือนจะเป็นคำถามโง่ เขาคงไม่รู้
    สิ่งที่คุณรู้เขาอาจรู้แล้วแต่เขาไม่แสดงออก
    แม้เรารู้ในสิ่งที่เขากำลังบอก ฟังไว้เถิด ถือซะว่าเป็นการทบทวนและกัน

  3. #3
    Junior Member
    Join Date
    Sep 2009
    Location
    Bangkok
    Posts
    5


    Wink

    Quote Originally Posted by warlock13 View Post
    พอดีจะพยายามเขียนโค้ดให้ผลลัพธ์ได้แบบนี้ค่ะ
    [1]x[1]
    [2]x[2]
    [3]x[3]
    [4]x[4]
    [5]x[5]
    [6]x[6]
    [7]x[7]
    [8]x[8]
    [9]x[9]
    [10]x[10]
    Sum of array : 377 (คือเอาผลลัพธ์ทั้งหมดที่xไว้ มาบวกกันน่ะ)

    โค้ดที่เราเขียนเป็นแบบนี้อ่ะ

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

    void main()

    {
    int i,n=10,sum=0;
    int x[10],y[10],z[10];
    for(i=0;i<=n-1;i++)
    {
    x[i],y[i]=i+1;
    }
    for(i=0;i<=n-1;i++)
    {
    printf("x1[%d]x x2[%d]\n",x[i],y[i]);
    }
    for(i=0;i<=n-1;i++)
    {
    z[i]=x[i]*y[i];
    sum=sum+z[i];
    }
    cout<<"Sum of array :"<<sum<<"\n";
    }


    ไหงมันออกมาอีกรูปนี้อ่ะ งง แล้ว-858993460 มันคืออะไรเนี่ยยยย???

    หรือว่าส่งค่าผิด อะไรยังไง ช่วยแนะนำทีค่ะ
    ไม่เคยเขียนC++ค่ะ กะลังฝึกหัดเขียนC++แบบเด็กอนุบาลอยู่ อิอิ ^^"
    อ่า เท่าที่ดู จุดที่ผิดพลาดน่าจะอยู่ที่

    for(i=0;i<=n-1;i++)
    {
    x[i],y[i]=i+1;
    }

    ลูปแรกเลยนะครับ จากที่จะทำการ assign ค่าให้ ตัวแปร มันจะทำการ ให้ค่าแค่ array y[i] นะครับ
    ยังไงลอง แบบนี้ดูนะ x[i]=y[i]=i+1;

    และก็ ทำไมจะเขียน C++ มี การใช้ ไวยกรณ์ของ C หลงมาแจมด้วยล่ะครับ อิอิ
    ผสมกันเลย ทั้ง printf <- ของ C และ cout ของ C++

    สู้เค้าครับ

  4. #4
    Senior Member retool2's Avatar
    Join Date
    Aug 2008
    Location
    Under Relocation
    Posts
    178


    ลองเปลี่ยนจาก x[i],y[i]=i+1; เป็นแบบปกติ
    x[i]=i+1;
    y[i]=i+1;
    ดูนะครับ

    ถ้าเป็นผมจะเขียนประมาณนี้ครับ
    for(i=1;i<11;i++){
    sum += i*i;
    }
    print(sum)

    syntax ผมมั่วนะครับติด php

  5. #5
    Junior Member
    Join Date
    Jul 2010
    Posts
    10


    ลองแก้โค้ดอย่างที่ทั้ง2ท่านแนะนำ คือแก้ให้เป็น
    x[i]=i+1;
    y[i]=i+1;
    หรือ แบบนี้ x[i]=y[i]=i+1;

    ผลคือไม่overflowแล้วค่ะ หน้าตาดูดี...ออกมาเป็นงี้ละ
    [1]x[1]
    [2]x[2]
    [3]x[3]
    [4]x[4]
    [5]x[5]
    [6]x[6]
    [7]x[7]
    [8]x[8]
    [9]x[9]
    [10]x[10]
    Sum of array : 285
    แต่ผลsum ยังผิดอยู่ึ้อ่ะค่ะ มันต้องเป็น 385 (มันหายไป 100)

    ลองแก้ลูป for แบบที่ท่านretool2 แนะนำ กลายเป็นงี้
    [2]x[2]
    [3]x[3]
    [4]x[4]
    [5]x[5]
    [6]x[6]
    [7]x[7]
    [8]x[8]
    [9]x[9]
    [10]x[10]
    [11]x[11]
    Sum of array : 396
    ผล sum ก้อยังออกมาผิดอยู่ดี เป็นที่อะไรหว่า งงค่ะ T_T"

    แล้วที่ว่า assign ค่าให้ y[i] อย่างเดียว คือมันเอาค่าจาก y มาคำนวณอย่างเดียวเหรอคะ?

  6. #6
    Member Black_Hold's Avatar
    Join Date
    Sep 2009
    Location
    BlackHole
    Posts
    64


    RE:........

    ผมเขียนอย่างนี้ ผลออกมาถูกต้องครับ
    Code:
    #include<iostream.h>
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    int i,n=10,sum=0;
    int x[10],y[10],z[10];
    for(i=0;i<=10;i++) //แก้ตรงนี้จาก n-1
    {
    
    x[i]=y[i]=i+1; //ใช้ x[i]=i+1;y[i]=i+1; ก็ได้
    }
    for(i=0;i<=n-1;i++)
    {
    printf("x1[%d]x x2[%d]\n",x[i],y[i]);
    }
    for(i=0;i<=9;i++)
    {
    z[i]=x[i]*y[i];
    sum=sum+z[i];
    }
    cout<<"Sum of array :"<<sum<<"\n";
    }
    แล้วที่ถาม คือตรงนี้ใช่มั้ยครับ
    x[i]=y[i]=i+1;
    ถ้าใช่ คือจากโค้ด x[i] มันก็มีค่าเท่ากับ i+1 เขียนได้อีกแบบก็คือ x[i]=i+1;y[i]=i+1;
    "โง่" กับ "ไม่รู้" มันต่างกันนะครับ
    อย่าไปว่าเขาเลยถ้าเขาถามอะไรที่เหมือนจะเป็นคำถามโง่ เขาคงไม่รู้
    สิ่งที่คุณรู้เขาอาจรู้แล้วแต่เขาไม่แสดงออก
    แม้เรารู้ในสิ่งที่เขากำลังบอก ฟังไว้เถิด ถือซะว่าเป็นการทบทวนและกัน

  7. #7
    Senior Member retool2's Avatar
    Join Date
    Aug 2008
    Location
    Under Relocation
    Posts
    178


    ที่ผลออกมาเป็น 2-11 นั้นแสดงว่าตัวแปรใน loop ผิดครับ ถ้าเป็นไปได้อยากได้ code ด้วยครับ

    เขียน code ประมาณนี้น่าจะได้ครับ
    for(i=1;i<=10;i++){
    sum += i*i;
    printf("x1[%d]x x2[%d]\n",i,i);
    }
    cout<<"Sum of array :"<<sum<<"\n";

    การที่ assign ค่าเดียวเพราะว่าตัวที่คูณกันมันเท่ากันครับถ้า x y เพิ่มไม่เท่ากันถึงควรจะใช้สองตัวแปร พอเขียนโปรแกรมมากๆแล้วจะรู้ว่ายิ่ง code ยิ่งสั้นยิ่งดีครับ อ่านง่านใช้ความจะน้อย

Members who have read this thread : 0

Actions : (View-Readers)

There are no names to display.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •