Bài đầu tiên: Cho 1 mảng có n số nguyên, viết chương trình in ra số nguyên lớn nhất trong mảng

|
Đang tải dữ liệu...
|
Đừng dễ gật đầu vào bất cứ điều gì !!!
Không được trách ai. Nếu thấy sai chỉ tự trách mình. Hỏi thật kĩ, hiểu thật kĩ rồi hãy làm. Muốn làm nhanh thì chấp nhận có sai sót. Hãy tìm nguyên nhân, sửa chữa và lại quyết tâm hơn.
Vì đề yêu cầu là tìm số nguyên lớn nhất trong mảng có n phần tử rồi xuất ra.Ở đây mình cho người dùng nhập thoải mái mà không cần phải thông báo trước số lượng phần tử trong mảng(dùng STL với lớp vector).Tiếp đó mình dùng hàm có sẵn trong algorithm để tính toán cho nhanh.
Đó là code dành cho những bạn nào đã am hiểu khá sâu về C/C++ và các thư viện bổ trợ.Mã:#include < iostream > #include < algorithm > #include < vector > using namespace std; void main() { vector< int > mangInt; int temp; cout << "Nhap 1 so nguyen (nhan q de thoat) : "; while (cin >> temp) { mangInt.push_back(temp); cout << "Nhap 1 so nguyen (nhan q de thoat) : "; } cout << "Gia tri lon nhat trong mang la : " << *(max_element(mangInt.begin(), mangInt.end())) << endl; }
Nếu bạn là người mới làm quen với C/C++ thì có thể làm theo cách truyền thống như dưới đây.
Nếu bạn đã học về con trỏ và cấp phát động thì các bạn có thể làm như sauMã:#include < iostream > using namespace std; void main() { int mangInt[10]; // n = 10 int i, max; for (i = 0; i < 10; i++) { cout << "Nhap gia tri thu " << i + 1 << " : "; cin >> mangInt[i]; } max = mangInt[0]; for (i = 1; i < 10; i++) { if (mangInt[i] > max) max = mangInt[i]; } cout << "Gia tri lon nhat cua mang la : " << max << endl; }
Mã:#include < iostream > using namespace std; void main() { int i, n, max; cout << "Nhap so luong phan tu cua mang : "; cin >> n; int *mangInt = new int[n]; for (i = 0; i < n; i++) { cout << "Nhap gia tri thu " << i + 1 << " : "; cin >> mangInt[i]; } max = mangInt[0]; for (i = 1; i < n; i++) { if (mangInt[i] > max) max = mangInt[i]; } cout << "Gia tri lon nhat cua mang la : " << max << endl; delete[] mangInt; // Rat quan trong, thieu lenh nay doi luc gay dung chuong trinh }
Lần sửa cuối bởi TH_studio, ngày 31-10-2010 lúc 02:10 AM. Lý do: Update
Tầm nhìn ta thật ngắn mà đã thấy bao thứ để làm -- Alan Turing
Bây giờ đến lượt mình sẽ ra đề.Cho người dùng nhập 1 mảng số nguyên.Thực hiện việc sắp xếp mảng đó theo chiều tăng dần từ trái qua phải và đảm bảo không có giá trị trùng nhau (chú ý người dùng có thể nhập giá trị trùng nhau).Ví dụ:
- Người dùng nhập : 0 1 5 -1 9 3 6 1 8
->Sau khi sắp xếp : -1 0 1 3 5 6 8 9
Tầm nhìn ta thật ngắn mà đã thấy bao thứ để làm -- Alan Turing
Bây giờ đến lượt mình sẽ ra đề.Cho người dùng nhập 1 mảng số nguyên.Thực hiện việc sắp xếp mảng đó theo chiều tăng dần từ trái qua phải và đảm bảo không có giá trị trùng nhau (chú ý người dùng có thể nhập giá trị trùng nhau).Ví dụ:
- Người dùng nhập : 0 1 5 -1 9 3 6 1 8
->Sau khi sắp xếp : -1 0 1 3 5 6 8 9Để trong thẻ code thì mất một đoạn code, nên để trong PHP code vậyMã nguồn PHP:#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "math.h"
#define size 100
void main()
{
int n, A[size];
int temp;
int i,j;
printf("Nhap n: ");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Nhap mang: ");
scanf("%d",&A[i]);
}
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(A[i]>A[j]){
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
}
for(i=0;i<n;i++){
printf("%d",A[i]);
}
}
Lần sửa cuối bởi Lá Lúa, ngày 31-10-2010 lúc 09:13 AM.
Bài tiếp theo nhé ^^
Viết chương trình nhập vào một số nguyên và kiểm tra số đó có phải là số nguyên tố hay không.
Đừng dễ gật đầu vào bất cứ điều gì !!!
Không được trách ai. Nếu thấy sai chỉ tự trách mình. Hỏi thật kĩ, hiểu thật kĩ rồi hãy làm. Muốn làm nhanh thì chấp nhận có sai sót. Hãy tìm nguyên nhân, sửa chữa và lại quyết tâm hơn.
Bạn đọc lại yêu cầu đề bài của mình nha'!Đoạn code của bạn mới chỉ sắp xếp thôi chứ chưa có giải quyết vấn đề dữ liệu trùng lặp!
Tầm nhìn ta thật ngắn mà đã thấy bao thứ để làm -- Alan Turing
Xin lỗi anh nha!!!
Em không chú ý đọc kĩ đề
Code mới đây anh, suy nghĩ không ra giải pháp và thế là lên google search, và biết được 2 câu code hay mà em chưa biết:
1. if (a[i]>a[j]) a[i]^=a[j]^=a[i]^=a[j];
//nếu a[i]>a[j] thì đổi chỗ
// dùng xor bit để đổi chỗ cho nhanh, thao tác trên bit thì nhanh hơn.
2. else if (a[i]==a[j]) a[j--]=a[--n];
//nếu trùng nhau thì xóa bỏ a[j]
Code mới em ghi lại:Mã nguồn PHP:#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "math.h"
#define size 100
void main()
{
int n, A[size];
int i,j,temp;
printf("Nhap n: ");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Nhap mang: ");
scanf("%d",&A[i]);
}
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(A[i]>A[j]){
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
else
if(A[i]==A[j]){
n=n-1;
A[j]=A[n];
j=j-1;
}
}
}
for(i=0;i<n;i++){
printf("%d",A[i]);
}
}
Đừng dễ gật đầu vào bất cứ điều gì !!!
Không được trách ai. Nếu thấy sai chỉ tự trách mình. Hỏi thật kĩ, hiểu thật kĩ rồi hãy làm. Muốn làm nhanh thì chấp nhận có sai sót. Hãy tìm nguyên nhân, sửa chữa và lại quyết tâm hơn.
Mấy anh cứ code thoải mái,em thì chưa có học,nhưng chắc từ từ cũng học,cứ code code chừng em vô cop cop
"Đừng than phiền về những điều bạn chưa có.Hãy vui với những điều bạn đang có"
-- H.Stanley Judd --
......., thế thì em cứ xem đi, chưa học thì giờ học trước, cái gì không hiểu thì hỏi, có anh TH_Studio chỉ mà lo gì
Đừng dễ gật đầu vào bất cứ điều gì !!!
Không được trách ai. Nếu thấy sai chỉ tự trách mình. Hỏi thật kĩ, hiểu thật kĩ rồi hãy làm. Muốn làm nhanh thì chấp nhận có sai sót. Hãy tìm nguyên nhân, sửa chữa và lại quyết tâm hơn.
Xin lỗi anh nha!!!
Em không chú ý đọc kĩ đề
Code mới đây anh, suy nghĩ không ra giải pháp và thế là lên google search, và biết được 2 câu code hay mà em chưa biết:
1. if (a[i]>a[j]) a[i]^=a[j]^=a[i]^=a[j];
//nếu a[i]>a[j] thì đổi chỗ
// dùng xor bit để đổi chỗ cho nhanh, thao tác trên bit thì nhanh hơn.
2. else if (a[i]==a[j]) a[j--]=a[--n];
//nếu trùng nhau thì xóa bỏ a[j]
Code mới em ghi lại:Mã nguồn PHP:#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "math.h"
#define size 100
void main()
{
int n, A[size];
int i,j,temp;
printf("Nhap n: ");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Nhap mang: ");
scanf("%d",&A[i]);
}
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(A[i]>A[j]){
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
else
if(A[i]==A[j]){
n=n-1;
A[j]=A[n];
j=j-1;
}
}
}
for(i=0;i<n;i++){
printf("%d",A[i]);
}
}
Cách trên đúng rồi!Ở đây ta chỉ dùng cách đơn giản nhất thôi,còn nhiều giải thuật sắp xếp khác vô cùng nhanh.
Mình cung cấp thêm 1 đoạn code dùng các hàm có trong STL (đang ngâm cứu nên lấy ra vận dụng luôn)
Mà hình như bạn không thích dùng C++ thì phải, code bạn đều viết bằng C.Mã nguồn PHP:#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
void main()
{
vector<int> mang;
int temp;
cout << "Nhap 1 so nguyen (nhan q de thoat) : ";
while (cin >> temp)
{
mang.push_back(temp);
cout << "Nhap 1 so nguyen (nhan q de thoat) : ";
}
sort(mang.begin(), mang.end());
ostream_iterator<int, char> out (cout, " ");
copy(mang.begin() , unique(mang.begin(), mang.end()), out);
cout << endl;
}
Tầm nhìn ta thật ngắn mà đã thấy bao thứ để làm -- Alan Turing
Có 1 người đang xem chủ đề. (0 thành viên và 1 khách)



Đánh dấu