Các câu hỏi cơ bản về bài tập ,lí thuyết :cout,cin,if,else,switch,for.

Các bro giải hộ: cho danh sách sinh viên gồm mã sinh viên có dạng 13VG1865, họ tên, năm sinh (bài toán danh sách liên kết). Xóa 1 sinh viên trong danh sách . GẤP GẤP.
Mà mã sinh viên mình nên để kiểu gì bây giờ, char * hay string ?
 
Các bro giải hộ: cho danh sách sinh viên gồm mã sinh viên có dạng 13VG1865, họ tên, năm sinh (bài toán danh sách liên kết). Xóa 1 sinh viên trong danh sách . GẤP GẤP.
Mà mã sinh viên mình nên để kiểu gì bây giờ, char * hay string ?

Cái mã sinh viên đó thì phải xài là chuỗi kí tự thì mới được :
Ta sẽ làm VD 1 mảng 50 cấu trúc kiểu sinh viên

struct sinhvien[50]
{
char masv[50][50];
//Cho toi da la 50 ki tu va chi co 50 chuoi
char name[50][50];
long nam;
}sv1,sv2;

Còn xoá danh sách thì bạn cho nó = \NULL thế thôi ,có gì khó đâu ?
Dùng strcpy(chuỗi đích,chuỗi đầu) copy qua và cho chuỗi đầu = NULL

To Hacker : Còn bài hình tam giác rống thì sao bó chân rồi à ... :P
 
:p Sorry quên quên
Nếu tam giác rỗng là tam giác vuông thì dễ rồi
Còn nếu viết dưới dạng tam giác cân thì sẽ như sau
Đầu tin cho 1 vòng for viết khoảng trắng ở đầu
Quy luật là hàng i sẽ viết ra n-i khoảng trắng
Còn sau sẽ viết ra kí tự sao và khoảng trắng
Thì quy luật là Sau khi viết những khoảng trắng đầu tin kia thì ta sẽ viết j:=1 --> i*i-1 bao gồm kí tự * và khoảng trắng
Nếu j=1 hoặc j = i*i-1 thì viết * ko thì sẽ viết khoảng trắng. Đây là code:
Mã:
for i:=1 to n do 
    begin
          for j:=1 to n-i do write(' ');
          for j:=1 to i*i-1 do 
               if j=1 or j = i*i-1 then write('*');
               else write(' ');
          writeln;    
    end;
Bạn thử xem sao
 
Nếu hàng cuối cùng viết hết các kí tự sao thì bạn sửa lại 1 chút thôi
Còn ko phải viết hết kí tự sao ở hàng cuối cùng thì trên kia hi vọng là đúng
 
Thêm 1 số bài nữa về chuỗi kí tự :
1/In ra chuỗi dài nhất VD "Việt" "Nam"
thì kq in ra chuỗi "Việt"

2/Xoá khoảng trắng
VD "Trường Cao Đẳng Hoa Sen"
Xoá hết khỏang trắng đi

3/Trong chuỗi trên mình nhập n=3 thì sẽ xoá ở chữ thứ 3 là chữ "Đẳng"

4/Đếm số dòng số chữ , số kí tự

5/Chuyển từ dãng số sang dạng kí tự và ngược lại
Chuyền từ số sang chuỗi dùng hàm ATOI(chuỗi) trong thư viện string.h
Chuyển từ chuỗi sang số dùng ITOI

6/Xoá chuỗi , tìm từ trong 1 chuỗi , khởi tao cả 1 chuỗi đó = 1 kí tự hay n kí tự
-->Tất cả đều có hàm sẵn có trong string.h

1/Còn về bài số nguyên tố thì còn 1 bài nữa là phân tích 1 số ra các thừa số nguyên tố
VD 15=13+2
4=2+2

GL HFs
 
Còn về phần cấu trúc các bạn chỉ cần chú ý 2 bài tương đối quan trọng là :
1/Bài về cấu trúc phân số
Tính + - * \ 2 phân số với nhau

2/Về cấu trúc điểm point
struct point
{
int x;
int y;
}
VD 2 điểm p1 , p2 sẽ là nhập vào 2 điểm p1.x,p1.y và p2.x,p2.y
a/Từ đó tính khỏang cách
-->Dùng theo công thức M=căn ((xA-xB)bình phương + (yA-yB)bình phương)
b/Từ 3 điểm cho trước trong không gian tính chu vi và diện tích
c/Vẽ hình tam giác từ 3 điểm đó
-->Cái này là về phần đồ hoạ mình tự chế thêm , thường các thầy cô sẽ ko cho đâu vì các ngôn ngữ sau này đồ hoạ sẽ làm tốt hơn nên ko cần đi vào tìm hiểu đồ hoạ của C nhiều

Tất cả các bài trên là toàn bộ công phu C của mình :))
Nếu các bạn tự làm được hết các bài ở đây thì khi thì học phần C ở trường thì ko 10 cũng 9,75 =))

Good luck Have funs :D

À mà ông hacker còn thấy bài nào ngoài mấy bài trên ko ?
Hay như vậy là đủ rùi trừ mấy bài thiên về thuật toán như tháp Hà Nội , đi mã, dò mìn , ng đi buôn qua các thành phố ko nên đụng đến
 
