Go Back   VN-Zoom Forum > Chia sẻ kiến thức > Lập trình > Pascal | C/C++

 


« help | pascal cứu »

Trả lời Gửi Ðề Tài Mới
 
Ðiều Chỉnh Xếp Bài
Old 05-03-2008, 13:31   #1
Búa Đá Đôi
 
vitbogay's Avatar
 
Tham gia: Jan 2008
Đến từ: ha noi
Bài: 82
VZD: 1.509
Điểm: 18/13 bài viết
Wink mong các bác am hiểu về C tham khảo giùm em

các bác xem hộ em đúng sai chỗ nào và sửa giùm em nha
em cảm ơn nhiều
1. Nhập ba số a, b, c và kiểm tra xem chúng có thể là độ dài của các cạnh của một tam giác hay không. Có thông báo cho từng trường hợp. Biết rằng ba số dương a, b, c là độ dài các cạnh của một tam giác. Nếu tổng của hai số bất kỳ lớn hơn số còn lại.
Bài làm:

#include <stdio.h>
Int main
int Co_The_ La _Tam_Giac (int a, int b, int c)
{
if (a >( b + c))
{
printf("a quá lớn\n");
return 0;
}
if (b > (a + c))
{
printf("b quá lớn\n");
return 0;
}
if (c > (a + b))
{
printf("c quá lớn\n");
return 0;
}
return 1;
}







2/ a. Đọc một số nguyên dương, sau đó viết ra màn hình số đó dưới dạng nhị phân.

b. Đọc một số thực <1 , sau đó viết ra màn hình số đó dưới dạng nhị phân.
c. Đọc một số thực bất kỳ , sau đó viết ra màn hình số đó dưới dạng nhị phân.
Bài làm:



a.
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#define nmax 100
void main()
{
clrscr();
int a[nmax];
long n,i,j,k;
Printf("\nNhap so can doi sang so nhi phan:");
scanf("%d",&n);
i=0;
while(n>0);
{
a[i]=n%2;
n=n/2;
i++;
}
i--;
printf("\n");
for(j=i;j>=0;j--)printf("%d",a[j]);
getch();
}



3/ Hãy nhập 4 số thực a,b,c,d. Tìm giá trị lớn nhất của chúng và gán giá trị lớn nhất đó cho biến MAX.
Bài làm:


#include <stdio.h>
#include <conio.h>
void main()
{
clrscr();
float a,b,c,d,max;
printf("\nNhap 4 so a,b,c,d=");
scanf("%f%f%f%f",&a,&b,&c,&d);
max=a;
if(b>max)max=b;
if(c>max)max=c;
if(d>max)max=d;
printf("Max cua 4 so %5.1f,%5.1f,%5.1f va %5.1f la %5.1f",a,b,c,d,max);
getch();
}





4 / Hãy nhập vào dãy số thực x[0],x[1],...x[n]. , sau dó tìm Max(x[0],x[1],...,x[n]).

Bài làm:

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

void main()
{clrscr();
float x[100], temp;
int k,j,n;
printf(“\nVAO SO PHAN TU CUA MANG:”);
scanf(“%d”,&n);
for(k=0;k<=n-1;k++) /* Theo đề baì thì từ 0 tới n, có n+1 số, mình cứ coi như đây là con số n mình đọc */
{printf(“\nx[%d]=”,k); /* \n để nhảy hàng trước khi đọc 1 số mới */
scanf(“%f”,&x[k]);
}
for(k=0;k<=n-2;k++) /* k chỉ đi tới số áp chót thôi */
for(j=i+1;j<=n-1;j++) /* j thì đi tới số chót, tức n-1 */
{
if(x[k]>x[j])
temp=x[k];
x[k]=x[j];
x[j]=temp;
}
printf(“\DAY SO DUOC SAP XEP NHU SAU:”);
for(i=0;k<n;k++)
printf("%f\n",x[k]); /* \n để nhảy hàng, hoặc là thêm vài ô trắng, để các số khỏi dính với nhau */
getch();
}




