เพิ่ม string case swapper

This commit is contained in:
Late Night Defender 2023-04-03 01:08:03 +07:00
parent bc4f5a5204
commit eda1785095
16 changed files with 479 additions and 0 deletions

View file

@ -0,0 +1,15 @@
language: cpp
compiler: gcc
jobs:
include:
- os: linux
dist: focal
- os: linux
dist: xenial
- os: osx
env:
- BUILD_TYPE=Debug
script:
- echo 1 | ./install.sh
- cat test-input.txt | ~/.local/bin/$(basename $PWD)
- echo 1 | ./uninstall.sh

View file

@ -0,0 +1,67 @@
![Banner](info/banner.png)
[![PGTechs](https://img.shields.io/static/v1.svg?color=ff0000&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=PG%20Techs&message=YouTube)](https://www.youtube.com/c/PGTechs "ช่อง YouTube ของเรา")
[![PGVCPlus](https://img.shields.io/static/v1.svg?color=0572e6&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=PGVC%2B&message=Facebook)](https://www.facebook.com/PrincegameRVCPlus "เพจข่าวสาร Distributed Computing ของเรา บน Facebook")
อีกหนึ่งแอปพลิเคชันคุณภาพจาก SashaPGT
* ทุกแอปพลิเคชันผ่านการทดสอบติดตั้งและใช้งานใน Test environment ของเรา
* ใช้งานได้อย่างสะดวกรวดเร็ว ด้วยสคริปต์ติดตั้งแบบสำเร็จรูป ทั้งเฉพาะผู้ใช้และ System-wide
* รองรับ Linux และ macOS
# sashapgt/string-case-swapper-alt
[![Build Status](https://app.travis-ci.com/sashapgt/string-case-swapper-alt.svg?branch=main)](https://app.travis-ci.com/gitlab/sashapgt/string-case-swapper-alt)
" ให้นักศึกษาเขียนโปรแกรมเพื่อรับข้อมูล String 1 ชุด แล้วแสดงผลลัพธ์โดยเปลี่ยนตัวอักษรตัวพิมพ์เล็กให้กลายเป็นตัวอักษรตัวพิมพ์ใหญ่ และตัวอักษรตัวพิมพ์ใหญ่ กลายเป็นตัวอักษรตัวพิมพ์เล็กเช่นรับข้อมูล AbcDefg จะแสดงผล aBCdEFG"
โปรแกรมจะรับค่า Input แปลง Uppercase เป็น Lowercase และ Lowercase เป็น Uppercase แล้วแสดงผลออกมา
**เป็นอีกเวอร์ชันหนึ่งของ string-case-swapper ในเวอร์ชันนี้ จะมีการใช้ Pointer ในการตรวจสอบและแก้ไขค่าใน Array**
**ตัวอย่างการทำงานของโปรแกรม**
![Screenshot](info/screenshot.png)
# วิธีการติดตั้ง/ใช้งาน
### ติดตั้งแบบปกติ
1. โคลน git นี้
`$ git clone https://gitlab.com/sashapgt/string-case-swapper-alt.git`
2. cd เข้าโฟลเดอร์ของ git นี้ แล้วรันสคริปต์ติดตั้ง
`$ cd string-case-swapper-alt && bash install.sh`
3. เรียกใช้จากเทอร์มินัล (Shell autocomplete อาจจะยังไม่ทำงาน กรุณาปิดเทอร์มินัล แล้วเปิดใหม่อีกครั้ง)
`$ string-case-swapper-alt`
### ใช้งานครั้งเดียว (Build, run และ remove ทันทีเมื่อใช้งานเสร็จโดยอัตโนมัติ)
$ bash single-use-build-and-run.sh
# ถอนการติดตั้ง
1. รันสคริปต์ถอนการติดตั้งจากในโฟลเดอร์ git นี้
`$ bash uninstall.sh`
2. ลบโฟลเดอร์ git นี้
# การแก้ปัญหา
หากไม่สามารถรันได้เนื่องจาก Command not found ให้ดูว่ามี ~/.local/bin ใน $PATH หรือไม่
สามารถตรวจสอบได้โดยการ
echo $PATH
หากไม่มี Home folder ของคุณ ตามด้วย .local/bin ให้เพิ่มบรรทัดนี้ลงใน Shell startup script ของคุณ (เช่น .bashrc .zshrc)
export PATH="$PATH:$HOME/.local/bin"

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View file

@ -0,0 +1,60 @@
#!/bin/bash
DIR1=$HOME/.local/bin
DIR2=/usr/local/bin
APPNAME=$(basename $PWD)
clear
if [[ "${EUID}" -eq 0 ]]; then
echo " "
echo "คุณกำลังใช้สิทธิ์ Root! ต้องการดำเนินการติดตั้งต่อใน $DIR2 หรือไม่"
echo " "
echo "1) ไม่"
echo "2) ใช่"
echo " "
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
until [[ -z "$INSTALLCHOICE" || "$INSTALLCHOICE" =~ ^[1-2]$ ]]; do
printf "\n$INSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
done
case "$INSTALLCHOICE" in
1|"")
exit
;;
2)
DIR=$DIR2
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
g++ -o $APPNAME main.cpp && mv $APPNAME $DIR
;;
esac
else
echo " "
echo "เลือกผู้ใช้ที่ต้องการติดตั้งให้"
echo " "
echo "1) $USER ($DIR1)"
echo "2) ทุกคน ($DIR2)"
echo " "
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
until [[ -z "$INSTALLCHOICE" || "$INSTALLCHOICE" =~ ^[1-2]$ ]]; do
printf "\n$INSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
done
case "$INSTALLCHOICE" in
1|"")
DIR=$DIR1
if [[ ! -d "$DIR" ]]; then
mkdir -p $DIR
fi
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
g++ -o $APPNAME main.cpp && mv $APPNAME $DIR
;;
2)
DIR=$DIR2
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
printf "\nกรุณาใส่รหัสผ่าน sudo หากถูกถามในการติดตั้ง\n\n"
g++ -o $APPNAME main.cpp && sudo mv $APPNAME $DIR
;;
esac
fi
printf "\nการติดตั้ง $APPNAME ใน $DIR เสร็จสมบูรณ์\n"

View file

@ -0,0 +1,21 @@
#include<iostream>
#include<stdio.h>
int main() {
char i[50],*k;
printf("Input: ");
scanf("%s", i);
k=i;
while(*k!='\0'){
if(*k>=97&&*k<=122){
*k=*k-32;
}
else if(*k>=65&&*k<=90){
*k=*k+32;
}
k++;
}
printf("Output: ");
printf("%s\n", i);
return 0;
}

View file

@ -0,0 +1,7 @@
#!/bin/bash
g++ -o main main.cpp
./main
rm main

View file

@ -0,0 +1 @@
ComputerEngineeringKMITL

View file

@ -0,0 +1,74 @@
#!/bin/bash
DIR1=$HOME/.local/bin
DIR2=/usr/local/bin
APPNAME=$(basename $PWD)
clear
if [[ "${EUID}" -eq 0 ]]; then
echo " "
echo "คุณกำลังใช้สิทธิ์ Root! ต้องการถอนการติดตั้งจาก $DIR2 หรือไม่"
echo " "
echo "1) ไม่"
echo "2) ใช่"
echo " "
read -p "ใส่คำตอบของคุณ [1] : " UNINSTALLCHOICE
until [[ -z "$UNINSTALLCHOICE" || "$UNINSTALLCHOICE" =~ ^[1-2]$ ]]; do
printf "\n$UNINSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
read -p "ใส่คำตอบของคุณ [1] : " UNINSTALLCHOICE
done
case "$UNINSTALLCHOICE" in
1|"")
exit
;;
2)
DIR=$DIR2
if [[ -f "$DIR/$APPNAME" ]]; then
echo "กำลังถอนการติดตั้ง $APPNAME จาก $DIR"
rm $DIR/$APPNAME
else
echo "ไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
fi
;;
esac
else
echo " "
echo "เลือกผู้ใช้ที่ต้องการถอนติดตั้งให้"
echo " "
echo "1) $USER ($DIR1)"
echo "2) ทุกคน ($DIR2)"
echo " "
read -p "ใส่คำตอบของคุณ : " UNINSTALLCHOICE
until [[ -z "$UNINSTALLCHOICE" || "$UNINSTALLCHOICE" =~ ^[1-2]$ ]]; do
echo "$UNINSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง"
read -p "ใส่คำตอบของคุณ :" UNINSTALLCHOICE
done
case "$UNINSTALLCHOICE" in
1)
DIR=$DIR1
if [[ -f "$DIR/$APPNAME" ]]; then
printf "\nกำลังถอนการติดตั้ง $APPNAME จาก $DIR\n"
rm $DIR/$APPNAME
else
printf "\nไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
exit
fi
;;
2)
DIR=$DIR2
if [[ -f "$DIR/$APPNAME" ]]; then
printf "\nกำลังถอนการติดตั้ง $APPNAME จาก $DIR\n"
printf "\nกรุณาใส่รหัสผ่าน sudo หากถูกถามขณะถอนการติดตั้ง\n\n"
sudo rm $DIR/$APPNAME
else
printf "\nไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
exit
fi
;;
"")
exit
;;
esac
fi
printf "\nการถอนการติดตั้ง $APPNAME จาก $DIR เสร็จสมบูรณ์\n"