Thật là hữu ít . Mình mới nhập môn thấy mí pác nói dễ hĩu còn hơn mấy cha thầy of tui hix hix
 
Oh sorry các bạn trong cái bài in tam giác cân đó thì thay i*i-1 = 2*i-1 nhé
Sorry
To hoabomby: Uhm về cơ bản thì như thế này thì đủ rồi đó
Còn nếu các bạn học nâng cao thì nên học những thuật toán như tham lam, vét cạn, quy hoạch động v...v
 
troài mới có hai tuần mà thảo luận dữ à nha:
Sorry các bạn do đang ôn thi nên không thể post tiếp bài được sau quả thi này tôi sẽ up lên tiếp cho các bạn .
Tôi vừa tìm thấy mấy bài khá hay cho các bạn mới nhập môn vào môn C++ nếu không giải được,sau kì thi tôi sẽ up lên bài giải cho các bạn.

1.a.Viết chương trình nhập vào một số xem số đó có phải là số nguyên tố hay không.
(Số nguyên tố là số nguyên dương chỉ chia hết cho một và chính nó )
1.b.Viết chương trình phần tích một số ra thừa số nguyên tố.Với số nhập vào từ bàn phím.
1.c.Viết chương trình kiểm tra hai số có phải là số nguyên tố sóng đôi hay không .
(Số nguyên tố sóng đôi là hai số nguyên tố số này cách số kia 2 đơn vị )
1.d.Viết chương trình in ra các số nguyên tố sau một số bất kì .Với số nhập vào từ bàn phím
Vd:nhập 9 in ra 2 3 5 7
2.a.Viết chương trình rút ra một số trong một số bất kì nhập vào :
VD: nhập 84565 nhập tiếp số 1 in ra số 5 ,nhập 5 in ra số 8 và nếu nhập quá thì không in ra gì cả .
2.b.Viết chương trình in ra số ngược của một số bất kì
VD:nhập 5845 in ra 5485
2.c.Viết chương trình xét xem một số có phải là số đối xứng hay không :
vd 121 là số đối xứng;1111 là số đối xứng ;111111 là số đối xứng .....
3.a.Viết chương trình tính ra số fibonaci thứ n với n nhập vào từ bàn phím với
f(0)=0;
f(1)=1;
f(n)=f(n-1)+f(n-2);
3.b.Viết chương trình in ra số tất cả các số fi bo sau 1 số bất kì nhập từ bàn phím .
3.c.Viết chương trình in ra số fibo là số nguyên tố sau 1 số bất kì nhập từ bàn phím .
3.d.Viết chương trình in ra số fibo và kiểu viết ngược của nó .

Mong các bạn tham gia đóng góp làm topic thêm sôi nổi và hiệu quả .
 
Chà không ngờ ở đây cũng có topic học .Trường mình chỉ học C++ thôi ....không học pascal nữa .Nhưng học C++ cũng khá kĩ ...nếu bạn nào có bài khó post lên anh em cùng giải nhé !
__________________
Everything is easy if we thing them easy :-/:-/:-/
 
troài mới có hai tuần mà thảo luận dữ à nha:
Sorry các bạn do đang ôn thi nên không thể post tiếp bài được sau quả thi này tôi sẽ up lên tiếp cho các bạn .
Tôi vừa tìm thấy mấy bài khá hay cho các bạn mới nhập môn vào môn C++ nếu không giải được,sau kì thi tôi sẽ up lên bài giải cho các bạn.

1.a.Viết chương trình nhập vào một số xem số đó có phải là số nguyên tố hay không.
(Số nguyên tố là số nguyên dương chỉ chia hết cho một và chính nó )
1.b.Viết chương trình phần tích một số ra thừa số nguyên tố.Với số nhập vào từ bàn phím.
1.c.Viết chương trình kiểm tra hai số có phải là số nguyên tố sóng đôi hay không .
(Số nguyên tố sóng đôi là hai số nguyên tố số này cách số kia 2 đơn vị )
1.d.Viết chương trình in ra các số nguyên tố sau một số bất kì .Với số nhập vào từ bàn phím
Vd:nhập 9 in ra 2 3 5 7
2.a.Viết chương trình rút ra một số trong một số bất kì nhập vào :
VD: nhập 84565 nhập tiếp số 1 in ra số 5 ,nhập 5 in ra số 8 và nếu nhập quá thì không in ra gì cả .
2.b.Viết chương trình in ra số ngược của một số bất kì
VD:nhập 5845 in ra 5485
2.c.Viết chương trình xét xem một số có phải là số đối xứng hay không :
vd 121 là số đối xứng;1111 là số đối xứng ;111111 là số đối xứng .....
3.a.Viết chương trình tính ra số fibonaci thứ n với n nhập vào từ bàn phím với
f(0)=0;
f(1)=1;
f(n)=f(n-1)+f(n-2);
3.b.Viết chương trình in ra số tất cả các số fi bo sau 1 số bất kì nhập từ bàn phím .
3.c.Viết chương trình in ra số fibo là số nguyên tố sau 1 số bất kì nhập từ bàn phím .
3.d.Viết chương trình in ra số fibo và kiểu viết ngược của nó .