5/ Hãy tính cước cho một cuộc gọi điện thoại nội tỉnh. Biết rằng: Thời gian bắt đầu, thời gian kết thúc cuộc gọi tính theo phút và được nhập từ bàn phím. Cước dịch vụ điện thoại: 500đ / phút.
Bài làm:

/* chuong trinh tinh cuoc dien thoai */
#include <stdio.h>
#include <conio.h>

void main(void)
{
float h1, h2, m1, m2, s1, s2, gia=500, tong;
long time_batdau, time_ketthuc, time_sudung;
clrscr();

printf (" CHUONG TRINH TINH TIEN CUOC DIEN THOAI");
printf ("\n Thoi gian duoc tinh theo he thong 24 gio");
printf ("\n Thoi gian thuc hien cuoc goi tu 0 gio den 24g trong ngay");
printf ("\n Don gia : 500d/phut");

/* Thoi gian bat dau */
time1:
printf ("\n");
printf ("\n Nhap vao thoi gian bat dau (gio, phut, giay) : ");
scanf ("%f%f%f",&h1,&m1,&s1);

/* Kiem tra tinh hop le cua thoi gian nhap vao */
if (h1>24)
{ printf ("\n Vui long nhap lai so gio, so gio khong duoc lon hon 24.");
goto time1;
}
if (m1>59)
{ printf ("\n Vui long nhap lai so phut, so phut khong duoc lon hon 59.");
goto time1;
}
if (s1>59)
{ printf ("\n Vui long nhap lai so giay, so giay khong duoc lon hon 59.");
goto time1;
}
time_batdau = 3600*h1 + 60*m1 + s1; /* chuyen doi ve giay */
/* Thoi gian ket thuc */
time2:
printf ("\n");
printf ("\n Nhap vao thoi gian ket thuc (gio, phut, giay) : ");
scanf ("%f%f%f",&h2,&m2,&s2);
/* Kiem tra tinh hop le cua thoi gian nhap vao */
if (h2>24)
{ printf ("\n Vui long nhap lai so gio, so gio khong duoc lon hon 24.");
goto time2;
}
if (m2>59)
{ printf ("\n Vui long nhap lai so phut, so phut khong duoc lon hon 59.");
goto time2;
}
if (s2>59)
{ printf ("\n Vui long nhap lai so giay, so giay khong duoc lon hon 59.");
goto time2;
}
time_ketthuc = 3600*h2 + 60*m2 + s2; /* chuyen doi ve giay */
time_sudung = time_ketthuc - time_batdau
if (time_sudung<0)
printf ("\n Thoi gian bat dau khong the lon hon thoi gian ket thuc");
else
{
if ((s2-s1)==0) tong = gia*((h2-h1)*60 + (m2-m1));
else tong = gia*((h2-h1)*60 + (m2-m1) + 1); /* So giay duoi 1 phut se lam tron thanh 1 phut */
printf ("\n Thoi gian bat dau: %2.0f gio %2.0f phut %2.0f giay", h1, m1, s1);
printf ("\n\n Thoi gian ket thuc: %2.0f gio %2.0f phut %2.0f giay", h2, m2, s2);
printf ("\n\n Tong thoi gian su dung: %2.0f gio, %2.0f phut, %2.0f giay",(h2-h1), (m2-m1), (s2-s1));
printf ("\n\n So tien phai tra: %.2f dong ", tong);
}
}




thay đổi nội dung bởi: vitbogay, 05-03-2008 lúc 14:46
vitbogay vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-03-2008, 16:09   #2
Búa Đá Đôi
 
vitbogay's Avatar
 
Tham gia: Jan 2008
Đến từ: ha noi
Bài: 82
VZD: 1.509
Điểm: 18/13 bài viết
Default

hu hu diễn dàn toàn các cao thủ thế này mà không thấy ai trả lời giùm em à
vitbogay vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-03-2008, 12:02   #3
Búa Đá Đôi
 
vitbogay's Avatar
 
Tham gia: Jan 2008
Đến từ: ha noi
Bài: 82
VZD: 1.509
Điểm: 18/13 bài viết
Default

