PDA

View Full Version : In ra số đảo ngược trong lập trình C



taducdinh
18-06-2009, 12:32 PM
Viết chương trình cho phép: Nhập vào một số nguyên n, in ra số đảo ngược của số nguyên vừa nhập vào.
Các bác giúp em bài này với.

Loveanygirls
18-06-2009, 12:50 PM
#include<stdio.h>
#include <conio.h>
#include<math.h>
#include<stdlib.h>

/*
10. Viet chuong trinh nhap 1 so nguyen duong N tu ban phim
roi in cac chu so cua N ra man hinh theo thu tu dao nguoc.
Vi du: Nhap N = 2564, in ra 4652.
*/

int main()
{
int N=0;
printf("\nNhap vao mot con so: ");
scanf("%d",&N);
printf("\n\nSo dao nguoc: ");
while(N)
{
printf("%d",N%10);
N/=10;
}
getch();
return 0;
}

huynguyen
19-06-2009, 06:30 AM
Tại sao cứ phải nhập số là ta phải lưu trữ kiểu int? string ko được sao?

buiphong
19-06-2009, 07:35 AM
Tại sao cứ phải nhập số là ta phải lưu trữ kiểu int? string ko được sao?
Số là số, string là kiểu ký tự sao có thể coi là số đc bạn. Số thì ta có thể có đc: 10+10=20. String bạn cộng thế nào?

nguyenbinh07
19-06-2009, 09:56 AM
Số là số, string là kiểu ký tự sao có thể coi là số đc bạn

Vậy bạn nghĩ kí tự là gì? và string là kiểu ký tự?


Số thì ta có thể có đc: 10+10=20. String bạn cộng thế nào?

Thế bạn nghĩ string không cộng như thế được à?

Đề chỉ ra là nhập vào số nguyên, đâu có quy định là phải lưu kiểu số nguyên hay string? với lại một bài toán người ta chỉ quan tâm đến output, đâu quan tâm mình làm như thế nào? miễn là tối ưu về tốc độ và kết quả chính xác là được.

buiphong
19-06-2009, 03:15 PM
Bạn thử viết chương trình bằng kiểu string của bạn đi. Không dùng hàm để chuyển kiểu nha. Bạn viết thử xem của bạn tối ưu hơn của Loveanygirl kô. hãy chứng minh!.

Loveanygirls
19-06-2009, 03:47 PM
Ý của huynguyen và nguyenbinh là muốn tổng quát hơn, muốn in ra dãy ngược của một chuỗi bất kì. Mình muốn code cho nhanh một tý nên không để ý tới chuỗi. Mà thật ra, output tưởng như là một con số đảo ngược nhưng không phải, nó là một dãy các con số bé hơn 10 được in liền nhau.
Trên forum có nhiều bài đảo chuỗi rồi! Còn đảo chuỗi rồi trả về giá trị của chuỗi ngược (kiểu number) thì viết hơi mệt, nhưng mò một hồi chắc được mà.

buiphong
19-06-2009, 04:16 PM
ok, e hiểu. Thế thì vấn đề ở đây là bài tập thầy cho hay chỉ là sử dụng ở đâu đó, kô phải bài tập.

nguyenbinh07
19-06-2009, 10:18 PM
Bạn thử viết chương trình bằng kiểu string của bạn đi. Không dùng hàm để chuyển kiểu nha. Bạn viết thử xem của bạn tối ưu hơn của Loveanygirl kô. hãy chứng minh!.


#include <stdio.h>
#include <string.h>

int main()
{
char str[256];

printf("Nhap vao mot so: ");
scanf("%s", str);
printf("So dao nguoc: ");
for (char i = (strlen(str) -1); i >= 0; --i)
printf("%c", str[i]);

return 0;
}

1. Code này có thể đảo ngược 1 số có chiều dài 254 chữ số trong khi int cao nhất là 10 chữ số (unsigned :D)
2. Chạy nhanh hơn vì không phải tính nhân chia gì cả



#include <iostream>
#include <string>
using namespace std;

int main()
{
string str;

cout << "Nhap vao mot so: ";
getline(cin, str);
cout << "So dao nguoc: ";

for (signed int i = str.length() - 1; i >= 0; --i)
cout << (char) str[i];
return 0;
}