Mong các bạn tham gia đóng góp làm topic thêm sôi nổi và hiệu quả .

Bài Fibonanci thì mình chỉ làm bài đầu tiên à :D

Mấy bài trên thì bài 2c ta sẽ chia mảng ra làm 2
nếu mảng có số phần tử chẵn thì bình thường
Còn số lẻ thì lấy n-1 , ta sẽ so từ 1 đến n/2-1 và n/2+1 đến n
Cái đoạn n/2+1 đến n ta sẽ đảo ngược lại rồi so sánh
VD Cho 1234321 thì đoạn 321 là đoạn sau sẽ đảo ngược lại rồi so sánh với đoạn đầu

GL HF
 
Cái bài đối xứng chỉ cần
Mã:
dx:=true;
for i:=0 to length(s) div 2 do
    if s[i+1] <> s[length(s)-i] then
       begin 
           dx:=false;   
           break;
       end; 
if dx = true then write('Đó là số đx');

Bài 3b: Số k nhập từ bàn phím
Mã:
F[1]:=1; F[2]:=1;
n:=2;
repeat
F[n+1]:=F[n] + F[n-1];
inc(n);
until F[n] > k;
Write('Số số fibonacci sau ',k,' là: ',n-1);
 
Kiểm tra tính đối xứng thật ra rất dễ, không cần phải xử lý chuỗi hay mảng gì ở đây cho phức tạp cả, chỉ cần viết số đảo ngược của nó, so sánh với số ban đầu, nếu bằng thì số đó có tính chất đối xứng (số gánh).
vd: a=12345
số đảo ngược của a là b=54321 <> a thì a ko đối xứng.
Nhưng nếu a=12321
số đảo ngược của a là b=12321=a =>số a đối xứng ^^.
tìm số đảo ngược thì chỉ dùng vòng lặp while đơn giản, phép chia nguyên và chia dư là được.
 
so sánh đối xứng nè
Mã:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

void main()
{
	int i,j,n;
	char a[100],b[100],kitu;
	
	do{
	clrscr();
	printf("\n moi ban nhap chuoi kitu cho a:");
	scanf("%s",a);
     //tao chuoi dao nguoc
	j=strlen(a);
	b[j]=0;
	for(i=0,j=strlen(a)-1;i<strlen(a);i++<j--)
	{b[j]=a[i];}
	//in chuoi dao nguoc
	printf("\n chuoi b la:");
	for(j=0;j<strlen(a);j++)
	{printf("%c",b[j]);}
	if(strcmp(a,b)==0)
		printf("\n a la chuoi doi xung");
	else
		printf("\n a chuoi ko doi xung");
	printf("\n ban co muon thoat chuong trinh ko y/n:");
	kitu=getche();
	if(kitu=='Y'||kitu=='y')
	exit(0);
     }while(kitu=='N'||kitu=='n');






getch();
}
 
Kiểm tra tính đối xứng thật ra rất dễ, không cần phải xử lý chuỗi hay mảng gì ở đây cho phức tạp cả, chỉ cần viết số đảo ngược của nó, so sánh với số ban đầu, nếu bằng thì số đó có tính chất đối xứng (số gánh).
vd: a=12345
số đảo ngược của a là b=54321 <> a thì a ko đối xứng.
Nhưng nếu a=12321
số đảo ngược của a là b=12321=a =>số a đối xứng ^^.
tìm số đảo ngược thì chỉ dùng vòng lặp while đơn giản, phép chia nguyên và chia dư là được.

Nếu ko dùng chuỗi
Bây giờ nó cho nhập vào 1 số lớn thì biết làm thế nào
Ví dụ nó nhập một số lớn hơn 10 chữ số thì nên dùng xâu hơn
 
bác ơi em nhờ làm hộ em bài này em bí quá khi sử dụng lện while ( a là tiền lãi,b là tháng gửi ,z là tiền gửi .sao b tháng thì z=........)
 
cái này bạn sử dụng vong lặp while như sau :

theo công thức ta có
a0 là số tiền ban đâu.
cứ sau một thang thì số tiền ban đầu tức a0 sẽ thay đổi
như vậy vòng while của bạn là như sau:
#include <iostream.h>
#include <conio.h>
main()
{

int tienbandau;
cout<<"moi nhap tien ban dau ";cin>>tienbandau;
int lai;
cout<<"moi nhap lai";cin>>lai
int thang=1;
int thangmongdoi;
cout<<"moi nhap so thang ";cin>>thangmongdoi
while (thang<=thangmongdoi)
{
tienbandau=tienbandau+(tienbandau*lai)/100;
thang++;
}
cout<<"so tien nhan duoc la:"<<tienbandau<<endl;
getch();
}
 
Bài toán như sau :
Có 3 loại tiền : 100đ , 200đ và 500đ
Tìm tất cả các trường hợp để cộng lại = 1000đ
<Dùng C++>
 
Bác đem 1 bài theo kiểu trí tuệ nhân tạo vào đây để làm gì thế [L]at ?
 
Back
Top