PDA

View Full Version : Cần giúp 1 số bài tập C++



darkdevils
23-11-2009, 20:38
Tình hình là em đang có 1 số bai tập C++ nhưng ko bít làm như thế nào, các anh chỉ giúp em với:D :
1.Đếm số lượng các số nguyên tố có trong số nguyên n (dùng cấu trúc lặp)
2.Tính T=1/(1+2)+1*2/(1+2+3)+1*2*...*(n-1)/(1+2+..+n) với n là số nguyên >3 (cũng dùng lặp)
3.Tính tổng các ước số của n( Lặp)
4.Nhập vào ma trận mxn,kiểm tra xem các phần tử trong mỗi dòng của ma trận có tăn dần hay ko.
5.Nhập vào ma trận mxn, tính tổng các số nguyên tố có trong mảng.
6.Sắp xếp mảng 1 chiều: tăng dần tại vị trí lẻ.
Help me!!! :( nếu được thì pm qua mail devilsmonster@gmail.com. Thanks

lenguyenthanh
23-11-2009, 20:51
cái này chỉ dùng vòng lặp đơn giản thôi. Tự làm đê làm sai thì post lên nhờ mọi người sửa.

darkdevils
25-11-2009, 19:14
Newbee mà. Hix em mà làm được thì khỏi nhờ rồi. Chỉ cần giải thuật thôi. Hix help me. Mới học nên gà lắm.

xinloiemnham
26-11-2009, 13:10
tiện đây nhờ mọi người sửa giúp mình bài toán tính cosx sử dụng khai triển macloranh này, mình làm mãi mà chạy không đúng, oải quá :
Nhập x và sai số epsion từ bàn phím (0<epsilon<1), công thức :
http://img4.imageshack.us/img4/1716/macloranh.jpg
Kết thúc tính khi :
http://img4.imageshack.us/img4/5411/macloranh1.jpg

#include<stdio.h>
#include<conio.h>
#include<math.h>
int gt(int n)
{
int i,t=1;
for(i=1;i<=n;i++)
t*=i;
return t;
}
main()
{
float x,esp,s=0,cosx=0;
int i=0;
printf("x=");
scanf("%f",&x);
printf("\nepsilon=");
scanf("%f",&esp);
do
{
s=pow(x,2*i)*pow(-1,i)/gt(2*i);
i++;
cosx+=s;
}
while(fabs(s)>esp);
printf("\ncosx=%2.4f",cosx);
getch();
}

beenkens
26-11-2009, 22:25
help em bai nè tý máy anh ơi
viết phương trình nhập vào mảng dãy số có n phần tử.
1, tìm số chản lớn nhất và số lẻ nhỏ nhất
2, sắp xếp lại dãy ssoos trên theo chiều tăng dần và loại bỏ các phần tử trùng nhau ( chỉ giữ lại 1 giá trị trong số đó)
yêu cầu nêu nghệ thuật toán bằng ngôn ngữ tự nhiên , viết thuật toán bằng sơ đồ khối
___________________
mong các anh cho em kết quả sớm
em đang cần biết dạng bài nè :)

keke23
27-11-2009, 01:34
help em bai nè tý máy anh ơi
viết phương trình nhập vào mảng dãy số có n phần tử.
1, tìm số chản lớn nhất và số lẻ nhỏ nhất
2, sắp xếp lại dãy ssoos trên theo chiều tăng dần và loại bỏ các phần tử trùng nhau ( chỉ giữ lại 1 giá trị trong số đó)


Cái này bạn chỉ cần dùng 2 hoặc 3 vòng for là được thôi.
1. Nếu số đứng trước là số chẵn lớn hơn số chẵn đứng sau thì đẩy dần nó về cuối hàng. In phẩn tử cuối ra là OK. Số lẻ nhỏ nhất cũng tương tự thế
2. Kiểm tra kí tự thứ i với các kí tự trước nó. Nếu trùng thì đẩy nó về sau, chiều dài mảng trừ 1.
Bạn cố gắng tự code nhé! ^^

beenkens
27-11-2009, 15:37
ọc thank bạn
nhưng có ai có thể viết dùm code cho mình được không
mình mới học nên cũng hẽm hiểu
___________________________________

darkdevils
29-11-2009, 19:14
Thắc mắc của mình vẫn chưa được đáp ứng. Hix!!! Cóa ai giúp mình ko???

