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

Đề tài: bị break khi chạy đến dòng cout của hàm in

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

    Mặc định bị break khi chạy đến dòng cout của hàm in

    Các bro xem code và giúp em sửa lỗi. Cụ thể e thấy chạy đến dòng cout của hàm in là bị break.

    Code:
    #include <iostream>
    #include <fstream>
    #include <conio.h>
    #include <math.h>
    using namespace std;
    int sohinhtron, k;
    struct htron{
    float dx;
    float dy;
    float r;
    float khoangcach;
    };
    int docinput(htron* h,ifstream &input)
    {
    	input>>sohinhtron>>k;
    	h=new htron[sohinhtron+1];
    	cout<<"so hinh tron="<<sohinhtron<<endl<<"so k="<<k<<endl;
    	for(int i=0; i<sohinhtron; i++)
    	{
    		input>>h[i].dx>>h[i].dy>>h[i].r;
    		h[i].khoangcach=sqrt(h[i].dx*h[i].dx+h[i].dy*h[i].dy)-h[i].r;
    	}
    	return sohinhtron, k;
    }
    void in(htron *h,int sohinhtron)
    {
    	for(int i=0; i<sohinhtron; i++)
    	{
    		cout<<h[i].dx<<" "<<h[i].dy<<" "<<h[i].r<<endl;
    	}
    }
    void main()
    {
    	htron *h;
    	ifstream input("C:\\input1.txt",ios::in);
    	docinput(h,input);
    	in(h,sohinhtron);
    	getch();
    }
    à quên nữa. file input của em có dạng thế này
    Code:
    5 3
    10 10 3
    120 100 50
    -30 40 20
    18 22 10
    -25 -25 20
    Dòng đầu tiên là số hình tròn trong file và số k(cái này khỏi quan tâm).
    Các dòng bên dưới là tọa độ x,y và bán kính R của mỗi đường tròn.
    Cám ơn trước ạ

  2. #2
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    hàm int docinput()
    bạn return 2 giá trị lại là sao jay.rồi trả về cũng ko ai thèm đón.
    rồi tạo con trỏ h mà để nguyên xi.

    Code:
    #include <iostream>
    #include <fstream>
    #include <conio.h>
    #include <math.h>
    using namespace std;
    int sohinhtron, k;
    struct htron{
    float dx;
    float dy;
    float r;
    float khoangcach;
    };
    int docinput(htron* h,ifstream &input)
    {
    	input>>sohinhtron>>k;
    	h=new htron[sohinhtron+1];
    	cout<<"so hinh tron="<<sohinhtron<<endl<<"so k="<<k<<endl;
    	for(int i=0; i<sohinhtron; i++)
    	{
    		input>>h[i].dx>>h[i].dy>>h[i].r;
    		h[i].khoangcach=sqrt(h[i].dx*h[i].dx+h[i].dy*h[i].dy)-h[i].r;
    	}
    	return sohinhtron, k;
    }
    void in(htron *h,int sohinhtron)
    {
    	for(int i=0; i<sohinhtron; i++)
    	{
    		cout<<h[i].dx<<" "<<h[i].dy<<" "<<h[i].r<<endl;
    	}
    }
    void main()
    {
    	htron *h= new htron;
    	ifstream input("C:\\input1.txt",ios::in);
    	docinput(h,input);
    	in(h,sohinhtron);
    	getch();
    }
    code đã chạy.còn đúng sai thì bạn xem lại

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

    Mặc định thanks

    thanks a tm nhé. để e xem lại code cho kĩ càng đã

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

    à cái code a sửa giùm e thì chạy rồi. Nhưng sao lúc in ra thì k giống trong file input.
    tức là phải giống thế này
    Code:
    10 10 3
    120 100 50
    -30 40 20
    18 22 10
    -25 -25 20
    mà nó in ra toàn số rác. có phải là do sau khi ra khỏi hàm đọc input, các giá trị của h[i] mất hết k ạ?

  5. #5
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    Code:
    #include <iostream>
    #include <fstream>
    #include <conio.h>
    #include <math.h>
    #pragma warning(disable:4996)
    using namespace std;
    int sohinhtron, k;
    struct htron
    {
    	float dx;
    	float dy;
    	float r;
    	float khoangcach;
    };
    htron* docinput(ifstream &input)
    {
    	htron *h ;
    	input>>sohinhtron>>k;
    	h=new htron[sohinhtron+1];
    	cout<<"so hinh tron="<<sohinhtron<<endl<<"so k="<<k<<endl;
    	for(int i=0; i<sohinhtron; i++)
    	{
    		input>>h[i].dx>>h[i].dy>>h[i].r;
    		h[i].khoangcach=sqrt(h[i].dx*h[i].dx+h[i].dy*h[i].dy)-h[i].r;
    	}
    	return h ;
    }
    void in(htron *h,int sohinhtron)
    {
    	for(int i=0; i<sohinhtron; i++)
    	{
    		cout<<h[i].dx<<" "<<h[i].dy<<" "<<h[i].r<<endl;
    	}
    }
    void main()
    {
    	htron *h= new htron;
    	ifstream input("input.txt",ios::in);
    	h = docinput(input);
    	in(h,sohinhtron);
    	getch();
    }
    đây là code mình đã sửa lại và chạy đúng,pn test thử.vấn đề lúc nãy chắc là do con trỏ thôi.mình chưa debug thử nên chưa pít.

  6. #6
    Ngày gia nhập
    03 2010
    Nơi ở
    My Home
    Bài viết
    772

    Mặc định bị break khi chạy đến dòng cout của hàm in

    cấp phát, sử dụng con trỏ bừa bãi, cấp phát xong không dùng, không thu hồi con trỏ.
    Kết quả sai là do không biết cách sử dụng con trỏ và vẫn đề truyền tham biến hay tham trị.

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

  1. Trả lời: 0
    Bài viết cuối: 01-11-2013, 04:43 PM
  2. Giới hạn số phần tử của 1 dòng in ra trong cout ntn?
    Gửi bởi bimbim0810 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 22-03-2012, 10:11 PM
  3. Lập trình C++ Cout ra hai dòng cho kết quả khác khi gộp vào 1 dòng
    Gửi bởi kh0c trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 20-05-2011, 09:24 PM
  4. vòng for này sao nó cout mà không xuống dòng
    Gửi bởi babamama trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 18-10-2009, 06:48 AM
  5. [ Solved ]Dòng cout
    Gửi bởi tranminhduc trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 29-08-2008, 10:02 AM

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