không có ai xem hộ mình a`
híc híc
vitbogay vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-03-2008, 15:50   #4
Rìu Bạc
 
Mr_Dolphin's Avatar
 
Tham gia: Dec 2007
Bài: 319
VZD: 4.992
Điểm: 83/54 bài viết
Default

Tôi mới học C++ không thạo lắm, những góp ý sau nếu có thể giúp đc bạn thì tốt, còn không thì cũng đừng cười tôi nhé.
1, Bài 1 tôi nghĩ điều kiện là 3 cạnh tam giác tương ứng với mỗi cạnh là: (a-b) < c < (a+b) với b > c, làm như bạn hình như chưa đủ
Vậy thôi, mấy bài khác có vẻ không kham nổi.
__________________
-_::Tin Học là chia sẻ ::_-
http://cnttk1a.hnsv.com
Chào mừng các bạn đến diễn đàn lớp tui!
Mr_Dolphin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Thành viên đã cám ơn bài viết này của Mr_Dolphin:
vitbogay (07-03-2008)
Old 07-03-2008, 16:36   #5
Búa Đá Đôi
 
vitbogay's Avatar
 
Tham gia: Jan 2008
Đến từ: ha noi
Bài: 82
VZD: 1.509
Điểm: 18/13 bài viết
Default

Trích:
Mr_Dolphin View Post
Tôi mới học C++ không thạo lắm, những góp ý sau nếu có thể giúp đc bạn thì tốt, còn không thì cũng đừng cười tôi nhé.
1, Bài 1 tôi nghĩ điều kiện là 3 cạnh tam giác tương ứng với mỗi cạnh là: (a-b) < c < (a+b) với b > c, làm như bạn hình như chưa đủ
Vậy thôi, mấy bài khác có vẻ không kham nổi.
dù sao đi nữa cũng chân thành cảm ơn Mr_Dolphin vì dã xem qua họ tôi
tôi thấy nhiều người vào đọc nhưng không thấy ý kiến gì à
buồn quá
vitbogay vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-03-2008, 16:43   #6
Búa Gỗ Đôi
 
tung_akay's Avatar
 
Tham gia: Jan 2008
Bài: 25
VZD: 853
Điểm: 5/2 bài viết
Default

khong hieu lam.neu 4 nam nua ban hoi toi ,toi co the giup ban.hien gio toi dang hoc rat gioi toan nhung chua toi trinh giai duoc nhung bai tren.hen gap lai
tung_akay vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-03-2008, 17:54   #7
Rìu Sắt Đôi
 
trimitu's Avatar
 
Tham gia: Jan 2008
Bài: 214
VZD: 4.532
Điểm: 96/57 bài viết
Default Tớ vừa học C xong nên biết chút chút !

Lỗi của bạn mình đánh dấu đỏ nhé
#include <stdio.h>
Int main Chổ này sửa lại là int main() vì C không như pascal cho phép đánh code hoa thoải mái
int Co_The_ La _Tam_Giac (int a, int b, int c)
{
if (a >( b + c))
{
printf("a quá lớn\n");
return 0;
}
if (b > (a + c))
{
printf("b quá lớn\n");
return 0;
}
if (c > (a + b))
{
printf("c quá lớn\n");
return 0;
}
return 1;
}


Nói chung bài nì của bạn lỗi hơi nhìu ! Vì thuật toán của bạn có vẻ hơi nhầm ! Bạn dùng ba cú pháp if nhưng không dùng else nên không chặt! Thứ hai nếu 1 số bằng tổng hai số còn lại cũng không đúng ?
Phải không ? Có vẻ bạn mới học nên cú pháp bạn cũng nhầm một chút ? Nhưng bạn có thể dùng Debugger trong các chương trình TC hoặc BC để gỡ rối mà ! Thường thì lỗi ở đâu ngừng ở đó ?




Mấy bài dưới để tớ kiểm tra cho sau nhé ! Còn nếu cần giáo trình học thì liên hệ với tớ tớ gửi link cho ? OK?
trimitu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Thành viên đã cám ơn bài viết này của trimitu:
vitbogay (08-03-2008)
Old 08-03-2008, 09:30   #8
Búa Đá Đôi
 
vitbogay's Avatar
 
Tham gia: Jan 2008
Đến từ: ha noi
Bài: 82
VZD: 1.509
Điểm: 18/13 bài viết
Default

Trích:
trimitu View Post
Lỗi của bạn mình đánh dấu đỏ nhé
#include <stdio.h>
Int main Chổ này sửa lại là int main() vì C không như pascal cho phép đánh code hoa thoải mái
int Co_The_ La _Tam_Giac (int a, int b, int c)
{
if (a >( b + c))
{
printf("a quá lớn\n");
return 0;
}
if (b > (a + c))
{
printf("b quá lớn\n");
return 0;
}
if (c > (a + b))
{
printf("c quá lớn\n");
return 0;
}
return 1;
}


Nói chung bài nì của bạn lỗi hơi nhìu ! Vì thuật toán của bạn có vẻ hơi nhầm ! Bạn dùng ba cú pháp if nhưng không dùng else nên không chặt! Thứ hai nếu 1 số bằng tổng hai số còn lại cũng không đúng ?
Phải không ? Có vẻ bạn mới học nên cú pháp bạn cũng nhầm một chút ? Nhưng bạn có thể dùng Debugger trong các chương trình TC hoặc BC để gỡ rối mà ! Thường thì lỗi ở đâu ngừng ở đó ?




Mấy bài dưới để tớ kiểm tra cho sau nhé ! Còn nếu cần giáo trình học thì liên hệ với tớ tớ gửi link cho ? OK?
cảm ơn cậu nha
mình sẽ sửa
khi nào cậu xem xon thi cho mình ý kiến nha
thankyou very much !
vitbogay vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-03-2008, 10:52   #9
Búa Gỗ
 
anbinhtrong's Avatar
 
Tham gia: Feb 2008
Bài: 11
VZD: 443
Điểm: 17/3 bài viết
Thumbs up góp ý thôi.

Bạn dùng cấu trúc Switch đó, và đặt một biến làm cờ. Khi xuất ra kết quả kiểm tra biến cờ đó.
Mình biết pascal, C chưa học, nhưng nhìn qua mình có góp ý thế này( Không dám múa rìu qua mắt thợ)
Bài 2: Đó là phần đổi số nguyên, không phải số thực. Muốn đổi phải chuẩn quá ra dạng IEE32 bit. Mà viết thì rất dài.
Bài 4: Chọn 1 phần tử làm max rồi so sánh với các biến còn lại, nhìn chương trình dễ hiểu hơn. Không cần sắp xếp các phần tử mảng làm chi.
Bài 5: Bạn không nên câu lệnh goto, đó là điều cấm kỵ( theo mình biết) vì mỗi chương trình tuân theo cấu cấu trúc: tuần tự, rẽ nhánh, và cấu trúc lặp.
Dùng hàm kiểm tra giờ, phút, giây. Không nên viết từng cái if. Nếu viết chương trình lớn thì rất khó sửa lỗi.
Mình chỉ nhìn và hiểu chương trình bạn viết thôi, pascal và vb mình còn biết, C thì bó tay, nhưng kì 2 mình sẽ học C.
__________________
Số phận nghiệt ngã có thể khiến bạn bỏ cuộc, mọi người có thể nói với bạn là không thể- nhưng chính bạn mới là người quyết định có bỏ cuộc hay không- cho dù bất kì điều gì xảy ra.
anbinhtrong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Thành viên đã cám ơn bài viết này của anbinhtrong:
vitbogay (10-03-2008)
Trả lời Gửi Ðề Tài Mới

« help | pascal cứu »
Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
Bạn không thể gửi chủ đề mới
Bạn không thể gửi trả lời
Bạn không thể gửi file đính kèm
Bạn không thể tự sửa bài viết của bạn

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Tắt
Pingbacks are Tắt
Refbacks are Tắt
Chuyển đến


Múi giờ GMT +7. Hiện tại là 15:21.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
Từ điển được cung cấp bởi VDict.com - Hosting được tài trợ bởi Rao vặt 123