Code này cũng không nhân chia gì hết

buiphong
20-06-2009, 12:13 AM
Đầu vào bạn là gì? Bài toán nói nhập vào gì? đầu vào của bạn là chuỗi.

meoconlongvang
20-06-2009, 12:19 AM
Đầu vào bạn là gì? Bài toán nói nhập vào gì? đầu vào của bạn là chuỗi.

Bạn đừng quá máy móc như thế. Khi bạn nhập một con số ví dụ 1234 thì có phải bạn đánh vào 4 ký tự '1', '2', '3', '4' hay không ? Trong bộ đệm bàn phím sẽ lưu trữ chuỗi "1234" và hàm scanf sẽ tùy vào chuỗi định dạng mà convert thành kiểu số.

Cold_boy
20-06-2009, 12:28 AM
Mình nghĩ phương pháp in ra theo kiểu ký tự không ổn, ít nhất là ký tự thì không thể tính toán được. Đây là code in ra số đảo ngược của mình:



#include<iostream>
using namespace std;
int main()
{
int n;
cout<<"nhap vao so n"<<endl;
cin>>n;
int a[10];
int t=-1;
while(n>0)
{
t++;
a[t]=n%10;
n=(n-a[t])/10;
}
int m=0;
int x=1;
for(int i=t;i>=0;i--)
{
m=m+a[i]*x;
x=x*10;
}
cout<<" so dao nguoc cua n la: "<<m<<endl;
system("pause");
}

khanhquangtri
12-07-2009, 08:22 AM
Nếu thay đề bài trên lại là :
nhập vào 1 số nguyên và dáo số đó lại thi sao. số đảo lại là 1 số chứ không phải dáy các số như trên.
vidu: so 123 dổi 321 khi so sánh 2 số này thi được 321>123 ?

SomethingWrong
15-07-2009, 12:21 AM
Tui nghĩ dạng bài này phải làm trên chuỗi mới tổng quát được.
Cách chia lấy dư rồi cộng lại của Cold_boy sẽ sai nếu đầu vào là một số n "bình thường thôi": 100
Còn chia lấy dư mà in ra liền thì sẽ sai nếu đầu vào là chuỗi số: 001.

laudaicat
15-07-2009, 10:57 AM
thế này là ổn nhé, muốn thay đổi sô hay string tùy ý nhá





#include "stdafx.h"
#include <iostream>

using namespace std;


int main(int argc, char* argv[])
{
char sInPut[10];
cout<<"Moi nhap so: ";
cin>>sInPut;

int len,iIn,iOut=0;
len = strlen(sInPut);
iIn = atoi(sInPut);

for(int x=0;x<len;x++)
{
iOut = (iOut*=10) + iIn % 10;
iIn /= 10;
}

printf("Length: %i, String Input: %s, Int Output: %i\n\n",len,sInPut,iOut);



return 0;
}


neu thay bang so thi sua nhu sau


while(iIn!=0)
{
iOut = (iOut*=10) + iIn % 10;
iIn /= 10;
}

truongdung_0502
30-08-2009, 06:44 PM
#include<iostream.h>
void main()
{
int n=0;
cout<<"Nhap so n : ";
cin>>n;
while(n!=0)
{
cout<<" Vay so dao nguoc cua ban la : "<<n%10<<n/10<<endl;

system("pause");
}


}

iamme22021990
30-08-2009, 09:20 PM
Thứ nhất mọi việc trên đời này đều có tính tương đối.
Tại sao ta không nghĩ thoáng hơn 1 chút.

Ngôn ngữ hay gì biểu cảm không phản ánh đúng 100% toàn bộ suy nghĩ của 1 con người.

Theo mình câu hỏi này là nói về thao tác và kết quả nhập xuất trên màn hình chứ không quan trọng bạn code như thế nào, kiểu dữ liệu là string hay number đâu có quan trọng

Bạn nhập vào 1 số có nghĩa là bạn đánh các phím số 1 2 3 ........ trên bàn phím và màn hình sẽ xuất ra kết quả đảo ngược có vậy thôi.