View file

@ -0,0 +1,73 @@
![Banner](info/banner.png)
[![PGTechs](https://img.shields.io/static/v1.svg?color=ff0000&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=PG%20Techs&message=YouTube)](https://www.youtube.com/c/PGTechs "ช่อง YouTube ของเรา")
[![PGVCPlus](https://img.shields.io/static/v1.svg?color=0572e6&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=PGVC%2B&message=Facebook)](https://www.facebook.com/PrincegameRVCPlus "เพจข่าวสาร Distributed Computing ของเรา บน Facebook")
อีกหนึ่งแอปพลิเคชันคุณภาพจาก SashaPGT
* ทุกแอปพลิเคชันผ่านการทดสอบติดตั้งและใช้งานใน Test environment ของเรา ทั้งใน Docker container และบน Bare-metal hardware
* ใช้งานได้อย่างสะดวกรวดเร็ว ด้วยสคริปต์ติดตั้งแบบสำเร็จรูป ทั้งเฉพาะผู้ใช้และ System-wide
* รองรับ Linux หลากหลาย Distribution รวมถึง macOS
# sashapgt/string-case-swapper
[![DevelopedOnFedora](https://img.shields.io/static/v1.svg?color=52A2dA&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Developed%20On&message=Fedora%2034%20(GCC%2011.2.1))](https://getfedora.org "Fedora Linux")
[![Language](https://img.shields.io/static/v1.svg?color=004082&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Language&message=C%2B%2B)](https://en.wikipedia.org/wiki/C%2B%2B "C++ Programming Language")
[![IDE](https://img.shields.io/static/v1.svg?color=48bf7f&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=IDE&message=KDevelop%205)](https://kdevelop.org "A cross-platform IDE for C, C++, Python, QML/JavaScript and PHP")
[![TestedOnDebian](https://img.shields.io/static/v1.svg?color=a80030&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Tested%20On&message=Debian%2011%20(GCC%2010.2.1))](https://debian.org "Debian Linux")
[![TestedOnUbuntu](https://img.shields.io/static/v1.svg?color=e95420&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Tested%20On&message=Ubuntu%2020.04%20LTS%20(GCC%209.3.0))](https://ubuntu.com "Ubuntu Linux")
[![TestedOnMac](https://img.shields.io/static/v1.svg?color=eeeeee&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Tested%20On&message=macOS%20Big%20Sur%20(Clang%2011.0.3))](https://www.apple.com/macos "Apple macOS")
" ให้นักศึกษาเขียนโปรแกรมเพื่อรับข้อมูล String 1 ชุด แล้วแสดงผลลัพธ์โดยเปลี่ยนตัวอักษรตัวพิมพ์เล็กให้กลายเป็นตัวอักษรตัวพิมพ์ใหญ่ และตัวอักษรตัวพิมพ์ใหญ่ กลายเป็นตัวอักษรตัวพิมพ์เล็กเช่นรับข้อมูล AbcDefg จะแสดงผล aBCdEFG"
โปรแกรมจะรับค่า Input แปลง Uppercase เป็น Lowercase และ Lowercase เป็น Uppercase แล้วแสดงผลออกมา
**ตัวอย่างการทำงานของโปรแกรม**
![Screenshot](info/screenshot.png)
# วิธีการติดตั้ง/ใช้งาน
### ติดตั้งแบบปกติ
1. โคลน git นี้
`$ git clone https://gitlab.com/sashapgt/string-case-swapper.git`
2. cd เข้าโฟลเดอร์ของ git นี้ แล้วรันสคริปต์ติดตั้ง
`$ cd string-case-swapper && bash install.sh`
3. เรียกใช้จากเทอร์มินัล (Shell autocomplete อาจจะยังไม่ทำงาน กรุณาปิดเทอร์มินัล แล้วเปิดใหม่อีกครั้ง)
`$ string-case-swapper`
### ใช้งานครั้งเดียว (Build, run และ remove ทันทีเมื่อใช้งานเสร็จโดยอัตโนมัติ)
$ bash single-use-build-and-run.sh
# ถอนการติดตั้ง
1. รันสคริปต์ถอนการติดตั้งจากในโฟลเดอร์ git นี้
`$ bash uninstall.sh`
2. ลบโฟลเดอร์ git นี้
# การแก้ปัญหา
หากไม่สามารถรันได้เนื่องจาก Command not found ให้ดูว่ามี ~/.local/bin ใน $PATH หรือไม่
สามารถตรวจสอบได้โดยการ
echo $PATH
หากไม่มี Home folder ของคุณ ตามด้วย .local/bin ให้เพิ่มบรรทัดนี้ลงใน Shell startup script ของคุณ (เช่น .bashrc .zshrc)
export PATH="$PATH:$HOME/.local/bin"

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

60
string-case-swapper/install.sh Executable file
View file

@ -0,0 +1,60 @@
#!/bin/bash
DIR1=$HOME/.local/bin
DIR2=/usr/local/bin
APPNAME=$(basename $PWD)
clear
if [[ "${EUID}" -eq 0 ]]; then
echo " "
echo "คุณกำลังใช้สิทธิ์ Root! ต้องการดำเนินการติดตั้งต่อใน $DIR2 หรือไม่"
echo " "
echo "1) ไม่"
echo "2) ใช่"
echo " "
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
until [[ -z "$INSTALLCHOICE" || "$INSTALLCHOICE" =~ ^[1-2]$ ]]; do
printf "\n$INSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
done
case "$INSTALLCHOICE" in
1|"")
exit
;;
2)
DIR=$DIR2
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
g++ -o $APPNAME main.cpp && mv $APPNAME $DIR
;;
esac
else
echo " "
echo "เลือกผู้ใช้ที่ต้องการติดตั้งให้"
echo " "
echo "1) $USER ($DIR1)"
echo "2) ทุกคน ($DIR2)"
echo " "
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
until [[ -z "$INSTALLCHOICE" || "$INSTALLCHOICE" =~ ^[1-2]$ ]]; do
printf "\n$INSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
done
case "$INSTALLCHOICE" in
1|"")
DIR=$DIR1
if [[ ! -d "$DIR" ]]; then
mkdir -p $DIR
fi
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
g++ -o $APPNAME main.cpp && mv $APPNAME $DIR
;;
2)
DIR=$DIR2
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
printf "\nกรุณาใส่รหัสผ่าน sudo หากถูกถามในการติดตั้ง\n\n"
g++ -o $APPNAME main.cpp && sudo mv $APPNAME $DIR
;;
esac
fi
printf "\nการติดตั้ง $APPNAME ใน $DIR เสร็จสมบูรณ์\n"

View file

@ -0,0 +1,20 @@
#include<iostream>
int main() {
char i[50];
int j=0;
printf("Input: ");
scanf("%s", i);
while(i[j]!='\0'){
if(i[j]>=97&&i[j]<=122){
i[j]=i[j]-32;
}
else if(i[j]>=65&&i[j]<=90){
i[j]=i[j]+32;
}
j++;
}
printf("Output: ");
printf("%s\n", i);
return 0;
}

View file

@ -0,0 +1,7 @@
#!/bin/bash
g++ -o main main.cpp
./main
rm main

View file

@ -0,0 +1,74 @@
#!/bin/bash
DIR1=$HOME/.local/bin
DIR2=/usr/local/bin
APPNAME=$(basename $PWD)
clear
if [[ "${EUID}" -eq 0 ]]; then
echo " "
echo "คุณกำลังใช้สิทธิ์ Root! ต้องการถอนการติดตั้งจาก $DIR2 หรือไม่"
echo " "
echo "1) ไม่"
echo "2) ใช่"
echo " "
read -p "ใส่คำตอบของคุณ [1] : " UNINSTALLCHOICE
until [[ -z "$UNINSTALLCHOICE" || "$UNINSTALLCHOICE" =~ ^[1-2]$ ]]; do
printf "\n$UNINSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
read -p "ใส่คำตอบของคุณ [1] : " UNINSTALLCHOICE
done
case "$UNINSTALLCHOICE" in
1|"")
exit
;;
2)
DIR=$DIR2
if [[ -f "$DIR/$APPNAME" ]]; then
echo "กำลังถอนการติดตั้ง $APPNAME จาก $DIR"
rm $DIR/$APPNAME
else
echo "ไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
fi
;;
esac
else
echo " "
echo "เลือกผู้ใช้ที่ต้องการถอนติดตั้งให้"
echo " "
echo "1) $USER ($DIR1)"
echo "2) ทุกคน ($DIR2)"
echo " "
read -p "ใส่คำตอบของคุณ : " UNINSTALLCHOICE
until [[ -z "$UNINSTALLCHOICE" || "$UNINSTALLCHOICE" =~ ^[1-2]$ ]]; do
echo "$UNINSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง"
read -p "ใส่คำตอบของคุณ :" UNINSTALLCHOICE
done
case "$UNINSTALLCHOICE" in
1)
DIR=$DIR1
if [[ -f "$DIR/$APPNAME" ]]; then
printf "\nกำลังถอนการติดตั้ง $APPNAME จาก $DIR\n"
rm $DIR/$APPNAME
else
printf "\nไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
exit
fi
;;
2)
DIR=$DIR2
if [[ -f "$DIR/$APPNAME" ]]; then
printf "\nกำลังถอนการติดตั้ง $APPNAME จาก $DIR\n"
printf "\nกรุณาใส่รหัสผ่าน sudo หากถูกถามขณะถอนการติดตั้ง\n\n"
sudo rm $DIR/$APPNAME
else
printf "\nไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
exit
fi
;;
"")
exit
;;
esac
fi
printf "\nการถอนการติดตั้ง $APPNAME จาก $DIR เสร็จสมบูรณ์\n"