รบกวนถามเรื่อง DEV C++ หน่อยคะ
เกี่ยวกับการรับค่า String มาแล้ว Out put โดยนำค่าย้อนกลับจากด้านหลังมาก่อน
ตัวอย่าง
Input : abc
Output : cba
ที่ลองเขียนขั้นตอนยังไม่ทราบฟังก์ชั่นการกลับค่าตามนี้คะ
#include <stdio.h>
#include <conio.h>
main()
{
char AA[50] ;
printf("Input : ");
scanf("%s",AA);
printf("\nOutput : %s ",AA);
}
ขอบคุณมากเลยนะคะ :33:
สร้าง array ใหม่ BB[50]
แล้ววนลูปไล่เอาตัวอักษรจาก AA[50] ไปใส่ใน BB[50] แบบย้อนกลับทีละตัว
AA[1] --> BB[50]
AA[2] --> BB[49]
...
...
ลองประยุกต์เขียนเป็นโค๊ดดูครับ
เพิ่งหัดเขียนโปรแกรม ถ้าไม่จำเป็น อย่าไปใช้ฟังก์ชั่นสำเร็จเลยครับ พื้นฐานจะได้แน่นๆ :22:
บวกให้ไอ้เฒ่าแทนน้องเค้า :25:
ถึงตูจะไม่รู้เรื่องว่าพูดกันภาษาอะไร :30:
ขอบคุณ คุณ JanΣ มากนะคะที่ชี้แนวทาง
แต่ยังศึกษาไม่ถึง Array เลยคร่าาาาาา คุณ JanΣ :44: :44:
เพิ่งเริ่มศึกษามา อาจารย์ก็ให้การบ้านข้อนี้หินมากเลยคะพยายามมาตั้งแต่เมื่อวานแล้วคะ :32:
อะเรย์ จะเป็นตัวแปรหลายๆตัว เรียงยาวๆ เหมือนขบวนรถไฟครับ แต่ละโบกี้ ก็จะมีผู้โดยสาร 1 คน
เช่น ถ้าให้ รถไฟคันนี้มี 10 โบกี้ แต่ละโบกี้เก็บค่า 1,2,3,...,10 เราก็ประกาศแบบนี้
int a[10]={1,2,3,4,5,6,7,8,9,10};
ในที่นี้เหมือนเราได้ประกาศตัวแปรไว้ 10 ตัว แต่เหลือสั้นๆแค่นี้ สะดวกมั๊ยครับ ^^
ตอนนี้ตัวแปรทั้ง 10 ตัวจะอยู่ในตัวแปรอะเรย์แบบนี้นะครับ
a[0] = 1
a[1] = 2
a[2] = 3
.
.
.
a[9] = 10
จะเห็นได้ว่า ไม่มี a[10] นะครับ เพราะเราเริ่มนับจาก 0
เช่น int b[15]; ก็มี b[0],b[1],b[2],b[3] ไปจนถึงแค่ b[14] เท่านั้น
เอาอีกซักตัวอย่าง
int c[50]; ก็มีแค่ c[0],c[1],c[2],....,c[49] เท่านั้น
แบบนี้เข้าใจมั๊ยครับ
----------
เสร็จแล้ว array มันยังมีความพิเศษอีกหนึ่งอย่าง สมมุติจากตัวอย่างเดิมนะครับ
int a[10]={1,2,3,4,5,6,7,8,9,10};
แล้วเราประกาศตัวแปรเพิ่ม
int i=5;
จากนั้นเราก็ทำแบบนี้
int b = a[ i ];
เมื่อเราลองปรินท์ค่า b ดู จะพบว่า b=6 ..... เอ๊ะ มายังไงหว่า
การที่เราเขียน a[ i ] โดยที่ i=5 ก็เหมือนกับเราอ้างอิงถึง a[5] ซึ่งมีค่าเท่ากับ 6 นั่นแล่ะครับ
แล้วถ้าเราทำแบบนี้ต่อล่ะ
int j=3;
int c=a[j];
แล้วปรินท์ค่า c ออกมาดู เราจะได้เท่าไหร่?
ใช่ครับ เราจะได้ c=4 เพราะ a[j] = a[3] = 4 ยังไงล่ะ ^^
---------------------
ใบ้สุดๆ เอาตัวอย่างนี้ไปดู ^^
int num[10] = {1,2,3,4,5,6,7,8,9,10};
for(int i=9;i>=0;i--)
{
printf("%d",a[ i ]);
}
อะเรย์ เย๊ เย :25:
strlen :47:
วน strlen รอบ
ใบ้กันเข้าไป :30:
printf("Before Swaping");
printf(" A B C _ _ _ _ _ _ _ ");
printf("After Swaping");
printf(" _ _ _ _ _ _ _ C B A ");
:47: โกง
เค้าให้พิมพ์อินพุตเข้าไปเอง :07:
อ้างคำพูดจาก: นุ้กสไตล์ เมื่อ 24 พ.ย. 2009, 23:37 น.
printf("Before Swaping");
printf(" I N P U T ");
printf("After Swaping");
printf(" T U P N I ");
:47: โกง
:12:
void function(char *s)
{
if(*s)
function(s+1);
else
return;
cout << *s;
}
พี่ต้นครับ :05:/ ผมงง
ภาษาต่างดาวชัดๆ :48:
แปลให้ๆ
void function(char *s)
ว่างเปล่า ประโยชน์ใช้สอย คา คูณ สอ
{
if(*s)
ถ้า คูณ สอ
function(s+1);
ประโยชน์ใช้สอยนั้น สอเพิ่มหนึ่ง
else
มิฉะนั้นก็
return;
กลับไปเถิด
cout << *s;
(อันนี้น่าจะพิมพ์ตกเอ็นไปตัวนึง จาก cout เป็น count)
นับ นับสิ นับ คูณ สอ
}
ง่ายๆไม่่เห็นจะยาก :52:
ขอบคุณลุงอ๋าห์ครับ เข้าใจขึ้นเยอะเลย :47:
:32: recursive อะไรเนี่ย pointer ชี้แล้วชี้อีก :05:
กลับไปเถิด :30: :30:
ลองเขียนกับ Java
public static void function(String s) {
if (s.length() > 0) {
function(s.substring(1));
System.out.print(s.charAt(0));
}
}
รบกวนลุงอ๋าห์แปลด้วยนะครับ :25:
ล้างดาวเฉพาะกระจู๋นี้ด้ายม้ายยยย :3005:
ลุงอ๋าห์งานเข้า :30a:
public static void function(String s) {
ประกาศในสาธารณะ ประโยชน์ใช้สอยนี้ว่างเปล่าคงที่ (ตัวอักษร สอ)
if (s.length() > 0) {
หากแม้น (ความยาวของ สอ มากกว่าศูนย์)
function(s.substring(1));
ประโยชน์ใช้สอย (สอนั้นสับตัวอักษร (หนึ่ง))
System.out.print(s.charAt(0));
พิมพ์ออกมาเถิดระบบ (สอคาที่ (ศูนย์))
}
}
อันนี้สำเนียงชวา ยากกว่าอันที่แล้วครับ
:08:
สำเนียงชวา :30a:
:30b: :30b:
เดี๋ยวว่างๆจะเอา Assembly มาให้ลุงอ๋าห์แปลให้นะครับ :30:
// ไม่รอว่างเขียนเองละ ไปค้นจากเน็ตมาเลยดีกว่า รบกวนลุงอ๋าห์ด้วยครับ :46:
mov eax,dword [string]
mov edx,dword [string + 4]
bswap eax
bswap edx
mov dword [string + 4],eax
mov dword [string],edx
อ้างคำพูดจาก: คุณภูกระดึง เมื่อ 25 พ.ย. 2009, 12:27 น.
if
หากแม้น
System.out.print
พิมพ์ออกมาเถิดระบบ
:30b: :30b: :30b:
ที่เจนภพนำมาให้แปลนั้น เป็นภาษาเก่าแก่มากๆ
คงต้องใช้เวลาค้นคว้าก่อนสักหน่อย
:05:
:30: :30: :30:
เก่าแก่จริงๆ ครับ :3005: ผมยังไม่รู้เรื่องเลย
ช่างเป็น interpreter ที่เทพจริงๆ แปลได้ทุกภาษา (ทีละบรรทัด) แบบนี้
อ้างคำพูดจาก: คุณภูกระดึง เมื่อ 25 พ.ย. 2009, 12:27 น.
System.out.print(s.charAt(0));
พิมพ์ออกมาเถิดระบบ (สอคาที่ (ศูนย์))
สอคาที่ :30a:
สมัยนี้เขาใช้โปรแกรมแปลภาษากันแล้ว :11:
public static void function(String s) {
หน้าที่ โมฆะ สาธารณะ คง (สตริง s) (
if (s.length() > 0) {
ถ้า (ความ ยาว s ()> 0) (
function(s.substring(1));
(หน้าที่ s สตริง ย่อย (1));
System.out.print(s.charAt(0));
ระบบ ออก จาก พิมพ์ (ถ่าน s ใน (0));
}
}
ไร้จินตนาการ :11:
- ขอบคุณ คุณ EaRthCh!E* มากคะ เข้าใจเรื่อง Array มากขึ้นเลยคะ :33:
- ขอบคุณ คุณ REROYD กับคุณ JanΣ มากคะ คำสั่งนี้ละคะ นับความยาวสตริง คริคริ :22:
- ขอบคุณ คุณ นักสไตล์ มากคะ ว่าแต่ว่า อาจารย์ให้ Input เองคร่าาาา :05:
- ขอบคุณ คุณ ต้น คะ หนูก็เองก็ งง เหมือนกันคะ :06:
- คุณ VeryHappy คะ คิดเหมือนกันเลยคะ ..ภาษาต่างดาว :48:
- ขอบคุณ คุณ คุณภูกระดึง คะ อ่า เออะ แปลตรงตัวเลยคะนั่น.. (Return)กลับไปเถิด ...(s.charAt(0)) (สอคาที่ (ศูนย์)) ทราบแล้วเปลี่ยน :43:
- เป็น interpreter ที่เทพจริงๆ แปลได้ทุกภาษา (ทีละบรรทัด) แบบนี้ เห็นด้วยคะ คุณ ก๊อง-แก๊ง-กุ้ง (ชวา ..ชวา..) :45:
- ขอบคุณคะ คุณ Kaboom คะ แต่ว่า interpreter ภาษาอะไรคะ คริคริ เผ่าเดียวกับภาษาชวาหรืเปล่าเอ่ย :34:
ปริ๊นออกมาเถิดระบบ :30:
ลุงอ๋าห์ :30: :30:
Update เรื่องราวจร้า สรุปได้แล้วคะทุกท่าน :33: :19:
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
char Name[256],temp;
int i,len;
printf("Enter Name : ");
scanf("%s",Name);
len=strlen(Name)-1;
for(i=0;i<strlen(Name)/2;i++)
{
temp=Name[i];
Name[i]=Name[len];
Name[len--]=temp;
}
printf("\nOut put : %s",Name);
getch();
}
:12:
ขอเชิญลุงอ๋าห์มาแปลด้วยครับ
ตอบแบบพี่ต้นครับ
อ้างคำพูดจาก: นุ้กสไตล์ เมื่อ 02 ธ.ค. 2009, 02:45 น.
กำลังเขียนโค้ดเกมส์ Bomberman ภาษา Visual C#
เริ่มงานตั้งแต่ 5ทุ่มเมื่อวาน ส่งวันนี้ห้าทุ่ม ตอนนี้จะตีสามแล้ว :05: พึ่งวาดรูปเอง
คุณเพื่อนครับ มึงช่วยมาขอความช่วยเหลือตูเร็วกว่านี้หน่อยได้ไหม
นี่มาวันเดียวก่อนส่ง :41:
โดนงาน c# แบบกระทันหัน :41:
รอดูเกมส์ Bomberman กิ๊กก๊อก กันนะครับ :05: