01/10/2018, 11:10
Các anh chị cho em hỏi sao code em chạy bị như vậy với
#include<iostream>
#include<conio.h>
using namespace std;
void nhapdn(int *a,int n);
void nhapdt(double *x,int b);
void nhapdn(int *a,int n,int i)
{
for (int i=1;i<=n;i++)
{
cout<<"a["<<i<<"]= ";
cin>>a[i];
}
}
void nhapdt(double *x,int b,int j)
{
for (int j=1;j<=b;j++)
{
cout<<"x["<<j<<"]= ";
cin>>x[j];
}
}
main()
{
int a[10],n,i,j,maxa,b;
double x[10],maxx;
cout<<"so phan tu cua day nguyen la: ";
cin>>n;
cout<<"so phan tu cua day thuc la: ";
cin>>b;
cout<<"nhap day so nguyen: ";
nhapdn(a,n,i);
cout<<"nhap day so thuc: ";
nhapdt(x,b,j);
for(i=1;i<=n;i++)
{
maxa=a[0];
if (a[i]>maxa)
maxa=a[i];
}
cout<<"max cua day nguyen la: "<<maxa<<endl;
for(j=1;j<=b;j++)
{
maxx=x[0];
if (x[j]>maxx)
maxx=x[j];
}
cout<<"max cua day thuc la: "<<maxx<<endl;
}
max của dãy nguyên nó lại ko ra vậy ạ

Bài liên quan
Do bạn chưa khởi tạo giá trị ban đầu cho nó đó. Nên để giá trị ban đầu là 0 nếu là số tự nhiên.
em để giá trị ban đầu của nó là bằng a[0] mà
a[0] bạn chưa khởi tạo giá trị. Nó sẽ sinh ra một giá trị không mong muốn, trong trường hợp của bạn cũng vậy.
vậy sao cái giá trị lớn nhất ở dưới lại đúng vậy ạ
Cái này là do máy sinh ra giá trị. Nếu muốn thao tác với phần tử đó chính xác thì bạn nên khởi tạo giá trị cho nó. Mình chỉ biết có vậy :((
ok cảm ơn anh nhiều ạ
Lưu ý ghi nhớ nằm lòng: “Mảng bắt đầu từ 0” (còn mấy ngôn ngữ xài 1 thì thôi bỏ qua luôn đi ) Vòng lặp for chạy từ 0 đến bé hơn
n
.Lần này bạn may mắn vì đã khai báo số phần tử cố định (10 phần tử), còn nếu không sẽ gây ra tùm lum lỗi cho coi. Bạn chưa bao giờ nhập giá trị vào phần tử thứ 0 nhưng lại gán
maxa = a[0]
Như
Hoang
đã nói thì bạn cứ sửa vậy là được.cảm ơn nhiều lắm ạ!!!
vậy nếu e muốn gán cho giá trị đầu tiên trong mảng a cho maxa thì câu lệnh thế nào ạ
e đã thử trên code của e nhưng có mỗi giá trị maxa là ko ra kết quả còn maxx vẫn ra bình thường
Đậu phộng, dòng
maxa = a[0]
là khởi tạo, ban đầu đang tạm coi số đầu tiên là số lớn nhất thì bạn phải vứt dòng đó ra ngoài for chứ.Dòng
maxx = x[0]
cũng tương tự.nó vẫn vậy anh à!!!
…
Nếu bạn lắp đoạn code trên của mình mà vẫn không được thì mình khuyên bạn là xoá hết đi, code lại từ đầu.
được rồi ạ cảm ơn anh nhiều
các anh cho e hỏi là muốn tính tổng các số trong dãy vừa nhập thì làm thế nào ạ
Sao bạn hay hỏi nhưng câu cơ bản thế này nhỉ?