gaconbietgay
29-11-2009, 20:24
1.Đếm số lượng các số nguyên tố có trong số nguyên n (dùng cấu trúc lặp)


/*
dem so nguyen to tu 1 den n
*/
#include <math.h>
#include <conio.h>
#include <iostream.h>
int main(){
int n;
cout<<"n = ";
cin>>n;
int counter=0;
for(int i= 1; i<=n; i++){
for (int j = 2; j <= sqrt(i); j++){
if (i % j == 0) counter++;
}
}
cout<<"Tu 1 den "<<n<<" co "<<counter<<" so nguyen to."<<endl;
return 0;
}



[=========> Bổ sung bài viết <=========]

2.Tính T=1/(1+2)+1*2/(1+2+3)+1*2*...*(n-1)/(1+2+..+n)
với n là số nguyên >3


/*
tinh T=1/(1+2)+1*2/(1+2+3)+1*2*...*(n-1)/(1+2+..+n)
*/
#include <conio.h>
#include <iostream.h>

int main(){
int n;
do{
cout<<"Nhap n: ";
cin>>n;
}while(n < 3);
double T= 0, Tu, Mau;
int i=0;
do{
i++;
Tu= 1; Mau= 0;
for(int j= 1; j<i; j++)
Tu*= j;
for(int k=1; k<=i; k++)
Mau+= k;
cout<<Tu<<"/"<<Mau<<" + ";
T+= Tu/Mau;
}while(i < n);
cout<<endl<<"T = "<<T;
return 0;
}



[=========> Bổ sung bài viết <=========]

3.Tính tổng các ước số của n


/*
Tinh tong cac uoc cua n
*/
#include<iostream.h>
#include<conio.h>

int main(){
int n;
cout<<"nhap n: ";
cin>>n;
int i=1, counter=0, sum=0;
do{
if(n%i == 0){
sum+= i;
counter++;
}
i++;
}while(i <= n/2 );
cout<<endl<<n<<" co "<<counter<<" uoc."<<endl;
cout<<"Tong cac uoc do la: "<<sum;
return 0;
}

4.Nhập vào ma trận mxn,kiểm tra xem các phần tử trong mỗi dòng của ma trận có tăng dần hay ko.


/*
nhap mang mxn
kiem tra xem cac phan tu trong mot hang co la day tang ko
*/
#include <conio.h>
#include <iostream.h>
bool kt(int *, int);
int main(){
int arr[20][20];
int m, n;
cout<<"m = ";
cin>>m;
cout<<"n = ";
cin>>n;
for(int i=0; i<m; i++){
for(int j=0; j<n; j++){
cout<<"Array["<<i+1<<", "<<j+1<<"] = ";
cin>>arr[i][j];
}
}
for(int i=0; i<m; i++)
if(kt(arr[i], m)) cout<<"Hang thu "<<i+1<<" la day tang dan."<<endl;
else cout<<"Hang thu "<<i+1<<" khong la day tang."<<endl;
return 0;
}
bool kt(int *a, int n){
int i=0;
int ok;
do{
if(a[i] < a[i+1]){
i++;
ok= 1;
}
else{
ok= 0;
break;
}
}while(i < n-1);
return ok;
}

còn 2 bài darkdevils tự làm nhá. cứ code đi, ko chạy thì lại post lên gàcon bug cho

darkdevils
04-12-2009, 21:17
Muốn thanks nhưng chẳng bít nút thanks chỗ nào. thôi thanks bằng mồm vậy. Thanksssssssssssssssssssssssssssssssssssss

darkdevils
06-12-2009, 20:05
Anh ơi bài 1 ( đếm số nguyên tố ) đó ý em ko phải như vậy mà ý bài này là ví dụ cho số nguyên 12345 thì sẽ xuất ra 3 số nt là 2 3 5 chứ ko phải như bài anh làm. help nha

anhtai116
06-12-2009, 21:46
[QUOTE=darkdevils;1908567]Tình hình là em đang có 1 số bai tập C++ nhưng ko bít làm như thế nào, các anh chỉ giúp em với:D :
1.Đếm số lượng các số nguyên tố có trong số nguyên n (dùng cấu trúc lặp)


