Hỏi & đáp lập trình

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi canh en buon, 23/5/07.

  1. ricky_martin

    ricky_martin Lão Làng Lão Làng GVN

    Tham gia ngày:
    30/12/05
    Bài viết:
    453
    hehe
    Em hỏi mà quên mất là nên thử lại rồi hãy hỏi.
    Hình như anh Greek nói sai rồi.
    Em mới thử lại, khi mà mình thay thứ tự trên ,ở cái chỗ mà khai hàm hay gọi hàm gì cũng vậy,thì nó cũng ko ảnh hưởng gì tới chương trình hết.
    Em thử thì em thấy vậy đó.
    Còn anh DHBL nói cao siu quá ko hỉu nỗi,hic.
     
  2. The Greek Warrior

    The Greek Warrior T.E.T.Я.I.S

    Tham gia ngày:
    28/4/02
    Bài viết:
    561
    Nơi ở:
    Caldeum
    Uh, tất nhiên là kết quả không thay đổi rồi bạn, vì có thay đổi thứ tự 3 số thế nào hàm MAX cũng sẽ tìm ra số lớn nhất(nếu ko thì giải thuật sai à?) Còn nếu bạn muốn kiểm tra thứ tự nó đã thay đổi làm sao, ảnh hưởng thế nào, thì thêm dòng code này vào ::eyebrow:
    Mã:
    #include <stdio.h>
    #include <conio.h>
    float max3s (float a,float b,float c);
    main()
    {
          float x,y,z;
          int o;
          tt : printf ("nhap vao 3 so :");
          scanf ("%f%f%f",&x,&y,&z);
    [COLOR="Red"][B]      printf ("\n x=%f - y=%f - z=%f",x,y,z);[/B][/COLOR]
          printf ("\nso lon nhat la %f",max3s(x,y,z));
          printf ("\nco tip tuc ko c-k");
          
          if (o=='c') goto tt;
          else getch();
          }
          float max3s (float a,float b,float c)
          {
                float max;
    [COLOR="Red"][B]            printf ("\n a=%f - b=%f - c=%f",a,b,c);[/B][/COLOR]
                max=a;
                if (max<b) max=b;
                if (max<c) max=c;
                return(max);
                }
     
  3. ricky_martin

    ricky_martin Lão Làng Lão Làng GVN

    Tham gia ngày:
    30/12/05
    Bài viết:
    453
    uhm
    Thay đổi vị trí đó thì kết quả cũng thay đổi
    Nhưng ý em chỉ hỏi là làm sao mà máy biết đc khi tìm đc 3 số lớn nhất trong 3 số a,b,c từ hàm max3s thì đem qua hàm main nó lại hỉu là x,y hay z.
    Mà em khó hỉu vậy thôi chứ chắc mấy bài sau cứ làm tương tự như vậy là đc hỉ ?
     
  4. The Greek Warrior

    The Greek Warrior T.E.T.Я.I.S

    Tham gia ngày:
    28/4/02
    Bài viết:
    561
    Nơi ở:
    Caldeum
    uhm... thật ra giải thích cặn kẽ cho bạn hiểu thì cũng lôi thôi lắm, bạn cứ hiểu nôm na là nó tạo ra 1 bản sao của x,y,z bằng a,b,c khi truyền đủ số lượng và tương tích kiểu dữ liệu, những lần tới cứ làm thế kg vấn đề gì!!!
    ---Còn việc làm sao mà máy biết được thì cấu trúc nền bên dưới nó làm trên nguyên tắc mà DHBL đã giải thích rồi đấy? Có cần tôi nói lại kg ?/:)
     
  5. haiduong87

    haiduong87 Knee before Eden Lord Lão Làng GVN

    Tham gia ngày:
    20/5/04
    Bài viết:
    24,517
    Nơi ở:
    TP HCM
    Nói vậy chắc hiểu đây.
    Hàm main() sẽ gọi hàm max3s() bên trong nó. Và để hàm max3s() chạy ra kết quả thì cần truyền vào 3 số kiểu float, ở đây là giá trị của các biến x, y, z. Khi viết:
    Mã:
    main()
    {
    ...
    max3s(x,y,z)
    }
    thì nên hiểu là hàm main() sẽ truyền giá trị của 3 biến này vào. Sau đó hàm max3s() sẽ tính toán với 3 giá trị này. Ở đây, hàm max3s() sẽ có tự tạo 3 biến cục bộ (chỉ có giá trị bên trong hàm max3s()) a, b, c theo thứ tự các giá trị nhập vào để tính toán. Việc a, b hay c lớn nhất là không quan trọng, bởi lẽ cái in ra cũng chỉ là giá trị lớn nhất. Tên biến có thay đổi thứ tự cũng không thành vấn đề.

    Và mới sực nhớ ra, bạn nên hiểu đoạn code:
    Mã:
    max3s(float a, float b, float c)
    {...}
    là hàm max3s() khi chạy cần 3 tham số kiểu float để chạy và tính toán, và khi muốn dùng như vậy thi phải có vùng nhớ để lưu 3 tham số này, biến a, b, c được tạo ra chỉ có mục đích như vậy. Khi chạy xong hàm sẽ trả về giá trị lớn nhất trong 3 giá trị đưa vào.
     
  6. ricky_martin

    ricky_martin Lão Làng Lão Làng GVN

    Tham gia ngày:
    30/12/05
    Bài viết:
    453
    Cám ơn mấy anh nhìu nhé.
    Trên lớp thì khó hỏi đc thầy.
    Về nhà lại chẳng có bạn đê hỏi.
    "Có lẽ" em đã hỉu rồi ::(
     
  7. KENSAMA

    KENSAMA Mr & Ms Pac-Man

    Tham gia ngày:
    28/2/06
    Bài viết:
    172
    Câu thứ 1:
    import java.lang.System;

    class X {
    attribute a: Number;
    attribute b: Number;
    attribute c: Number;
    }

    attribute X.a = 10;
    attribute X.b = bind a + 10;
    attribute X.c = bind lazy b + 10;


    var x = new X();
    System.out.println(x.a); // in ra là 10
    System.out.println(x.b); // in ra là 20
    System.out.println(x.c); // in ra là 30
    x.a = 5;
    System.out.println(x.a); // in ra là 5
    System.out.println(x.b); // in ra là 15
    System.out.println(x.c); // in ra là 25
    Cho hỏi việc sử dụng toán tử "bind" trong câu lệnh trên có j` khác so với hàm gán thường không?Và "bind" và "bind lazy" trong trường hợp trên có nghĩa là sao?
    Câu thứ 2:

    class Person {
    attribute name: String;
    attribute parent: Person inverse Person.children;
    attribute children: Person* inverse Person.parent
    }
    Cho hỏi ý nghĩa các câu lệnh khai báo lớp trên.Mệnh đề inverse để làm gì?
    Cám ơn nhiều :D
     
  8. DHBL

    DHBL Youtube Master Race

    Tham gia ngày:
    7/11/08
    Bài viết:
    58
    Câu 1:
    1>bind có tác dụng như vầy tự động cập nhật cập nhật dữ liệu của thuộc tính b theo dữ liệu của thuộc tính a.
    2>bindlazy là cập nhật dữ liệu thuộc tính c thông qua việc cập nhật dữ liệu của thuộc tính b theo dữ liệu của thuộc tính a.
    Ví dụ khi bạn tạo một lớp NhânViên
    Mã:
    class NhanVien
    {
    	attribute nlv:int ;// năm làm việc
    	attribute luong:int;
    }
    
    Theo lẽ thường thì nlv sẽ ành hưởng đến tiền lương hai thuộc tính này có mồi quan hệ qua lại với nhau, nếu số năm làm việc càng nhiều thì lương càng nhiều. Xét cái công thức tính lương sau: Lương=1tr+ 100 *nlv
    nếu dùng bind thì ta không cần viết cái hàm tính lương, chỉ cần khời tạo giá trị cho nlv là có luôn giá trị của lương.
    nếu không dùng thì ta phài khời tạo giá trị cảu lương và năm làm việc.
     
  9. toi5

    toi5 Try Hard Moderator Lão Làng GVN

    Tham gia ngày:
    27/5/03
    Bài viết:
    6,866
    quen đứa nào hỏi đi, học được cũng hơn 1 tháng mà ko có được đứa bạn nào để hỏi sao
     
  10. ricky_martin

    ricky_martin Lão Làng Lão Làng GVN

    Tham gia ngày:
    30/12/05
    Bài viết:
    453
    Sao biết em mới học hơn 1 tháng hay thế
    Trường mang tiếng đhcntt vậy chứ giảng viên dạy chán òm
    Tự học là chính
    Nên mỗi đứa học 1 kỉu hỏi nhau khó lắm
     
  11. thaitrung

    thaitrung Legend of Zelda

    Tham gia ngày:
    30/5/06
    Bài viết:
    926
    Nơi ở:
    CastleVania
    xin cho 1 Ví dụ kết nối database trong Java (JDBC) , thanksssss
     
  12. The Greek Warrior

    The Greek Warrior T.E.T.Я.I.S

    Tham gia ngày:
    28/4/02
    Bài viết:
    561
    Nơi ở:
    Caldeum
    Đây là ví dụ kết nối Database (SQLServer) sử dụng JDBC-ODBC Bridge
    DataSource Name: displayInJTable
    Table Student có cấu trúc:
    StudentID char(10)
    Name char(10)
    Address char(200)
    Image char(50)
    Mã:
    import java.sql.*;
    import javax.swing.*;
    import javax.swing.table.DefaultTableModel;
    import java.awt.*;
    import java.util.*;
    public class displayInJTable extends JFrame
    {
    	JTable tblData=new JTable();
    	DefaultTableModel  model;
    	Connection connect;
    	PreparedStatement pstm;
    	ResultSet rs;
    	String url,strSql;
    	Vector rowHeader=new Vector();
    	
    	displayInJTable()
    	{
    		
    		Container contain;
    		contain=getContentPane();
    		
    		contain.setLayout(new FlowLayout());
    		
    		rowHeader.add("StudentID");
    		rowHeader.add("Name");
    		rowHeader.add("Address");
    		rowHeader.add("Image");
    		
    		model =new DefaultTableModel(rowHeader,0);
    		
    		tblData.setModel(model);
    		JScrollPane scroll=new JScrollPane(tblData,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);		
    		contain.add(scroll);
    		
    		try
    		{
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    			url="jdbc:odbc:displayInJTable";
    			connect=DriverManager.getConnection(url,"sa","sa");
    			strSql="select * from student";
    			pstm=connect.prepareStatement(strSql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
    			
    			rs=pstm.executeQuery();
    			
    			
    			while(rs.next())
    			{
    				Vector rowData=new Vector();
    				rowData.add(rs.getString(1));
    				rowData.add(rs.getString(2));
    				rowData.add(rs.getString(3));
    				rowData.add(rs.getString(4));
    				
    				model.addRow(rowData);
    				
    			}
    		System.out.print(model.getColumnName(1));
    		setSize(300,300);
    		setVisible(true);
    		}catch(Exception e)
    		{
    			e.printStackTrace();
    		}
    	}
    	public static void main(String []a)
    	{
    		new displayInJTable();
    	}
    	
    }
     
  13. thaitrung

    thaitrung Legend of Zelda

    Tham gia ngày:
    30/5/06
    Bài viết:
    926
    Nơi ở:
    CastleVania
    ac bê nguyên cái source code vào luôn nhưng ko thấy cái design đâu, lỡ trót giúp đỡ xin làm thêm cái insert, update và delelete search nữa , vô cùng cãm ơn
     
  14. The Greek Warrior

    The Greek Warrior T.E.T.Я.I.S

    Tham gia ngày:
    28/4/02
    Bài viết:
    561
    Nơi ở:
    Caldeum
    cái design chỉ show lên cái table chứa dữ liệu lấy từ database thôi bạn ạ, vì chỉ đơn giản có vậy tôi thấy kg cần thiết đem lên đây. Còn về cái yêu cầu thêm đấy, bạn cứ code đi rồi post lên đây, tôi sẽ xem giúp cho, chứ thật sự tôi cũng kg có thời gian ngồi code, cái ví dụ trên ngắn nên tôi code cho bạn đó thôi. Thân !
     
  15. KENSAMA

    KENSAMA Mr & Ms Pac-Man

    Tham gia ngày:
    28/2/06
    Bài viết:
    172
    Bạn nào trả lời nốt cho mình câu 2 ở post 467 trên kia đi.
    Hôm nay mình xin hỏi tiếp về 2 ví dụ sau
    VD1:
    var chris = Person {
    name: "Chris"
    children:
    [Person {
    name: "Dee"
    },
    Person {
    name: "Candice"
    }]
    };
    VD2:var chris = Person {
    var: me
    name: "Chris"
    var child1 = Person {
    name: "Dee"
    parent: me
    }
    var child2 = Person { name: "Candice" }
    children: [child1, child2]
    Các bạn giải thích hộ 2 Ví dụ trên làm những công việc gì.
    Nếu nói chi tiết từng câu lệnh thì càng tốt.
    Cám ơn nhiều :D
     
  16. WordEditor

    WordEditor C O N T R A

    Tham gia ngày:
    8/9/08
    Bài viết:
    1,509
    Nơi ở:
    Leaf Village
    Có ai biết chương trình 3DSMAX4 hoặc 5 không? Có link download hoặc đính kèm file lên giúp mình nhé _thanks nhiều_ :D
     
  17. ricky_martin

    ricky_martin Lão Làng Lão Làng GVN

    Tham gia ngày:
    30/12/05
    Bài viết:
    453
    có bài toán là nhập vào giá trị của 1 mảng sau đó xuất ra theo thứ tự tăng dần :
    Mã:
    #include <stdio.h>
    #include <conio.h>
    
    main()
    {
          int t,j;
          int a[100],n,i;
          printf ("nhap vao n (voi n la so phan tu trong mang )");
          scanf  ("%d",&n);
          
          for (i=0;i<n;i++)
          {
              printf ("nhap vao gia tri cua a[%d]",i);
              scanf ("%d",&a[i]);
              }
          [COLOR="Red"]for(i=0;i<n-1;i++)[/COLOR]     
          [COLOR="Yellow"]for(j=i+1;j<n;j++) [/COLOR]     
           if (a[i]>a[j])
           {
                         [COLOR="Blue"]t=a[i];
                         a[i]=a[j];    
                         a[j]=t;[/COLOR]                     }
            for (i=0;i<n;i++)
    
            printf("%d",a[i]);
    
           getch ( );
    
          }
    
    Em hỉu đc máy làm 1 đoạn như sau :
    -ban đầu nó chờ mình nhập n
    -sau đó nó chờ mình nhập lần lượt các giá trị của a[0] tới a[n-1]
    -tới cái for màu đỏ,có i=0 --> thõa mản i<n---> thực hiện cái for màu vàng---> nếu thõa mãn----->thực hiện if ,nếu if thõa mãn thì thực hiện khối lệnh màu xanh.
    Em nghĩ như vậy
    Nếu đúng là như vậy thì sau khi thực hiện khối lệnh màu xanh xong nó sẽ làm gì típ
    Giúp em hen.
     
  18. DHBL

    DHBL Youtube Master Race

    Tham gia ngày:
    7/11/08
    Bài viết:
    58
    Mã:
     for(i=0;i<n-1;i++)     
          for(j=i+1;j<n;j++)      
           if (a[i]>a[j])
           {
                         t=a[i];
                         a[i]=a[j];    
                         a[j]=t;                     }
    
    -->sắp xếp lại mảng theo thứ tự tăng dần, phần màu xanh dùng hoán vị 2 số cho nhau vì dụ a=5, b=6 sẽ ra a=6, b=5.
    --->do đó sau khi chạy hết 2 cái for thì cái mảng được sắp xếp từ bé tới lớn rồi.
    --->dòng for kế tiếp là dùng xuất cái mảng sau khi xắp xếp ra thế thôi quá đơn giản.
    --->nếu muốn xuất từ lớn tời bé thì dòng for cuối thay bằng
    Mã:
    for(int i=n;i!=0;i--)
         printf("%d",a[i]);
    
     
  19. nhatanh

    nhatanh Samus Aran the Bounty Hunter Lão Làng GVN

    Tham gia ngày:
    19/5/04
    Bài viết:
    6,456
    Nơi ở:
    Outworld
    hiểu đơn giản là nó sẽ truy vấn n^2 lần, xem cái sau có lớn hơn cái trước ko. Dĩ nhiên là sau n^2 lần truy vấn thì chắc chắn là tất cả các phần tử đã sort tăng(cái này chứng minh dễ mà);)) cái này gọi là bubble sort. Học đệ quy (và có thể là cả chặt nhị phân) rồi thì sẽ biết thêm quicksort, chỉ phải thực hiện n*log(n) lần thôi(log là log cơ số 2 nhé, ko phải 10 đâu:D) rồi còn radix sort, merge sort, shell sort, nhiều lắm:)) có thể làm hẳn cả một chuyên đề về sắp xếp cơ đấy:))
     
  20. bobby_boo324

    bobby_boo324 Mario & Luigi

    Tham gia ngày:
    18/2/08
    Bài viết:
    774
    Em đang muốn học thêm PHOTOSHOP để tự Design vài cái ảnh mang phong cách của mình,em ở Sài Gòn không biết có chỗ nào dạy PHOTOSHOP giỏi không vậy mấy Bác?
     

Chia sẻ trang này