1 câu nói ra bạn có thể bóp méo đi nhưng mà không sợ người khác bắt phạt.

tranhuuhai
10-10-2009, 06:02 PM
ví dụ :đảo ngược một số nguyên

Vaanres
10-10-2009, 09:06 PM
Mình viết theo cách nghĩ của mình . thấy chạy cũng ổn , các bạn thấy mình viết kiểu này chạy có vấn đề gì không .


// dao nguoc chuoi
#include <iostream.h>
#include <conio.h>

float a[5000];
void nhap(int n)
{
for(int i=0;i<n;i++)
{
cout << "[" << i << "]";
cin >> a[i];
}
}
void daonguoc(int n)
{
int i,j;
for ( i=0,j=n-1;i<j;i++,j--)
{
int tam =a[i];
a[i] = a[j];
a[j] = tam;
}
}
void xuat(int n)
{
for(int i=0;i<n;i++)
{
cout << a[i];
}
}

void main ()
{
int n=0;
cout << " Nhap so phan tu : ";
cin >> n;
nhap(n);
daonguoc(n);
xuat(n);
getch();
}

trunglele
20-10-2009, 09:30 PM
Bài này mình làm sau khi xuất ra thì số đảo ngc là 1 giá trị


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long sodaongc (long n);
void main()
{
long a;
do
{
system("cls");
printf("Nhap 1 so: ");
scanf("%d",&a);
}while (a<0);
printf("So dao nguoc:%ld \n",sodaongc(a));
system("pause");
}
long sodaongc (long n)
{
int scs=0;long dem=n;
while (dem!=0)//Tinh so chu so
{
dem%10;
scs+=1;
dem/=10;
}
long sdn=0;
while (n!=0)
/*Lay phan du x 10^scs-1
VD:n=1976 %10=6 lay 6*10^(4-1)=6000,int n/10=197
n=197 %10=7 lay 7*10^(3-1)=700 ,int n/10=19
n=19 %10=9 lay 9*10^(2-1)=90 ,int n/10=1
n=1 %10=1 lay 1*10^(1-1)=1 ,int n/10=0
Lay sdn=6000+700+90+1=6791 */
{
sdn+=(n%10)*(pow(float(10),scs-1));
scs--;
n/=10;
}
return sdn;
}

thocon_kute_91
22-10-2009, 08:48 PM
hi! xem thử bài ni tui làm nha!có gì xin các tiền bối chỉ giáo thêm cho cho em!



#include<stdio.h>
#include<string.h>
#include<alloc.h>
#include<conio.h>
char *dnchuoi(char *s)
{
char *temp, i;
i=0;
temp = (char *)malloc(strlen(s)+1);
while (i<strlen(s))
*(temp+i) = *(s + strlen(s) - i++ - 1);
*(temp+i) = 0;
return temp;
}
void main()
{
char kytu[100];
char *s;
printf("nhap vao ky tu:");
fflush(stdin);
gets(kytu);
printf("\n chuoi ban dau la: %s", kytu);
s = dnchuoi(kytu);
printf("\n Chuoi dao nguoc la: %s", s);
getch();
getch();
}

onminh
23-10-2009, 12:21 PM
1. Code này có thể đảo ngược 1 số có chiều dài 254 chữ số trong khi int cao nhất là 10 chữ số (unsigned :D)
2. Chạy nhanh hơn vì không phải tính nhân chia gì cả



#include <iostream>
#include <string>
using namespace std;

int main()
{
string str;

cout << "Nhap vao mot so: ";
getline(cin, str);
cout << "So dao nguoc: ";

for (signed int i = str.length() - 1; i >= 0; --i)
cout << (char) str[i];
return 0;
}


Code này cũng không nhân chia gì hết

Nếu nhập xâu ký tự thì code này còn không dùng vòng for.

#include <iostream.h>
#include <string.h>
void main()
{ char s[254];
cout <<"Nhap day cac con so: "; cin.getline(s,254);
cout <<"Da dao nguoc: " << strrev(s) << endl;
}

honeydl33
14-12-2009, 09:34 PM
//////////ngan gon dep
#include <iostream.h>
void main()
{
int n;
cin>> n;
while (n>0)
{
cout << n%10;
n=n/10;
}
}

