30/09/2018, 20:42
Giúp mình sửa code C++ hai bài này với ạ, nó cứ báo là has stopped working ý
đề bài là
Bài 1
#include <stdio.h>A
#include <conio.h>
#include <math.h>
#define N 20
int main()
{
int i, n;
int tong=0, dem1=0, dem2=0;
int x[20];
float avg;
{
do
{
printf("Nhap so phan tu cua ma tran: ");
scanf("%d", &n);
}
while (n>N);
{
for(i=0; i<n; i++)
{
printf("
x[%d]= ", i);
scanf("%d", x[i]);
}
}
{
for(i=0; i<n; i++)
if(x[i]>10)
{
tong=tong+x[i];
dem1=dem1++;
}
avg=tong/dem1;
printf("
Tong trung binh cac phan tu lon hon 10 la: %f", avg);
}
{
for(i=0; i>n; i++)
if(x[i]%3==0)
{
dem2=dem2++;
}
printf("
Cac so chia het cho 3 la: %d", dem2);
}
}
}
Bài 2
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <malloc.h>
void nhap(float *x, int n)
{
int i;
for (i=0; i<n; i++)
{
printf("
x[%d]= ", i);
scanf("%f", (x+i));
}
}
void xuat(float *x, int n)
{
int i;
printf("
Mang vua nhap la:
");
for (i=0; i<n; i++)
{
printf("
x[%d]= %f", i, *(x+i));
}
}
void sapxeptang(float *x, int n)
{
int i, j, temp;
for (i=0; i<n; i++)
for (j=0; j<i; j++)
{
if(*(x+i)>*(x+j))
{
temp = *(x+i);
*(x+i) = *(x+j);
*(x+j) = temp;
}
}
printf("
Mang sau khi sap xep tang dan la:");
for(i=0; i<n; i++)
printf("
x[%d]= %f", i, *(x+i));
}
int main()
{
int i, n;
float *x, h, max;
max=x[0];
{
printf("
Nhap so phan tu: ");
scanf("%d", &n);
x = (float*) malloc (n*sizeof(int));
nhap (x, n);
xuat (x, n);
sapxeptang(x, n);
free(x);
}
{
printf("
Nhap vao so thuc h: ");
scanf("%f", &h);
for (i=0; i<n; i++)
{
if (x[i]<h)
{
if (max>x[i])
max=x[i];
printf("
Max= &f", max);
}
}
}
}
Bài liên quan
Bạn đưa code 2 bài, vậy bài nào bị lỗi thế?
cả hai bài ms điên chứ
Qua bài 1 thì mình thấy bạn chưa hiểu khi nào nên dùng biến toàn cục và khi nào thì dùng biến cục bộ. Bỏ bớt những cặp dấu
{}
kia điSai những lỗi rất cơ bản như nhập dữ liệu cho mảng
scanf("%d", x[i]);
P/s: Mấy bài cơ bản này bạn phải chịu khó debug là sẽ hiểu được vấn đề.
b có thể sửa hộ mình được k? tại vì mình ms học C thôi hơn nữa bọn mình cũng không hẳn là chuyên về C nên thực ra mình cũng không có ý định học sâu hơn
Bạn đang học Đại học hả? Theo mình thì bạn nên dùng nhiều hàm con sẽ đỡ rối hơn, cụ thể là 1 hàm để nhập mạng.
Đây là code mình hướng dẫn bài 1 nhé, có gì bạn tham khảo rồi chỉnh cho code của mình Do mình khá bận nên không thể code bài thứ 2 cũng như tìm lỗi trong code bài 1 của bạn
uk mình đang học đại học. Cảm ơn bạn nhiều nhé
No problems. Mình khuyến khích bạn nên học phần Thủ tục - Hàm trước rồi tới mảng sau nhé vì mảng liên qua rất nhiều tới Hàm. Thực ra Hàm không khó đâu, nó không logic như vòng lặp, bạn chỉ học để biết được cách thức của nó thôi
Mình thử sửa lỗi cho cậu bài 1, chứ không code lại bài mới. Cậu code kiểu như mới học ý, giống mình hồi trước, toàn sai cơ bản thôi , dấu { } thừa nhiều chỗ, mình xóa đi rồi:
cảm ơn c nhiều. bọn mình học mảng trước rồi ms đến hàm hơn nữa trên lớp chểnh mảng quá nên rỗng rất nhiều kiến thức
Gợi ý: Nếu rãnh học thêm về C của anh @ltd nhé. Anh là lập trình viên chuyên nghiệp nên không phải lo dư hoặc thiếu kiến thức. Còn việc trên lớp bạn cứ học bình thường
Link: https://www.youtube.com/playlist?list=PLyiioioEJSxHr5X8RNY3QXUGcjzeZeI7l
Chúc cậu thành công!
cảm ơn c nhiều lắm ý nếu có thể c có thể sửa luôn cho mình bài 2 đc k, tự tớ tìm tớ chẳng biết sai chỗ nào cả
đa tạ
Dỗi nên ngồi sửa luôn bài 2, sai cũng kha khá , chúc cậu học tốt
cảm ơn c nhiều hi hi
hôm nay tớ ms chạy thử cái c sửa nhưng mà nó vẫn bị lỗi ở đâu ý. c thử chạy trên máy c xem có đc k, hay máy tớ có vấn đề ???
Mình chạy lại vẫn đúng mà, bài 2 ấy, mình chạy bằng Dev C++. Cậu chạy bị lỗi ở đâu, chụp ảnh hay nói chi tiết đi mình mới biết chứ
t sửa hết lỗi rồi chạy mà nó vẫn thế này c ạ
code sau khi sửa của t đây
chưa cấp phát mảng x thì lấy đâu ra phần tử đầu tiên mà gán cho max?
Ở bài 2 dùng malloc hoặc calloc cấp phát bộ nhớ cho mảng x đã bác ơi,chưa cấp phát mà đã truy nhập thế kia bị core dumped là phải