bạn quách tỉnh quá, thanks nhé :))
Các thao tác cơ bản với mảng một chiều
code baif taapj
#include<iostream>
using namespace std;
int main()
{
double max = 0;
double hs[30];
int j = 0;
for (int i = 0; i <= 29; i++)
{
cout << "Nhap vao phan tu thu " << i + 1 << endl;
cin >> hs[i];
if (max < hs[i])
{
max = hs[i];
j = i;
}
else
;
}
cout << "Phan tu lon nhat la "<<max << endl;
cout << "Phan tu do o vi tri thu " <<j+1 << endl;
return 0;
}
Bài 3 của mình đây mong có cao kiến :D.
#include <iostream>
#define MAX 100
using namespace std;
int main()
{
int32_t A[MAX];
int32_t N = 7;
//Khoi tao gia tri trong mang.
for (int32_t i = 0; i <= N - 1; i++)
{
cout << "A[" << i << "]: ";
cin >> A[i];
}
///
for (int32_t i = 0; i<N - 1; i++)
{
for (int32_t k = i + 1; k < N; k++)
{
if (A[k] == A[i])
{
for (int32_t j = k; j < N - 1; j++) {
A[j] = A[j + 1];
}
N--;
k--;
}
}
}
//Xuat mang:
for (int32_t i = 0; i <= N-1 ; i++)
{
cout << A[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
#include <iostream>
#define MAX 100
using namespace std;
//prototype
void nhapMang(int a[], int &n);
void xuatMang(int a[], int n);
void daoNguocMang(int a[], int n);
void tongChan(int a[], int n);
void tongLe(int a[], int n);
void trungLap(int a[], int n);
//main
int main(){
int n;
int a[MAX];
do
{
cout << "Nhap n : ";
cin >> n;
} while (n < 0 || n > 100);
//nhap mang
nhapMang(a, n);
//xuat mang
xuatMang(a, n);
//dao nguoc mang
daoNguocMang(a, n)
//tong chan tong le
tongChan(a, n);
system("pause");
return 0;
}
//build prototype
void nhapMang(int a[], int &n){
for (int i = 0; i < n; i++)
{
cout << "a[" << i << "]=" << " ";
cin >> a[i];
}
}
void xuatMang(int a[], int n){
for (int i = 0; i < n; i++)
{
cout << " " << a[i] <<" ";
}
cout << endl;
}
//Dao nguoc mang
void daoNguocMang(int a[], int n){
for (int i = 0; i < n; i++)
{
int t = n - 1 - i;
int temp = a[i];
a[i] = a[t];
temp = a[t];
}
cout << endl;
}
void tongChan(int a[], int n){
int tongChan = 0;
int tongLe = 0;
for (int i = 0; i < n; i++)
{
if (a[i] % 2 == 0)
{
tongChan += a[i];
}
else if (a[i] % 2 != 0)
{
tongLe += a[i];
}
}
cout << "Tong Phan Tu Chan La :" << tongChan << endl;
cout << "Tong Phan Tu Le La :" << tongLe << endl;
cout << endl;
}
Code của mình đây nè bạn
Hàm đảo ngược mảng của bạn sai rồi , phải như thế này nè:
void daoNguocMang(int a[], int n)
{
for (int i = 0; i < n / 2; i++)
{
int t = n - 1 - i;
int temp = a[i];
a[i] = a[t];
a[t] = temp;
}
cout << endl;
}
Trong hàm main bạn gọi hàm daoNguocMang trước nha, sau đó mới tới xuatMang, cụ thể là:
//main
int main()
{
int n;
int a[MAX];
do
{
cout << "Nhap n : ";
cin >> n;
}
while (n < 0 || n > 100);
//nhap mang
nhapMang(a, n);
//dao nguoc mang
daoNguocMang(a, n);
//xuat mang
xuatMang(a, n);
//tong chan tong le
tongChan(a, n);
//system("pause");
return 0;
}
Good luck!
PS: Bạn tìm hiểu cách post code vào markdown nha, để dễ nhìn hơn
Cảm ơn bạn nhé
Bạn có thể dùng hàm swap để hoán đổi 2 số, nằm trong thư viện algorithm
Hàm daoNguocMang có thể thế này:
void daoNguocMang(int a[], int n)
{
for (int i = 0; i < n / 2; i++)
{
swap(a[i], a[n - 1 - i];
}
cout << endl;
}
Nhớ #include <algorithm>
nha
cài hàm swap này mình chưa được học trên trường luôn :d . Cảm ơn bạn nhé . Mà bạn có thể nói rõ hơn về hàm swap được không !!! trước h mình chưa sử dụng hàm này bao giờ
Hàm swap có cả trong thư viện utility
nên bạn #include <utilily>
cũng được
Hàm swap cần 2 tham số, cho nên khi sử dụng bạn cần truyền vào 2 tham số có kiểu dữ liệu bất kỳ (nhưng cả 2 phải cùng kiểu)
Nó sẽ hoán đổi giá trị của 2 tham số được truyền.
Ví dụ:
#include <algorithm>
#include <iostream>
int main()
{
int a = 1, b = 2;
swap(a, b);
std::cout << "a = " << a << std::endl;
std::cout << "b = " << b << std::endl;
return 0;
}
Chương trình trên sẽ in ra a = 2
và b = 1
Nó cũng có thể hoán đổi nguyên cả 1 mảng (chỉ số của 2 mảng phải giống nhau, tham số được truyền là tên của 2 mảng)
Ví dụ:
#include <algorithm>
int main()
{
int foo[4]; // foo: ? ? ? ?
int bar[] = {10,20,30,40}; // bar: 10 20 30 40
std::swap(foo,bar); // foo: 10 20 30 40 bar: ? ? ? ?
return 0;
}
Ngoài ra còn có các hàm khác là biến thể của hàm swap
như swap_ranges
và iter_swap
Good luck!
- Dòng 1: for (int32_t i = N - 2; i >= insert_position; i–)
Lúc này n=6 rồi bạn => i=4
- Dòng 2:int32_t after_i = i + 1;
After i sẽ bằng 4 + 1 là 5…
- Dòng 3: arr[after_i] = arr[i];
có nghĩa là `arr[5] = arr[4]
arr[5] chính là vị trí thứ 6 được thêm vào.
#define MAX_SIZE = 100;
//.........
int32_t arr[MAX_SIZE];
Ai giúp mình giải thích chỗ này với, tại sao sau 100 không phải số phần tử của mảng mà lại là N
MAX_SIZE gọi là số phần tử tối đa, hay là sức chứa của array, còn N là số phần tử thực của mảng
Cũng giống như xe, ví dụ sức chứa tối đa của xe khách là 45 chỗ nhưng không phải lúc nào cũng có 45 khách trên xe.
cho em hỏi cái tìm kiếm phần tử trong tên: em nhập ‘\n’ sao nó không tìm thấy ạ ?
Lần sau hỏi ở mấy topic kiểu này thì nên quote lại đoạn code ở #1 hay post code bạn đã làm.
vâng ạ ! em cảm ơn anh !
Bài 1 của mình, mình mới học được 4 ngày thôi, mong mọi người cho ý kiến
#include <iostream>
using namespace std;
//dao nguoc mang
int main()
{
int mang[] = { 2,6,5,7,9,1,3 };
int N = sizeof(mang) / sizeof(mang[0]);
cout << "mang co " << N << " phan tu:" << endl;
for (int x = 0; x <= N - 1; x++)
{
cout << mang[x] << " ";
}
cout << endl;
for (int x = 0; x <= N - 1; x++)
{
if (x <= N - 1 - x)
{
int y = mang[x];
mang[x] = mang[N - 1 - x];
mang[N - 1 - x] = y;
}
}
cout << endl << "dao nguoc mang:" << endl;
for (int x = 0; x <= N-1; x++)
{
cout << mang[x] << " ";
}
cout << endl;
system("pause");
return 0;
}
Baì tập 2:
#include <iostream>
using namespace std;
#define max 100
int main()
{ //khai bao
cout << "chuong trinh so sanh tong cac so nguyen chan va tong cac so nguyen le !" << endl;
cout << "chuong trinh chi nhan cac so nguyen lon hon 0 va be hon 100 !!" << endl;
cout << "chuong trinh se ket thuc khi nhap so 0 !!!\n" << endl;
int songuyen[max], x = 0;
//nhap so nguyen
cout << "nhap so nguyen: " << endl;
for (x = 0; x <= max - 1; x++)
{
cin >> songuyen[x];
if (songuyen[x] < 0 || songuyen[x]>=100)
{
do
{
cout << "chi dc nhap so nguyen co 2 chu so !!!" << endl;
cout << "nhap lai so nguyen: "; cin >> songuyen[x];
} while (songuyen[x] < 0 || songuyen[x]>=100);
}
if (songuyen[x] == 0)
{
break;
}
}
system("cls");
//thong ke
int sochan[max], sole[max], a = 0, b = 0, tongchan = 0, tongle = 0;
cout << "Ban da nhap " << x << " so nguyen:\n" << endl;
for (int y = 0; y <= x - 1; y++)
{
cout << y + 1 << "\t" << songuyen[y];
if (songuyen[y] % 2 == 0)
{
sochan[a] = songuyen[y];
cout << "\tsochan\n" << endl;
tongchan = sochan[a] + tongchan;
a++;
}
else
{
sole[b] = songuyen[y];
cout << "\tsole\n" << endl;
tongle = sole[b] + tongle;
b++;
}
}
//tong
cout << "tong cac so chan la: " << tongchan << endl;
cout << "tong cac so le la: " << tongle << endl;
//so sanh
if (tongchan > tongle)
{
cout << "tong cac so chan lon hon tong cac so le." << endl;
}
else if (tongchan == tongle)
{
cout << "tong cac so chan bang tong cac so le." << endl;
}
else
{
cout << "tong cac so chan be hon tong cac so le." << endl;
}
system("pause");
return 0;
}
#include <iostream>
using namespace std;
#define max 100
int main()
{
cout << "chuong trinh loc bo nhung so trung lap" << endl;
cout << "chuong trinh chi nhan so nguyen co 1 chu so" << endl;
cout << "chuong trinh se ket thuc khi nhap so 0\n" << endl;
int songuyen[max], ktrung[max], x, a = 0;
for (x = 0; x < max; x++)
{
cout << "nhap so nguyen " << x + 1 << ": "; cin >> songuyen[x];
if (songuyen[x] < 0 || songuyen[x] >= 10)
{
do
{
cout << "chuong trinh chi nhan so nguyen co 1 chu so" << endl;
cout << "nhap lai so nguyen " << x + 1 << ": "; cin >> songuyen[x];
} while (songuyen[x] < 0 || songuyen[x] >= 10);
}
if (songuyen[x] == 0)
{
break;
}
}
system("cls");
//
cout << "ban da nhap " << x << " so nguyen co 1 chu so:\n" << endl;
for (int y = 0; y <= x - 1; y++)
{
bool check = true;
cout << songuyen[y] << " ";
for (int z = 0; z < y; z++)
{
if (songuyen[y] == songuyen[z])
{
check = false;
}
}
if (check == true)
{
ktrung[a] = songuyen[y];
a++;
}
}
//
cout << "\n\nloc so trung nhau:\n" << endl;
for (x = 0; x < a; x++)
{
cout << ktrung[x] << " ";
}
cout << "\n\n";
system("pause");
}
fix lại cho chuẩn
#include <iostream>
int main() {
int arr[] = { 1, 3, 5, 7, 9, 2, 4, 8, 6 };
int N = sizeof(arr) / sizeof(int);
for (int i = 0; i < N / 2; i++)
{
int temp = arr[i];
arr[i] = arr[(N - 1) - i];
arr[(N - 1) - i] = temp;
}
for (int i = 0; i < N; i++)
std::cout << arr[i] << " ";
system("pause");
return 0;
}
Viết lại bài ba cho đẹp hơn
#include <iostream>
int main(){
int a[] = {4, 6, 2, 2, 1, 6, 9};
int N = sizeof(a) / sizeof(int);
for (int i = 0; i < N; ++i){
for (int j = i + 1; j < N; ++j){
if (a[j] == a[i]){
for (int t = j + 1; t < N; ++t) {
a[t - 1] = a[t];
}
--j;
--N;
}
}
}
for (int i = 0; i < N; ++i)
std::cout << a[i] << " ";
system("pause");
return 0;
}