Berberin
15-12-2009, 10:47 AM
X...ôi nổi quá ta :)), cho tớ góp vui tí :))


#include <iostream>

using namespace std;

void toetoe(){
char x;
cin.get(x);
if (x != '\n'){
toetoe();
cout<<x;
}
}

int main(){
toetoe();
return 0;
}

shinichith25
28-12-2009, 11:47 AM
híc!.Các bác phải xác định mục đích của đầu bài là gì thì sử dụng cho đúng khiểu.

nhtera
08-04-2010, 02:55 AM
Code c:
Cách này cũng được nè :D


#include <stdio.h>
#include <conio.h>
main()
{
long n;
do{
printf("Nhap n=");
scanf("%d",&n);
}while (n<=0);
while (n%10==0)
n=n/10;
while (n!=0)
{
printf("%d",n%10);
n=n/10;
}
getch();
}

langman
08-04-2010, 11:16 AM
X...ôi nổi quá ta :)), cho tớ góp vui tí :))


#include <iostream>

using namespace std;

void toetoe(){
char x;
cin.get(x);
if (x != '\n'){
toetoe();
cout<<x;
}
}

int main(){
toetoe();
return 0;
}



code này kute phết nhỉ
thx, đã share

cho langman ăn cắp bản quyền thành như này nhé he he he:


#include <iostream>
using namespace std;

void xengxeng()
{
char x=cin.get();
x!=0xa?xengxeng(),printf("%c",x):NULL;
}

void main()
{
xengxeng();
}

Doreamon9x
09-05-2010, 09:49 AM
Đây là theo mảng:


#include <stdio.h>
#include <conio.h>
void main()
{
clrscr();
int a[50],i,n;
printf("Nhap vao so phan tu: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Phan tu thu %d: ",i+1);
scanf("%d",&a[i]);
}
printf("\nCac so vua nhap: ");
for(i=0;i<n;i++){
printf("%d " ,a[i]);
}
printf("\nCac so dao nguoc: ");
for(i=n-1;i>=0;i--)
printf("%d ",a[i]);

getch();
}

cab8nwf6hgpc
10-05-2010, 01:42 AM
Em đóng góp chút:
- Không cần nhân chia phức tạp
- Mà vẫn có thể dùng cho cộng trừ nhân chia được
- Chỉ mỗi tổi lúc đầu em nói nhập số nhưng lại nhập chuỗi (:-)??


#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int t;
char s[10],a[10];
int i,j,n;
printf("Nhap vao so n : ");
gets(s);
n=strlen(s);
printf("\nn= %d\n",n);
for(i=n-1,j=0;i>=0;i--,j++)
a[j]=s[i];
t=atoi(a);
printf("\nSo sau khi dao : %d",t);
printf("\nSo sau khi dao +10 = %d",t+10); //In thu cong voi 10
getch();
}

Diem_Vuong
10-05-2010, 08:21 AM
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char s[30];
int len,i;
puts("nhap vao chuoi :");
gets(s);
len=strlen(s);
for(i=len;i>=0;i--)
printf("%c",s[i]);
getch();
}

cái này thì đối với chuỗi :D

robe007
10-05-2010, 10:56 PM
#include <stdio.h>
#include <string.h>

int main()
{
char str[256];

printf("Nhap vao mot so: ");
scanf("%s", str);
printf("So dao nguoc: ");
for (char i = (strlen(str) -1); i >= 0; --i)
printf("%c", str[i]);

return 0;
}

1. Code này có thể đảo ngược 1 số có chiều dài 254 chữ số trong khi int cao nhất là 10 chữ số (unsigned :D)
2. Chạy nhanh hơn vì không phải tính nhân chia gì cả



#include <iostream>
#include <string>
using namespace std;

int main()
{
string str;

cout << "Nhap vao mot so: ";
getline(cin, str);
cout << "So dao nguoc: ";

for (signed int i = str.length() - 1; i >= 0; --i)
cout << (char) str[i];
return 0;
}