#include<iostream.h>
#include<conio.h>
int kiemtra(int n)
{
if(n<2)
return 0;
else
for(int i=2;i<n;i++)
{
if(n%i==0)
{
return 0;break;
}
else
return 1;
}
}
void main()
{
clrscr();
int n;
int dem=0;
int m=0;
cout<<"nhap so nguyen n:";
cin>>n;
while(n!=0)
{
m=n%10;
if(kiemtra(m)==1)
dem++;
n=n/10;
}
cout<<"\n Trong so nguyen n="<<n<<" co"<<dem<<"chu so nguyen to";
getch();
}



còn nếu bạn muốn xuất luôn các chữ số nguyên tố đó ra thì bạn chịu khó làm thêm vài hàng nữa

int n,a[100];
int dem=0;
int m=0;
int i=0;
cout<<"nhap so nguyen n:";
cin>>n;
while(n!=0)
{
m=n%10;
if(kiemtra(m)==1)
{
dem++;
a[i]=m;
i++;
}
n=n/10;
}
cout<<"\n Trong so nguyen n="<<n<<" co"<<dem<<"chu so nguyen to";
for(i=0;i<dem;i++)
cout<<a[i];

darkdevils
12-12-2009, 20:00
Thanks rất nhìu. Chẳng bít nói j hơn là thanks

thuongdc07
13-12-2009, 14:26
mình cần chỉ giúp bài này, mình làm hoài mà kh chạy được:
nhập vào một số nguyên dương n gồm 2 chữ số. xuất ra màn hình các kí tự '*' dạng biểu đồ ngang ứng với giá trị từng chữ số.
vd: nhập n=35, xuất
***
*****
Lưu ý là kí tự * đó phải canh lề bên phải qua trái nha!
mail của mình: thuongdc07@yahoo.com.vn

darkdevils
14-12-2009, 15:13
Còn 1 số bài nữa nè. Ráng help nha viết trên C. Học C++ nên ko bít làm:D

1.víêt chương trình nhập vào số nguyên duơng n.Liệt kê, dếm và tính tổng các ước số cũa n.
2.viết chương trình nhập mãng một chiềun phần tử gồm các số nguyên dương.Kiểm tra mảng có đối xứng hay không?
3.Viết chương trình nhập chuỗi S và kí tự(ch).Chèn kí tự(ch)vào cuối mỗi từ trong chuỗi
ví dụ: nhập:"abc gkh dfe",và kí tự "ch=x".
xuất:"abcx gkhx dfex".

binhan270
15-12-2009, 01:04
mình cần chỉ giúp bài này, mình làm hoài mà kh chạy được:
nhập vào một số nguyên dương n gồm 2 chữ số. xuất ra màn hình các kí tự '*' dạng biểu đồ ngang ứng với giá trị từng chữ số.
vd: nhập n=35, xuất
***
*****
Lưu ý là kí tự * đó phải canh lề bên phải qua trái nha!
mail của mình: thuongdc07@yahoo.com.vn

Bài này đơn giản mà bạn! Chỉ sử dụng vòng lặp for và lệnh gotoxy(x-i,y)
Bạn xem thử code viết trên C nhé!
(Code này chạy trên C 3.0 Ok! Nhưng trên C free thì ko nhận hàm gotoxy(x,y))
--------------------------------------------------
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int i,chuc,dvi,n;
do{printf("n="); scanf("%d",&n);}
while((n<11)||(n>99)); //n=11 - 99 thi se hien thi
chuc=n/10;
dvi=n%10;
clrscr();
for(i=0;i<chuc;i++) {gotoxy(20-i,1); printf("*")} /*20 la canh le phai tu vi tri 20 ve dau dong 1*/
for(i=0;i<dvi;i++) {gotoxy(20-i,2); printf("*")}
getch();
}

lenggiauit2
15-12-2009, 02:00
Bài này đơn giản mà bạn! Chỉ sử dụng vòng lặp for và lệnh gotoxy(x-i,y)
Bạn xem thử code viết trên C nhé!
--------------------------------------------------
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int i,chuc,dvi,n;
do{printf("n="); scanf("%d",&n);}
while((n<11)||(n>99)); //n=11 - 99 thi se hien thi
chuc=n/10;
dvi=n%10;
clrscr();
for(i=0;i<chuc;i++) {gotoxy(20-i,1); printf("*")} /*20 la canh le phai tu vi tri 20 ve dau dong 1*/
for(i=0;i<dvi;i++) {gotoxy(20-i,2); printf("*")}
getch();
}
while((n>11)||(n<99)); //n=11 - 99 thi se hien thi

darkdevils
15-12-2009, 19:46
thanks so lot. Dân newbee nên còn gà hehe