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

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi tran_anh1987, 17/10/06.

  1. Hannibal2010

    Hannibal2010 Mr & Ms Pac-Man

    Tham gia ngày:
    14/11/06
    Bài viết:
    142
    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 ?
     
  2. Hoabomby

    Hoabomby Donkey Kong

    Tham gia ngày:
    19/1/05
    Bài viết:
    433
    Nơi ở:
    Tp Hồ Chí Minh
    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
     
  3. hacker_IT

    hacker_IT Youtube Master Race

    Tham gia ngày:
    2/7/06
    Bài viết:
    30
    :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
     
  4. hacker_IT

    hacker_IT Youtube Master Race

    Tham gia ngày:
    2/7/06
    Bài viết:
    30
    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
     
  5. Hoabomby

    Hoabomby Donkey Kong

    Tham gia ngày:
    19/1/05
    Bài viết:
    433
    Nơi ở:
    Tp Hồ Chí Minh
    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
     
  6. Hoabomby

    Hoabomby Donkey Kong

    Tham gia ngày:
    19/1/05
    Bài viết:
    433
    Nơi ở:
    Tp Hồ Chí Minh
    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
     
  7. hvt0025

    hvt0025 Dragon Quest

    Tham gia ngày:
    12/6/05
    Bài viết:
    1,462
    Nơi ở:
    HoCiTy
    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
     
  8. hacker_IT

    hacker_IT Youtube Master Race

    Tham gia ngày:
    2/7/06
    Bài viết:
    30
    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
     
  9. tran_anh1987

    tran_anh1987 Donkey Kong

    Tham gia ngày:
    15/5/04
    Bài viết:
    387
    Nơi ở:
    City Of Auch
    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ả .
     
  10. nothing_forever

    nothing_forever Youtube Master Race

    Tham gia ngày:
    26/10/06
    Bài viết:
    30
    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 :-/:-/:-/
     
  11. Hoabomby

    Hoabomby Donkey Kong

    Tham gia ngày:
    19/1/05
    Bài viết:
    433
    Nơi ở:
    Tp Hồ Chí Minh
    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
     
  12. hacker_IT

    hacker_IT Youtube Master Race

    Tham gia ngày:
    2/7/06
    Bài viết:
    30
    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);
    
     
  13. tomorrowneverdies

    tomorrowneverdies Bạch Diện Thư Sinh

    Tham gia ngày:
    6/6/02
    Bài viết:
    4,306
    Nơi ở:
    The World Of Games
    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.
     
  14. runandaide

    runandaide Mr & Ms Pac-Man

    Tham gia ngày:
    12/1/05
    Bài viết:
    103
    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();
    }
     
  15. hacker_IT

    hacker_IT Youtube Master Race

    Tham gia ngày:
    2/7/06
    Bài viết:
    30
    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
     
  16. angellord91_no1

    angellord91_no1 Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    180
    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=........)
     
  17. tran_anh1987

    tran_anh1987 Donkey Kong

    Tham gia ngày:
    15/5/04
    Bài viết:
    387
    Nơi ở:
    City Of Auch
    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();
    }
     
  18. angellord91_no1

    angellord91_no1 Mr & Ms Pac-Man

    Tham gia ngày:
    22/6/06
    Bài viết:
    180
    cái của tui là pascal cơ chứ không phải c++
     
  19. [L]at

    [L]at The Warrior of Light

    Tham gia ngày:
    8/1/06
    Bài viết:
    2,147
    Nơi ở:
    ハノイ
    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++>
     
  20. Brianlam

    Brianlam T.E.T.Я.I.S

    Tham gia ngày:
    14/7/04
    Bài viết:
    526
    Bác đem 1 bài theo kiểu trí tuệ nhân tạo vào đây để làm gì thế [L]at ?
     

Chia sẻ trang này