Code này cũng không nhân chia gì hết
bạn viết chính xác oy, và nếu để sử dụng con số mà sau khi đảo ngược đó thì có phải có 1 hàm để chuyển chuỗi sang số đúng không bạn ,hình như là hàm atop() thì phải
đúng không nhỉ ,mình cũng đang tìm hiểu về chuỗi

robe007
10-05-2010, 11:12 PM
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char s[30];
int len,i;
puts("nhap vao chuoi :");
gets(s);
len=strlen(s);
for(i=len;i>=0;i--)
printf("%c",s[i]);
getch();
}

cái này thì đối với chuỗi :D
len=strlen(s)-1; ====> sao bạn lại tính lun ký tự kết thúc thế.Mình in kết quả có 1 vệt đen phía trước, nên mình nghĩ nên có -1 .hehe

phannam1412
19-10-2010, 04:57 PM
hô hô, bạn buiphong càng ngày càng lý sự cùn rồi.
Đầu vào là một số nguyên n, nghĩa là chỉ chứa các ký tự (0-9) chữ không được (a-z) hoặc (A-Z).
Còn việc lưu trữ dữ liệu thì lưu bằng kiểu gì mà chả được.
Nhưng lưu bằng int thì sẽ ra kết quả sai khi n > 2^31 chữ số.
Vậy để cho kết quả luôn luôn đúng thì phải lưu bằng kiểu chuỗi rồi !

mrloveht
21-10-2010, 03:48 AM
Ai giải thích hộ mình đoạn này đc không mình mới học nên không rõ lắm

while(N)
{
printf("%d",N%10);
N/=10;
}

jimhawkins
21-10-2010, 01:02 PM
Bạn xem thử đạt yêu cầu chưa code mình nak:


#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
int i,dem=0,count=0,len;
char chuoi[100];
tt:
{
printf("\nBan hay nhap vao 1 chuoi:");
gets(chuoi);
}
len=strlen(chuoi);
if(len>80)
{
printf("\nChuoi ban nhap co do dai lon hon 80 moi nhap lai:");
goto tt;
}
for(i=0;i<len;i++)
{
if(chuoi[i]=='a')dem++;
else
if(chuoi[i]==32)count++;
}
printf("\nTrong chuoi co %d ki tu a",dem);
printf("\nTrong chuoi co %d khoang cach",count);
getch();
}

quyen1991
21-10-2010, 10:50 PM
đơn giản nhanh gọn


#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char *s;
clrscr();
puts("\n nhap so : ");
gets(s);
printf("\n so nguoc lai : %s \a",strrev(s));
getche();
}
cần output là gì thì cho thế choáng wa !!

leebinh89
04-11-2010, 02:22 PM
#include<stdio.h>
#include <conio.h>
#include<math.h>
#include<stdlib.h>

/*
10. Viet chuong trinh nhap 1 so nguyen duong N tu ban phim
roi in cac chu so cua N ra man hinh theo thu tu dao nguoc.
Vi du: Nhap N = 2564, in ra 4652.
*/

int main()
{
int N=0;
printf("\nNhap vao mot con so: ");
scanf("%d",&N);
printf("\n\nSo dao nguoc: ");
while(N)
{
printf("%d",N%10);
N/=10;
}
getch();
return 0;
}


