[C\C++] Bài tập KTLT: Làm việc với mảng cấu trúc
in C, C Plus Plus, Học lập trình, HPH /
/*
Viet cac ham:
- Nhap danh sach sinh vien
- In danh sach sinh vien duoi dang bang
- Tính diem tong ket
- In thong tin sinh vien co diem tong ket cao nhat
- Dem so sinh vien diem tk >=8, sinh nam 1993
- Sap xep sinh vien theo chieu giam cua diem
*/
[Code Tubor C/C++] #include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
// khai bao bien
struct SV{
char maSV[6], hoTen[30], dc[50], lop[10];
int namSinh;
float d1,d2,d3,dtk;
};
SV a[30]; // mang cau truc SV
int n; // chua so sinh vien
// ham nhap thong tin
void NhapTT(){
// nhap so sinh vien
do{ cout<<"\n n="; cin>>n;
if (n<3||n>30) cout<<"\n Nhap lai n!";
}while(n<3||n>30);
// nhap day sinh vien
cout<<"\n Nhap vao thong tin sinh vien:";
for(int i=0;i<n;i++)
{
cout<<"\n SV thu "<<i+1<<" : ";
cout<<"\n - Ho ten : "; gets(a[i].hoTen);
cout<<"\n - Ma SV : "; gets(a[i].maSV);
cout<<"\n - Lop : "; gets(a[i].lop);
cout<<"\n - Dia chi : "; gets(a[i].dc);
cout<<"\n - Nam sinh : ";cin>>a[i].namSinh;
cout<<"\n - Diem ky I : "; cin>>a[i].d1;
cout<<"\n - Diem ky II : "; cin>>a[i].d2;
cout<<"\n - Diem ky III : "; cin>>a[i].d3;
}
}
// Ham In thong tin sinh vien
void InTT(){
cout<<"\n \n DANH SACH SINH VIEN:\n";
cout<<"\n|Ma SV\t|Ho ten \t|Dia chi\t|Nam sinh \t|Lop \t|Diem I \t|Diem II \t|DiemIII \t|";
cout<<"\n|---- \t|----- \t|-------\t|------- \t|---\t|\t-----\t|------\t|------\t|";
for (int i=0;i<n;i++){
cout<<"\n|"<<a[i].maSV<<"\t|"<<a[i].hoTen<<"\t|"<<a[i].dc<<"\t|"<<a[i].namSinh<<"\t|"<<a[i].lop<<"\t|"<<a[i].d1<<"\t|"<<a[i].d2<<"\t|"<<a[i].d3<<"\t|";
}
}
// ham tinh diem
void TinhDiem(){
for(int i=0;i<n;i++)
a[i].dtk=(a[i].d1+a[i].d2+a[i].d3)/3;
}
// In sinh vien co diem tk cao nhat
void InSV_Diem_Max(){
float max=a[0].dtk;
int m=0;
for(int i=1;i<n;i++)
if (a[i].dtk>max){ max=a[i].dtk ; m=i;}
// in sinh vien co diem cao nhat
cout<<"\n * SINH VIEN CO DIEM CAO NHAT:\n";
cout<<a[m].maSV<<"\t|\t"<<a[m].hoTen<<"\t|\t"<<a[m].dc<<"\t|\t"<<a[m].namSinh<<"\t|\t"<<a[m].lop<<"\t|\t"<<a[m].dtk;
}
// ham diem sinh vien diem tong ket >=8, sinh nam 1993
void DemSV(){
int dem=0;
for(int i=0;i<n;i++)
if (a[i].dtk>=8 && a[i].namSinh==1993) dem++;
cout<<"\n * So sinh vie co diem tk >=8 va sinh nam 1993 la: "<<dem;
}
// doi cho
void DoiCho(SV &a, SV &b){
char str[50];
int ns;
float diem;
diem=a.d1;
a.d1=b.d1;
b.d1=diem;
diem=a.d2;
a.d2=b.d2;
b.d2=diem;
diem=a.d3;
a.d3=b.d3;
b.d3=diem;
ns=a.namSinh;
a.namSinh=b.namSinh;
b.namSinh=diem;
strcpy(str,a.hoTen);
strcpy(a.hoTen,b.hoTen);
strcpy(b.hoTen,str);
strcpy(str,a.dc);
strcpy(a.dc,b.dc);
strcpy(b.dc,str);
strcpy(str,a.maSV);
strcpy(a.maSV,b.maSV);
strcpy(b.maSV,str);
strcpy(str,a.lop);
strcpy(a.lop,b.lop);
strcpy(b.lop,str);
}
// Ham sap xep diem giam dan
void SapXep(){
// sap xep
for (int i=0;i<n-1;i++)
for(int j= i+1;j<n;j++)
if (a[j].dtk>a[i].dtk)
DoiCho(a[j],a[i]);
}
// Ham chinh
void main(){
clrscr();
NhapTT();
InTT();
TinhDiem();
InSV_Diem_Max();
DemSV();
SapXep();
InTT();
getch();
}
Một số tài liệu và khoá học bổ ích dành cho bạn:
# Giáo Trình: Kỹ Thuật Lập Trình C/C++ Căn Bản Và Nâng Cao [Click để xem]
# Khoá học online: Học lập trình C/C++ TỪ A - Z [Click để xem]
EMU8086 - lập trình Assembly
in Assembly, Học lập trình /
------------------------------------------------------------------
* Có thể bạn quan tâm:
- Những cuốn sách mà các bạn không thể bỏ qua khi còn trẻ
- Khoá học tin học văn phòng tốt nhất
Chúc các bạn thành công!
[Android] Thiết kế giao diện với XML trong Android [XML]
in Android, Học lập trình, Lập trình mobile, Thiết kế giao diện Android với XML /
Thiết kế giao diện Android với XML
1.Các layout:
Vào thẻ File -> New -> Android Project. Nếu bạn mới lập trình Android lần đầu thì có lẽ dòng Android Project sẽ không hiện ra, khi đó xuống phía cuối chọn Other rồi vào Android -> Android Project.
Project name: Example 1Build Target: Chọn Android 1.5 (mới nhất là 2.1 nhưng hiện tại bạn chưa cần quan tâm )Application name: Example 1Package name: at.examCreate Activity: Example
=> Kích nút Finish.
- drawable: thư mục chứa các hình ảnh để làm icon hoặc tài nguyên cho giao diện...
- layout: chứa các file xml để thiết kế giao diện.
- values: chứa các giá trị sử dụng trong ứng dụng được bạn định nghĩa, như các dòng ký tự (string), các màu (color), các themes...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
androidrientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/edit_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/edit_hint"
/>
<TextView
android:id="@+id/text_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/text_color"
android:textSize="28px"
android:typeface="monospace"
/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Example!</string>
<string name="app_name">Example 1</string>
<string name="edit_hint">Enter the work here</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="text_color">#ff3300</color>
</resources>
android:textColor="#ff3300"
package at.exam;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.EditText;
import android.widget.TextView;
public class Example extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Thiết lập giao diện lấy từ file main.xml
setContentView(R.layout.main);
//Lấy về các thành phần trong main.xml thông qua id
final EditText edit = (EditText) findViewById(R.id.edit_text);
final TextView text = (TextView) findViewById(R.id.text_view);
//Thiết lập xử lý cho sự kiện nhấn nút giữa của điện thoại
edit.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
{
text.setText(edit.getText().toString());
edit.setText("");
return true;
}
else {
return false;
}
}
});
}
}
- TextView- EditText- ListView- Spinner- CheckBox- Button- RadioButton
edit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
android:textSize="50px"
* Download tài liệu học Android tại đây [http://ebooks-ict.blogspot.com]
*******
Một số tài liệu và khoá học bổ ích dành cho bạn:
# Giáo trình: Lập Trình Android [Click để xem]
# Khoá học online: Lập trình Android toàn tập [Click để xem]
Bài 1: Giới thiệu về Android và hướng dẫn cài đặt Android SDK
Bài 8:Tìm hiểu về Toast Notification và Alert Dialog
Bài 9:Sử dụng TextView, EditText và Button trong Android
Bài 11:Tìm hiểu về ListView
Bài 12:Tìm hiểu về Spinner trong Android
Ví dụ 2:Xây dựng ứng dụng: Nhập vào tên bạn, sau đó in ra lời chào bạn
Ví dụ 3:Ứng dụng Giải phương trình bậc 2
Ví dụ 4:Xây dựng ứng dụng nhập vào số nguyên n; tính giai thừa của n, in kết quả
Ví dụ 5:Cài đặt Android SDK, Eclipse và thiết bị giả lập AVD
* Có thể bạn quan tâm:
- Những cuốn sách mà các bạn không thể bỏ qua khi còn trẻ
- Khoá học tin học văn phòng tốt nhất
Chúc các bạn thành công!
Các thành phần cơ bản của một ứng dụng Android
in Android, Học lập trình /
1. Activity: hiểu một cách đơn giản thì Activity là nền của 1 ứng dụng. Khi khởi động 1 ứng dụng Android nào đó thì bao giờ cũng có 1 main Activity được gọi, hiển thị màn hình giao diện của ứng dụng cho phép người dùng tương tác.
2. Service: thành phần chạy ẩn trong Android. Service sử dụng để update dữ liệu, đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người dùng thấy.
3. Content Provider: kho dữ liệu chia sẻ. Content Provider được sử dụng để quản lý và chia sẻ dữ liệu giữa các ứng dụng.
4. Intent: nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các thông báo đi nhằm khởi tạo 1 Activity hay Service để thực hiện công việc bạn mong muốn.
VD: khi mở 1 trang web, bạn gửi 1 intent đi để tạo 1 activity mới hiển thị trang web đó.
5. Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới. VD: bạn viết 1 chương trình thay thế cho phần gọi điện mặc định của Android, khi đó bạn cần 1 BR để nhận biết các Intent là các cuộc gọi tới.
6.Notification: đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt động.
Activity, Service, Broadcast Receiver và Content Provider mới là những thành phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai báo trong AndroidManifest (tham khảo bài 2 có giới thiệu đầy đủ về file này).
Understanding Android Application Life Cycle:
Android có cơ chế quản lý các process theo chế độ ưu tiên. Các process có priority thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằm đảm bảo tài nguyên.
1.Foreground process: là process của ứng dụng hiện thời đang được người dùng tương tác.
2.Visible process: là process của ứng dụng mà activity đang hiển thị đối với người dùng (onPaused() của activity được gọi).
3.Service process: là Service đang running.
4.Background process: là process của ứng dụng mà các activity của nó ko hiển thị với người dùng (onStoped() của activity được gọi).
5.Empty process: process không có bất cứ 1 thành phần nào active.
Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động kill process, trước tiên là các empty process.
Android Activity Life Cycle:
Như mình đã giới thiệu ở trên , Actitvity là thành phần quan trọng nhất và đóng vai trò chính trong xây dựng ứng dụng Android. Hệ điều hành Android quản lý Activity theo dạng stack: khi một Activity mới được khởi tạo, nó sẽ được xếp lên đầu của stack và trở thành running activity, các Activity trước đó sẽ bị tạm dừng và chỉ hoạt động trở lại khi Activity mới được giải phóng.
Activity bao gồm 4 state:
- active (running): Activity đang hiển thị trên màn hình (foreground).
- paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost focus). VD: một activity mới xuất hiện hiển thị giao diện đè lên trên activity cũ, nhưng giao diện này nhỏ hơn giao diện của activity cũ, do đó ta vẫn thấy được 1 phần giao diện của activity cũ nhưng lại không thể tương tác với nó.
- stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái stop
- killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo nguyên tắc ưu tiên. Các Activity ở trạng thái stop hoặc paused cũng có thể bị giải phóng và khi nó được hiển thị lại thì các Activity này phải khởi động lại hoàn toàn và phục hồi lại trạng thái trước đó.
Biểu đồ miêu tả Activity state
Vòng đời của Activity:
- Entire lifetime: Từ phương thức onCreate( ) cho tới onDestroy( )
- Visible liftetime: Từ phương thức onStart( ) cho tới onStop( )
- Foreground lifetime: Từ phương thức onResume( ) cho tới onPause( )
Khi xây dựng Actitvity cho ứng dụng cần phải viết lại phương thức onCreate( ) để thực hiện quá trình khởi tạo. Các phương thức khác có cần viết lại hay không tùy vào yêu cầu lập trình.
*******
Một số tài liệu và khoá học bổ ích dành cho bạn:
# Giáo trình: Lập Trình Android [Click để xem]
# Khoá học online: Lập trình Android toàn tập [Click để xem]
Bài 1: Giới thiệu về Android và hướng dẫn cài đặt Android SDK
Bài 8:Tìm hiểu về Toast Notification và Alert Dialog
Bài 9:Sử dụng TextView, EditText và Button trong Android
Bài 11:Tìm hiểu về ListView
Bài 12:Tìm hiểu về Spinner trong Android
Bắt đầu Lập trình Android
in Android, Học lập trình /
Yêu cầu kiến thức cơ bản cho lập trình Android:
Để lập trình android, mình nghĩ mọi người chỉ cần kiến thức java căn bản là hoàn toàn được. Căn bản ở đây có nghĩa là hiểu được thế nào là class, package, biết ý nghĩa của các từ khóa như public, private, protected,... thành thạo các lệnh cơ bản như if, for(), switch(), while(), do while()... biết sử dụng các lệnh chuyển kiểu như Integer.parseInt() hay String.valueOf()...
Nên có thêm kiến thức về gói java.util vì đây là gói hỗ trợ nhiều lớp rất mạnh được sử dụng trên mọi nền, ngoài ra các gói như java.io, java.net... cũng được recommended
Các kiến thức về các gói lập trình cho desktop như java.awt, java.swing hoàn toàn không cần thiết (bản thân mình cũng chưa sử dụng cái này bao giờ, nhảy vào học java là học J2ME luôn), hay các gói của J2ME cũng vậy Lập trình Android tuy cũng là lập trình di động, nhưng các điện thoại sử dụng hđh Android có cấu hình rất mạnh (Nexus One có VXL lên tới 1Ghz), vì vậy 2 nền tảng Android và J2ME cũng rất khác nhau.
Android có những gói riêng hỗ trợ lập trình cho nó và không yêu cầu khắt khe về việc tối ưu code như J2ME. Thật đáng tiếc vì J2ME khônng ứng dụng được mấy vào lập trình Android (tuy nhiên 1 số kỹ thuật cơ bản cho lập trình game 2D như Sprite, double buffering, Tile... thì vẫn ko hề phí phạm chút nào).
Cài đặt Android để lập trình:
Để lập trình Android thì mỗi bộ SDK của Google là không đủ, bạn còn cần tích hợp nó vào một IDE như Eclipse. Có 2 bài hướng dẫn rất chi tiết về cài đặt Android trong Eclipse cũng như Netbeans trên Internet (các bạn có thể tìm kiểu thêm), nhưng theo mình mọi người nên sử dụng Eclipse hơn vì nó có nhiều tính năng hỗ trợ lập trình Google, còn Netbeans thì plugin cho Android vẫn chưa hoàn thiện lắm.
Để học lập trình Android theo mình nên đọc 2 cuốn Professional Android Application Development và Unlocking Android (có thể download tại http://kcc.net.vn). Cả 2 cuốn đều dành cho beginner nhưng cuốn đầu code nhiều, giải thích ít, cuốn thứ 2 giải thích rõ ràng hơn. Nếu có ai có ý định tham khảo thì nên đọc cuốn UA trước để hiểu rõ hơn Android, sử dụng cuốn PAAD trong việc tham khảo các đoạn code cho lập trình.
*******
Một số tài liệu và khoá học bổ ích dành cho bạn:
# Giáo trình: Lập Trình Android [Click để xem]
# Khoá học online: Lập trình Android toàn tập [Click để xem]
Bài 1: Giới thiệu về Android và hướng dẫn cài đặt Android SDK
Bài 8:Tìm hiểu về Toast Notification và Alert Dialog
Bài 9:Sử dụng TextView, EditText và Button trong Android
Top 10 Tên Miền Free Tốt Nhất Cho Các Bạn Làm Web
in Bài viết hay /
Một trong những vấn đề khi chúng ta thiết kế trang web và đưa trang web lên internet chia sẻ là vấn đề tên miền, hiện nay việc sở hữu một tên miền .com .net .info ... là một chuyện thường. Tuy nhiên do một lý do nào đó mà chúng ta không mua tên miền như : không đủ tiền, mới tập làm web hay đơn giản là do mới chúng ta mới bắt đầu và chưa có doanh thu, hay là để tiết kiệm chi phí.
Trong trường hợp này thì các tên miền miễn phí là sự lựa chọn hàng đầu, tuy nhiên hiện nay có vô số các tên miền miễn phí làm cho ta băn khoăn không biết chọn tên miền nào cho phù hợp, dưới đây là bảng xếp hạng 10 dịch vụ cung cấp tên miền miễn phí tốt nhất cho bạn lựa chọn.
1. Co.Cc
Co.Cc là dịch vụ cung cấp tên miền miễn phí đứng đầu trong danh sách các tên miền miễn phí tốt nhất, hỗ trợ rất nhiều tính năng như một tên miền trả phí thật sự như : Nameservers, CNAME, A, MX, TXT records, Google Apps, Windows Live Custom domain...
Chất lượng tên miền luôn được đảm bảo và khá ngắn gọn dễ nhớ. Hơn nữa tên miền Co.Cc còn cung cấp tính năng hỗ trợ DNS cho WebHost, tức là bạn có thể Packed Domain cho WebHost của bạn.
Nhược điểm duy nhất của Co.Cc là Co.Cc giới hạn 20 bản ghi và một tài khoản free được đăng ký tối đa 2 tên miền.
Đăng ký tiên miền này theo dạng www.tenban.co.cc Các bạn có thể vào đây để đăng ký cho mình một tên miền trên co.cc hay xem hướng dẫn đăng ký tên miền Co.Cc chi tiết kèm hình ảnh tại đây.
2.Cz.cc
Đứng ở vị trí thứ hai là dịch vụ Cz.Cc - đây cũng là một trang cung cấp tên miền miễn phí giống với Co.Cc - được xếp hạng ở vị trí thứ 2 là do ra đời muộn và ít người dùng hơn Co.Cc. Tuy nhiên Cz.Cc giới hạn số lượng bản ghi records cho DNS (của Co.Cc giới hạn 20 bản ghi). Với mỗi tài khoản bạn đăng ký được 5 tên miền free.
Hỗ trợ full DNS (NS, A, CNAME, MX, SOA, TXT, AAAA) Sub domains, Control Panel.
Các bạn vào đây để đăng ký tên miền miễn phí .Cz.Cc. Hay xem hướng dẫn đăng ký tên miền .Cz.Cc chi tiết kèm hình ảnh tại đây.
3. Cu.Cc
Tên miền miễn phí Cu.Cc ko giới hạn số lượng bản ghi records cho DNS và cho phép mỗi tài khoản free bạn đăng ký được 5 tên miền miễn phí. Hỗ trợ full DNS (NS, A, CNAME, MX, SOA, TXT) Sub domains, Control Panel.
Bạn click vào đây để đăng ký free tên miền .CU.CC hay xem hướng dẫn chi tiết kèm hình ảnh tại đây.
4. Dot.TK
Chắc các bạn cũng từng nhìn thấy qua các tên miền dạng .tk, đây cũng là tên miền cấp 1 duy nhất được cung cấp miễn phí hiện nay. Hiện tại Dot.Tk cũng đã hỗ trợ full DNS (A, CNAME, MX) Sub domains, Control Panel quá đã với một dịch vụ free.
Các bạn vào đây để đăng ký tên miền miễn phí .tk và xem hướng dẫn đăng ký kèm hình ảnh tại đây.
5. Come.vn cung cấp tên miền miễn phí .vn
Trang này cung cấp rất nhiều tên miền cho bạn chọn: come.vn no1.vn very.vnisp.vn soc.vn (sốc) cuibap.vn (cùi bắp) nuhon.vn choang.vn
* Hướng dẫn tự học lập trình: C# | C/C++ | Java | Android | iOS (Swift) | JavaScript | Assembly | Python | PHP
* Chương trình ví dụ: Đồ họa máy tính | Cấu trúc dữ liệu và giải thuật | Toán rời rạc
* Tìm hiểu: Blockchain | Trí tuệ nhân tạo | Thuật toán di truyền | Học máy | Cơ sở dữ liệu | Phương pháp tối ưu
# BÀI VIẾT NỔI BẬT #
- Hướng dẫn tìm kiếm vị trí Thực tập sinh ngành Công nghệ thông tin
- Cách Viết Tài Liệu Tham Khảo Cho Bài Tập Lớn, Đồ Án, và Tiểu Luận
- Hướng dẫn thiết kế PowerPoint hiệu quả cho báo cáo bài tập lớn, tiểu luận và đồ án tốt nghiệp
- [Bài viết hay] 10 lời khuyên hữu ích dành cho Sinh viên ngành CNTT ở Việt Nam.
- [MMO] Hướng Dẫn *Kiếm Tiền Tự Động* Với Các Ứng Dụng Treo Máy *CỰC KỲ ĐƠN GIẢN VÀ HIỆU QUẢ*
- Hướng Dẫn Viết Code Chuẩn Cho Sinh Viên Công Nghệ Thông Tin