với code này mà thêm điều kiện con số nhập tối đa có 8 chữ số thì ntn nhỉ :(|

rocky1208
13-11-2010, 02:48 PM
Tại sao cứ phải nhập số là ta phải lưu trữ kiểu int? string ko được sao?
Trong C không có kiểu string. Những kiểu built-in vô hướng trong C chỉ gồm: số nguyên, số thực. kiểu char thực chất cũng là một số nguyên (theo mã ASCII của nó), còn string là một mảng các phần tử kiểu char được kết thúc bởi ký tự NULL (\0). Code trên kia là đúng rồi đấy bạn ạ Y(:D

rocky1208
13-11-2010, 02:58 PM
anh có thể giải thích roe hơn đoạn :


while(N)
{
printf("%d",N%10);
N/=10;
}

Khối lệnh này sẽ in ra các chữ số của N bắt đầu từ hàng đơn vị. Ví dụ số n=1234
- tại vòng while đầu tiên lệnh n%10 (chia dư n 1234 cho 10) -> được số 4 in số này ra.
- sau đó lệnh n/=10 (thực ra là n=n/10). lệnh này có nhiệm vụ chia nguyên 1234 cho 10 -> được 123 rồi gán ngược trở lại n. vậy sau vòng while thứ nhất n=123.
- bước sang vòng while thứ 2 có lệnh while(n). nếu n vẫn khác 0 thì đk còn là true nên vẫn thực hiện được, vậy nó lại in ra số 3.... cú như thế sau khi nó in nốt ra số 1 rồi thì n=0, đk = false -> kết thúc vòng while

Mình chỉ nghĩ như vậy là dễ hiểu 0:)

phanvanngoc
19-04-2011, 05:07 PM
Đầu vào bạn là gì? Bài toán nói nhập vào gì? đầu vào của bạn là chuỗi.
Đề bài yêu cầu nhập số nguyên kiểm tra số đó có đối xứng hay không.

teotoni
26-04-2011, 02:30 PM
#include <stdio.h>
#include <string.h>

int main()
{
char str[256];

printf("Nhap vao mot so: ");
scanf("%s", str);
printf("So dao nguoc: ");
for (char i = (strlen(str) -1); i >= 0; --i)
printf("%c", str[i]);

return 0;
}

1. Code này có thể đảo ngược 1 số có chiều dài 254 chữ số trong khi int cao nhất là 10 chữ số (unsigned :D)
2. Chạy nhanh hơn vì không phải tính nhân chia gì cả



#include <iostream>
#include <string>
using namespace std;

int main()
{
string str;

cout << "Nhap vao mot so: ";
getline(cin, str);
cout << "So dao nguoc: ";

for (signed int i = str.length() - 1; i >= 0; --i)
cout << (char) str[i];
return 0;
}


Code này cũng không nhân chia gì hết


while(n!=0)
{
printf("%d",n%10);
n/=10;
}

Đảo ngược đã lun nhé):)T):)T):)T

quangphuit
04-01-2013, 03:19 PM
Có bác nào cho e xin đệ quy không. Em cảm ơn!

langman
04-01-2013, 05:24 PM
Có bác nào cho e xin đệ quy không. Em cảm ơn!


#include <stdio.h>
#include <conio.h>

void xengxeng()
{
char x=getchar();
x!=0xd?xengxeng(),printf("%c",x):NULL;
}

void main()
{
xengxeng();
}

quangphuit
04-01-2013, 08:22 PM
#include <stdio.h>
#include <conio.h>

void xengxeng()
{
char x=getch();
x!=0xa?xengxeng(),printf("%c",x):NULL;
}

void main()
{
xengxeng();
}

Bạn có thể cho mình xin code đệ quy đảo ngược sổ tự nhiên được không?

langman
09-01-2013, 10:00 PM
Bạn có thể cho mình xin code đệ quy đảo ngược sổ tự nhiên được không?


void InDaoNguocSoNguyenDuong(int n)
{
printf("%d",n%10);
if (n>9) InDaoNguocSoNguyenDuong(n/10);

}
void main(void)
{

InDaoNguocSoNguyenDuong(10);
system("pause");
}

bachgist
24-02-2013, 06:24 PM
Bác langman ơi. Cái này
x!=0xa?xengxeng(),printf("%c",x):NULL; của bác
phải sửa lại 0xa thành 0xd.
Bác chạy thử xem.

langman
25-02-2013, 09:49 AM
Bác langman ơi. Cái này
x!=0xa?xengxeng(),printf("%c",x):NULL; của bác
phải sửa lại 0xa thành 0xd.
Bác chạy thử xem.

cám ơn bạn, đúng rồi, tớ code ko test nên ko phát hiện ra,
hic hic, sai lầm to rồi, nguy hiểm quá

nocreate
28-02-2013, 04:27 PM
Vậy bạn nghĩ kí tự là gì? và string là kiểu ký tự?



Thế bạn nghĩ string không cộng như thế được à?

Đề chỉ ra là nhập vào số nguyên, đâu có quy định là phải lưu kiểu số nguyên hay string? với lại một bài toán người ta chỉ quan tâm đến output, đâu quan tâm mình làm như thế nào? miễn là tối ưu về tốc độ và kết quả chính xác là được.

Đảm bảo tính đúng đắn của dữ liệu, bạn cộng string xong rồi sử dụng kết quả đó tính toán mình xem nào?? tốc độ ra sao?? nhanh hơn toán tử có sẵn của C+ không??? [:-X)[:-X)[:-X)

Xử lý chuỗi là bài toán không phải ai cũng làm được, pointer hiểu chưa sâu thì đừng nên nghĩ đến xử lý chuỗi.

hitman17528
28-02-2013, 04:49 PM
Hì, mạn phép add code C++ cho trường hợp đảo ngược số tổng quát, sử dụng C++ STL

#include <iostream>
#include <sstream>
#include <string>
using namespace std;
template <typename T>
void convert(T &val)
{
ostringstream ostr;
ostr << val;
string s=ostr.str();
for(int i=s.size()-1;i>=0;i--)
cout << s[i] << "";
cout << endl;
}

int main()
{
cout << "Enter an int to reverse: ";
int a;
cin >> a;
convert(a);
return 0;
}

Với code này, bạn định nghĩa a là int,double hay string, char gì cũng được. Các bạn nhận xét giùm mình! ^^

thongk54cntt
14-04-2013, 03:01 PM
#include<stdio.h>
#include <conio.h>
#include<math.h>
#include<stdlib.h>

/*
10. Viet chuong trinh nhap 1 so nguyen duong N tu ban phim
roi in cac chu so cua N ra man hinh theo thu tu dao nguoc.
Vi du: Nhap N = 2564, in ra 4652.
*/

int main()
{
int N=0;
printf("\nNhap vao mot con so: ");
scanf("%d",&N);
printf("\n\nSo dao nguoc: ");
while(N)
{
printf("%d",N%10); // Giải thích dùm em chỗ này...
N/=10; // Và cái chỗ này..
}
getch();
return 0;
}

Cảm ơn bác nhiều...

prog10
14-04-2013, 03:27 PM
Chạy tay cái vòng lặp đó (N = 1234) là hiểu liền.

hjepsjga_94
18-05-2013, 09:34 AM
#include<stdio.h>
#include <conio.h>
#include<math.h>
#include<stdlib.h>

/*
10. Viet chuong trinh nhap 1 so nguyen duong N tu ban phim
roi in cac chu so cua N ra man hinh theo thu tu dao nguoc.
Vi du: Nhap N = 2564, in ra 4652.
*/

int main()
{
int N=0;
printf("\nNhap vao mot con so: ");
scanf("%d",&N);
printf("\n\nSo dao nguoc: ");
while(N)
{
printf("%d",N%10);
N/=10;
}
getch();
return 0;
}


2 lệnh đó để làm gì vậy bạn????

prog10
18-05-2013, 02:54 PM
2 lệnh đó để làm gì vậy bạn????
Xem post ngay trên post của bạn.

hjepsjga_94
19-05-2013, 10:49 AM
lệnh while(N) và N/=10 ấy

kimcy1992
19-05-2013, 11:38 AM
lệnh while(N) và N/=10 ấy
while(N) Khi nào phần nguyên = 0 thì kết thúc vòng lặp còn N /= 10 thì N = N /10 sau mỗi một vòng lặp. Hình như bạn không chịu tìm hiểu và học toán tử thì phải. Bó tay @@.

nguyenhappy92
14-03-2014, 09:26 PM
Cái này có lẽ dễ hiểu hơn thì phải ! Chỉ góp một phần nhỏ mong các bạn cho ý kiến

#include<stdio.h>
int daoso(int x);
int x;
void main()
{
int n;
scanf("%d", &n);
int t=daoso(n);
printf("%d", t);

}
int daoso(int x)
{
int s = 0;
int a;
while (x != 0)
{
a = x % 10;
x = x / 10;
s = s * 10 + a;
}
return s;
}

emgaimap
14-03-2014, 09:34 PM
c nó cung cấp hàm đảo ngược 1 chuỗi reverse trong thư viện ctype mà