Thank you Sir
Posts made by Kalana
-
RE: C Programming මුල සිට ඉගෙනගනිමු (part 16 - C functions)
@root mee dawas tike assignments tikk watuna. Mn free una gmn danm.
-
RE: Android සිංහලෙන් Video Series
godak watinawa mee video set eka. ithuru part tikath dana puluwanm. Jaya Wewa!
-
RE: වෙබ් සයිට් වලට වදින bot traffic වලින් බෙරෙන්න cloudflare firewall rules හදගන්න විදිහ.
Thanks for sharing this brother
-
C Programming මුල සිට ඉගෙනගනිමු (part 16 - C functions)
සුබ දවසක් වේවා ඔයාලට. අද මන් කතා කිරීමට බලාපොරොත්තු වන්නේ C programming වල එන ඉතා වැදගත් අංගයක් වන functions ගැනයි. අපි බලමු මොනාද මේ functions කියන්නේ කියලා.
ඔයාලා හිතන්න මෙහෙම ඔයාලගේ ගෙදර සේරම බල්බ් ටික පත්තු වෙන්නේ එක ස්විච් එකකින් කියලා. බැලූ බැල්මට වැඩේ ලේසියි වගේ පෙනුනට එක ස්විච් එකකින් බල්බ් එකක් පත්තු කරනවා කියන්නේ ප්රශ්න රැසකට මුහුණ දෙන වැඩක් එක බල්බ් එක කැඩුනොත් සේරම වයර් චෙක් කරන්න ඕනා. අනෙක් අතට බල්බ් ගොඩක් වැඩ කරන්නෙත් නැතුව යනවා මේ වැඩේ නිසා.
නමුත් හිතන්න හැම බල්බ් එකකටම එක ස්විච් එක ගානේ තියෙනවා කියලා. මෙහෙම උනොත් බල්බ් එකක් වැඩ කරන්නේ නැතිව ගියොත් අනිත් බල්බ් වලට ප්රශ්නයක් නෑ. ඒ වගේම මොන බල්බ් එකද වැඩ කරන්නේ නැත්තේ කියලා අපිට කෙලින්ම කියන්න පුලුවන්.
අපි මේ දක්වා අපේ program කරන් ආවේ ඔය මන් කිව්ව පලවෙනි ක්රමේට. සේරම වැඩ කරන්නේ එක ස්විච් එකකින් එනම් සේරම තියෙන්නේ
int main()
එක ඇතුලේ. එක පේලියක් වැඩ කලේ නැත්තම් සේරම අවුල් යනවා ඒ හින්දා එම අවුල් ජාලය වලක්වන්න තමා අපි functions ඔයාලට හදුන්වා දෙන්නේ.int main()
එකේ run වෙන්න ඕන ගොඩක් codes අපි ලබා දෙන functions ඔස්සේ run අවසන් පිලිතුරint main()
එකට ලබා දීම මෙම functions සිදු කරයි.සරලව කිව්වොත් functions වලින් කරන්නේ අපිට ලබා දුන්නු වැඩ ප්රමාණය කොටස් වලට බෙදාගෙන එම භාරගත් කොටස් ඉවර කොට නැවතත්
main()
එකට ලබා දෙන එකයි.අපි බලමු functions වල අකෘතිය කොයි වගේද කියලා
#include <stdio.h> <return_type> <function_name>; int main() { printf("Hello World"); return 0; } <return_type> <function_name> (<argument list>) { //Set of statements – Block of code }
-
<return_type>
-: return_type කියලා කියන්නේ අපි variables හඳුන්වන්න ගන්න data type වලටයි. එනම්
int, float, char, short,..., etc
-: return එකක් අනිවාර්යයෙන් තිබිය යුතුය.
void
-: return එකක් නොතිබිය යුතුය. -
<function_name>
-: function name සඳහා අපිට කැමති නමක් භාවිතා කල හැකිය හරියට variable name එකක් භාවිතා කරනවා වගේ. -
<argument list>
-: argument list වලදී අපි අපේ variable එකත් එක්ක එයට අදාල data type එකත් දැක්විය යුතුය.
int, float, char, short,..., etc
වලදී argument list අනිවාර්යයෙන් තිබිය යුතු අතර
void
වලදී argument list අනිවාර්යය නොවේ.
උදාහරණ -:
int sum(int num1, int num2) { //codes return; } void sum() { //codes }
මන් දැන් සරල C program එකක් function එකක් යොදගෙන කරන්නම්. එතකොට ඔයාලට තේරෙයි මන් කිව්වේ මොනාද කියලා.
1. write a c program to input two numbers from key board and get sum of them using function.
මෙහිදී කියන්නේ function භාවිතා කර ඉලක්කම් දෙකක එකතුවක් ලබා ගන්නා ලෙසයි.
#include <stdio.h> int sum(int, int); //sum කියන function එක තුල ඇත්තේ int වර්ගයේ variable බව මෙතනින් පැහැදිලි කරයි. int main() { int num1 = 5; int num2 = 6; int total = 0; total = sum(num1, num2); //මෙතන සත්ය වශයෙන්ම් ඇත්තේ sum(5, 6) යන්නයි. මෙම අගයන් දෙක int sum(int number1, int number2) වලට ලබා දී එහි ඇති return මඟින් පිලිතුර මෙයට නැවත ලබා ගනී. printf("Total is = %d", total); අවසන් පිලිතුර output වේ. return 0; } int sum(int number1, int number2)// sum(num1, num2) හි ඇති සංඛ්යා දෙක වන 5 සහ 6 මෙතනට පැමිණ number1ට හා number2ට ආදේශ වේ. { return (number1 + number2); //ආදේශ වූ පසු 5 හ 6 එකට එකතු වී එකතුව වන 11 කියන අගය sum(num1, num2); දක්වා ගෙන ගොස් එයට ලබා දේ. }
Output -:
Total is = 11
මෙම ගැටළුව කල හැකි තව ආකාරයක් බලමු.
#include <stdio.h> int sum(); //int sum() එක තුල argument කිසිවක් නොමැති නිසා මේ ආකාරයෙන් ලියයි. int main() { int total = 0; total = sum(); //මෙහිදී sum() මඟින් int sum() function එක ක්රියාකරවන් අතර අවසන් පිලිතුර return එකක් මඟින් පිලිතුර ලබාගෙන එය total එකට ලබා දේ. printf("Total is = %d", total); return 0; } int sum() { int num1 = 5; int num2 = 6; return (num1 + num2); }
Output -:
Total is = 11
අපි දැන්
void
යොදා ගෙන මෙම ගැටළුව විසදමු.#include <stdio.h> void sum(int, int); int main() { int num1 = 5; int num2 = 6; sum(num1, num2); // මෙහිදී 5 හා 6 කියන ඉලක්කම් num1හා num2 වලට ආදේශ වී void sum(int number1, int number2) කියන function එක ක්රියාකරවා අවසන් පිලිතුර අපට ලබා දේ. return 0; } void sum(int number1, int number2) { int total = 0; total = number1 + number2; printf("Total is = %d", total); //ඔබට පෙනෙනවා ඇති void සඳහා return අවස්තාවක් නොමැති බව. }
Output -:
Total is = 11
අපි දැන්
void
යොදාගෙන තව ආකාරයකට මෙය විසඳමු.#include <stdio.h> void sum(); int main() { sum(); //main() එකේ තිබිය යුතු සියල්ල function එකකට පවරා අපට main() එක මේ ආකාරයෙන් කෙටි කර ගත හැකිය. return 0; } void sum() { int num1 = 5; int num2 = 6; int total = 0; total = num1 + num2; printf("Total is = %d", total); }
Output -:
Total is = 11
ඉහත මන් සාකච්ජා කලා ගැටලුවක් function මඟින් විසඳිය හැකි ආකාර 4ක්. ඔයාලට කැමති ආකාරයකින්, ඔයාලට ලේසි කියලා හිතන ආකාරයකින් ගැටළු විසදන්න පුලුවන්.
අපි දැන් බලමු function භාවිතයෙදී අපට වැදගත් වෙන කරුණු පිලිබඳව
-
int main()
යනුත් function එකකි. එය අපේ ප්රධාන function එක වේ. -
Program එකක function එකකට වඩා කැමති ගණනක් තිබිය හැකිය.
-
function එකක් ලියන විට එය තුල ඕනෑ තරම් argument තිබිය හැකිය.
උදා -:int sum(int num1, int num2, int num3,int num4)
-
function එකක්
int
වලින් හඳුන්වාදෙන්නේ නම් එම function එක තුල තිබිය හැක්කේ int argument පමණි.float, char, ..., etc
තිබිය නොහැක.
උදා -:
int sum(int num1, int num2)
float subject(float mark1, float mark2)
char words(char name1, char name2)
- function එකක්
void
වලින් හඳුන්වාදෙන්නේ නම් එම function එක තුල ඕනෑම වර්ගයක argument තිබිය හැකිය.
උදා -:void sum(int num, float mark, char name)
අපි දැන් බලමු function භාවිතා කිරීමෙන් අපට ලැබෙන වාසි මොනාද කියලා
-
code එක වටහා ගැනීමේ පහසුව සඳහා.
-
විවිධ අවස්තා වලදී එකම function එක නැවත නැවත පාවිච්චි කල හැකි වීම.
-
Errors පහසුවෙන් සොයා ගැනීමට හැකි වීම.
-
අපගේ code එකේ දිග අඩු වීම. එමගින් program එකක් කාර්යක්ෂමව භාවිතා කල හැකි වීම.
- C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR
ඔබට අවශ්යනම් ඔබේ බ්රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්
- https://www.onlinegdb.com/online_c_compiler
- https://www.tutorialspoint.com/compile_c_online.php
- https://repl.it/languages/c
සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site කිහිපයක් මන් දාන්නම්
- https://www.geeksforgeeks.org/c-programming-language/
- https://www.tutorialspoint.com/cprogramming/index.htm
- https://beginnersbook.com/2014/01/c-tutorial-for-beginners-with-examples/
web url කෙටි කරන්න lankadevelopers ලා හදපු එයාලගෙම සයිට් එකක් තියෙනවා. -> https://link.lankadevelopers.com/
මගේ කලින් ලිපි
- C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://link.lankadevelopers.com/4WpH
- C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://link.lankadevelopers.com/mXio
- C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://link.lankadevelopers.com/SHNt
- C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions) -: https://link.lankadevelopers.com/2MNku
- C Programming මුල සිට ඉගෙනගනිමු (part 5 - create simple applications) -: https://link.lankadevelopers.com/KUF6
- C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 1)) -: https://link.lankadevelopers.com/8Xe71
- C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 2)) -:https://link.lankadevelopers.com/9drmY
- C Programming මුල සිට ඉගෙනගනිමු (part 7 - Format Specifiers in C) -: https://link.lankadevelopers.com/761PT
- C Programming මුල සිට ඉගෙනගනිමු (part 8 - Switch Statement) -: https://link.lankadevelopers.com/7jncK
- C Programming මුල සිට ඉගෙනගනිමු (part 9 - While loop) -: https://link.lankadevelopers.com/4TBV5
- C Programming මුල සිට ඉගෙනගනිමු (part 10 - do-while loop) -: https://link.lankadevelopers.com/4WcNd
- C Programming මුල සිට ඉගෙනගනිමු (part 11 - for loop) -: https://link.lankadevelopers.com/8utoa
- C Programming මුල සිට ඉගෙනගනිමු (part 12 - arrays) -: https://link.lankadevelopers.com/46cyf
- C Programming මුල සිට ඉගෙනගනිමු (part 13 - 2D-arrays) -: https://link.lankadevelopers.com/4Q9Gt
- C Programming මුල සිට ඉගෙනගනිමු (part 14 - Strings) -: https://link.lankadevelopers.com/58zWd
- C Programming මුල සිට ඉගෙනගනිමු (part 15 - Strings Q&A) -: https://link.lankadevelopers.com/7RuFa
මගේ ලිපි වල අඩුපාඩු තියෙනවනම් දන්නේ නැති දේවල් තියෙනවනම් පහලින් කමෙන්ට් එකක් දාන්න.
තව ලිපියකින් හම්බෙමු ජය වේවා.
-
-
C Programming මුල සිට ඉගෙනගනිමු (part 15 - Strings Q&A)
සුබ දවසක් වේවා ඔයාලට. මන් කලින් ලිපියේ Strings ගැන සියල්ලම වගෙ කතා කලා. ඒත් ඒවා යොදාගෙන අපිට විසඳන්න පුලුවන් ගැටළු ගැන සාකච්ජා කලේ නෑ. අපි මේ ලිපියෙන් කරන්න යන්නේ Strings වලින් අපෙන් අහන ප්රශ්න හා ඒවාට පිලිතුරු ගැනයි. මන් සෑම ගැටළුවක්ම කොටස් වලට කඩ කඩ අහන්නම්.
Question 1
1. Write a C program to input string from the keyboard and display it on screen.ඉහත ගැටළුවනම් සරල එකක් බව ඔබට පෙනෙනවා ඇති වචනයක් හෝ වචන කිහිපයක් keyboard එක මඟින් input කරලා ඒ input කරපු එක screen එකේ display කරන්න කියලයි මේකෙන් කියන්නේ.
මෙම ගැටලුව විසඳීමට නම් අපට මේ කරුණු වැදගත් වෙනවා.
-
chr
එසේත් නැතිනම් character කිහිපයක් එකතු වෙලා තමා string එකක් හැදෙන්නේ. ඒ නිසා මෙම character කිහිපය එකට එකතු කිරීමට අපිට array එකක් යොදා ගැනීමට සිදු වනවා. -
string එකක භාවිතා කරන විට අපිට
#include <stdio.h>
එකට අමතරව#include <string.h>
එකත් භාවිතා කිරීමට සිදු වනවා. -
scanf
එකක් භාවිතා කර string එකක් keyboard එක මඟින් input කරන විට එම string එක read කිරීමට %c වෙනුවට %s භාවිතා කිරීමට සිදු වනවා. -
scanf
එකක් භාවිතා කරන විට variable එක ඉස්සරහින්&
ලකුණ යෙදීමෙනුත් අපි වලකිනවා.
අපි දැන් මේ කරුණු සැලකිල්ලට ගනිමින් program එක code කරලා බලමු.
#include <stdio.h> #include <string.h> // string header එක භාවිතා කල යුතු වේ. int main() { char words[100]; // ඔබට input කිරීමට අවශ්ය වන අකුරු ගණන දල වශයෙන් මෙතන සංඛ්යාත්මකව දැක්විය යුතුය. printf("Enter a string = "); scanf("%s", words); // අනික් ඒවා මෙන් නොව මෙහිදී & ලකුණ යෙදිය යුතු නොවේ. තවද %c වෙනුවට %s භාවිතා කරයි. printf("You have entered = %s", words); //string එකක් input කිරීමට හා output කිරීමට %s යොදා ගනී return 0; }
Output -:
Enter a string = Kalana Your have entered = Kalana
අපි දැන් පලමුවන ගැටලුව කලා. දැන් අපි ඒ ගැටලුවටම තව කොටසක් සම්බන්ධ කරල බලමු ඒක විසඳන විදිහ.
2. Improve above program to get length of that string and output the value of length.
ඉහත කොටසින් කියන්නේ අපි කලින් හදපු program එක වැඩිදියුනු කරන්න කියලා. ඒ තමයි අපි input කරපු string එකේ දිග සොයාගැනීමයි.
char words[100];
මඟින් අපි දළ දිගක් ලබා දුන්නට අපි දන්නෑ අපි input කරපු string එකේ සැබෑ දිග කීයද කියලා මන් Kalana කියලා ටයිප් කලොත් ඒකේ අකුරු ගනන 6යි. එතකොට ඒකේ සැබෑ දිගත් 6යි 100 නෙමේ. එම නිසා අපි string එකක සැබෑ දිග අරගන්න හදන විට මේ දේවල් අනුගමනය කල යුතු වනවා.- string එකක දිග සංඛ්යාත්මකව ලබා ගැනීම සඳහා
#include <string.h>
මඟින් අපට ලබා දී ඇති විශේෂිත අංගය වන්නේstrlen()
keyword එකයි.
#include <stdio.h> #include <string.h> int main() { char words[100]; int length = 0; //length එක keyboard එක මඟින් input නොකරන නිසා 0ට සමාන කිරීම. printf("Enter a string = "); scanf("%s", words); length = strlen(words); //string එකක දිග සංඛ්යාත්මකව ලබා ගැනීම සඳහා strlen() keyword එක භාවිතා කිරීම printf("\nYou have entered = %s", words); printf("\nYour string length is = %d", length); //string එකේ දිග output කිරීම. return 0; }
Output -:
Enter a string = kalana You have entered = kalana Your string length is = 6
ඉහත 6 මඟින් පෙන්නුම් කරන්නේ එක එක අකුර array එකක් තුල store වෙලා ඇති කාමර ප්රමාණයයි. අපි එය මේ විදිහට පැහැදිලි කරගම්මු. මන් කිව්වා array එකක් සෑම විටම පටන් ගන්නේ 0න් කියලා.
- අපි input කරපු වචනය තමා kalana කියන්නේ. එය array එක තුල store වන්නේ මේ ආකාරයටයි.
words[0] = 'k' words[1] = 'a' words[2] = 'l' words[3] = 'a' words[4] = 'n' words[5] = 'a' words[6] සිට words[100] දක්වා අපි කිසිවක් input කර නොමැති හෙයින් ඒවා තිබෙන විදිහටම නිශ්ක්රීයව පවතී.
3. improve above program to revers a string that you have entered from keyboard.
මෙහිදී කියන්නේ අපි ඇතුලත් කරන ඕනෑම string එකක් පැති මාරු කරලා එසේත් නැත්තම් අනිත් පැත්තට ලියන්න කියලා. උදාහරණයක් ගත්තොත් අපි input කලොත්
cat
කියලා ඒක output වෙන්න ඕනේtac
කියලා.කලින් කොටසේ අපි දැනගත්තා string එකක් array එකක් තුල store වෙන ආකාරය. එහිදී kalana කියන නම් array එකේ 0 සිට 5 දක්වා අකුරින් අකුර store උනා. නමුත් අපි එම string එක output කරද්දි ඒ ඉලක්කම් පිලිවෙළට output කලා.
words[0] = 'k' words[1] = 'a' words[2] = 'l' words[3] = 'a' words[4] = 'n' words[5] = 'a' Output = kalana
නමුත් අපි 5 සිට 0 දක්වා පිලිවෙලට array එක සෑදුවොත් මොකද වෙන්නේ
words[5] = 'a' words[4] = 'n' words[3] = 'a' words[2] = 'l' words[1] = 'a' words[0] = 'k' Output = analak
දැන් ඔබට පෙනෙනව ඇති 0 සිට 5ට නොව 5 සිට 0ට array එකේ ඉලක්කම් වෙනස් කලොත් අපිට අපේ string එක අනිත් පැත්ත හරවන්න පුලුවන් කියලා.
#include <stdio.h> #include <string.h> int main() { char words[100]; int length = 0; printf("Enter a string = "); scanf("%s", words); length = strlen(words); printf("\nYou have entered = %s", words); printf("\nYour string length is = %d", length); printf("\nReversed string is = "); length = length - 1; // array එකක් පටන් ගන්නේ 0සිට නිසා අකුරු 6 බිංදුවේ සිට පටන් ගත්තොත් ඉවර වන්නේ 5න් වේ. while(length >= 0) // අපි input කරපු වචනයේ දිග 0ට වඩා විශාල හෝ සමානදැයි බැලීම { printf("%c", words[length]); // අපි input කරපු වචනයේ අවසන් අකුර output වීම length--; // ඊලග අකුර output කිරීම සඳහා අපි input කරපු වචනයේ දිග එකකින් අඩු කිරීම. } return 0; }
Output -:
Enter a string = kalana You have entered = kalana Your string length is = 6 Reversed string is = analak
අපි ඉහත code එක පියවර ආකාරයෙන් බලමු.
-
මන් input කල වචනය වන්නේ kalana යන්නයි.
-
එහි දිග 6ක් බව
strlen()
මඟින් අපි සොයා ගත්තා. -
length = length - 1;
මඟින් අපි 6 කියන ඉලක්කම 5 දක්වා අඩු කලා. -
while loop එකේ පලමු වටය
// length = length - 1; නිසා දැන් length වල නවතම අගය 5 වේ. while(length >= 0) // 5 >= 0 බව සත්ය නිසා while loop එක run වේ. { printf("%c", words[length]); // length = 5 නිසා words[5] හි අගය output වේ. words[5] හි අගය වන්නේ `a` අකුරයි. length--; // 4වන අකුර output කිරීම සඳහා අපි 5 කියන අගය එකකින් අඩු කිරීම සිදු කරයි. }
Output -: a
- while loop එකේ දෙවන වටය
// length--; නිසා දැන් length වල නවතම අගය 4 වේ. while(length >= 0) // 4 >= 0 බව සත්ය නිසා while loop එක run වේ. { printf("%c", words[length]); // length = 4 නිසා words[4] හි අගය output වේ. words[5] හි අගය වන්නේ `n` අකුරයි. length--; // 3වන අකුර output කිරීම සඳහා අපි 4 කියන අගය එකකින් අඩු කිරීම සිදු කරයි. }
Output -: an
- මෙලෙස length 0වීම දක්වා while loop එක run වී අපගේ වචනය අනිත් පැත්ත හරවා අපිට ලබා දේ.
පලමු ප්රශ්නය මෙතනින් අවසන්. දැන් අපි තව ප්රශ්නයක් බලමු.
Question 2
1. Write a C program to input string from keyboard and convert lower case into uppercase.
Hint : ‘a’ – 97, ‘z’ - 122 ‘A’ – 65, ‘Z’ - 90
මෙම ප්රශ්නයෙන් කියන්නේ අපි ඕනෑම වාක්යක් input කල විට එහි ඇති සියලුම simple letters අපිට හරවන්න කියනවා capital letters බවට. අපිට ඉඟියකුත් මෙහිදී දීලා තියෙනවා ASCII code වල ඉංග්රීසි අකුරු වල සංඛ්යාත්මක නිරූපණය. අපිට ලබා දීලා තියෙනවා.
- මෙහි දී ඇති ආකාරයට අපි ඇතුලත් කරන වාක්යයක simple letters හඳුනාගත යුතු වනවා. ඒ සඳහා ඔබට පෙනෙනවා ඇති අපිට අකුරින් අකුර පරීක්ෂා කිරීමට සිදු වන බව. වාක්යයක් අකුරින් අකුර පරීක්ෂා කිරීමට නම් පලමුව එම වාක්යයේ දිග හදුනාගත යුතුයි. ඉන්පසුව එය අකුරින් අකුර පරීක්ෂා කර බැලිය යුතුයි. එම කාර්යයන් සදහා අපට
strlen()
උපයෝගී කරගත හැකිය.
# include <stdio.h> # include <string.h> int main (void) { char word[100]; int i = 0; printf("Enter a string = "); scanf("%s", word); // string එකක් input කිරීම while((strlen(word) - 1) >= i) // strlen(word) මගින් string එකේ දිග සංඛ්යාත්මකව ගෙන එය 0ට වඩා විශාලදැයි බැලීම. මෙහි i වල අගය 0ට සමාන වේ. { printf("%c", word[i]); // 0 සිට string එකේ සංඛ්යාත්මක දිගේ අවසානය දක්වා ගොස් අකුරින් අකුර output කිරීම. i++; //i වල අගය එකකින් වැඩි කිරීම. } return 0; }
Output -:
Enter a string = kalana kalana
-
strlen(word) - 1
භාවිතා කලේ array එකක් සෑම විටම පටන්ගන්නේ 0නි. එමනිසා 0 සිට පටන් ගත්තොත් අවසාන අගයෙන් එකක් අඩු වේ. -
අපි දැන් මීලඟට බලමු simple හා capital අකුරු වල සංක්යාත්මක අගයයන් එනම් ASCII අගයයන්
# include <stdio.h> # include <string.h> int main (void) { char word[100]; int i = 0; printf("Enter a string = "); scanf("%s", word); while(strlen(word) >= i) { printf("%c ", word[i]); printf("%d\n", word[i]); //අපි ඇතුලත් කරන ඉංග්රීසි අකුරේ ASCII අගය output කරයි. i++; } return 0; }
Output -:
Enter a string = AaZz A 65 a 97 Z 90 z 122
- පහත වගුව බලා ASCII රටාව තේරුම් ගනිමු.
a = 97 y = 121 A = 65 Y = 89 වෙනස 32 වෙනස 32 b = 98 z = 122 B = 66 Z = 90 වෙනස 32 වෙනස 32
-
simple වල ASCII අගය පරාසය 97 හා 122 අතර වේ.
-
capital වල ASCII අගය පරාසය 65 හා 90 අතර වේ.
-
ඔබට පෙනෙනවා ඇති සෑම simple අකුරකම ASCII අගය සෑම capital අකුරකම ASCII අගයට වඩා 32කින් වැඩි බව.
-
අපි ඇතුලත් කරන වාක්යය අකුරු වලට කඩා එම අකුරු simple වල ASCII අගය පරාසය වන 97 හා 122 අතරදැයි බලා එය සත්ය නම් එම අගයයන් වලින් 32ක ගානේ අඩු කලොත් අපට අපේ අකුරු capital වලට හැරවීමට හැකි බව ඔබට තේරෙනවා ඇති.
# include <stdio.h> # include <string.h> int main (void) { char word[100]; int i = 0; printf("Enter a string = "); scanf("%s", word); while(strlen(word) >= i) { if(word[i] >= 97 && word[i] <= 122) // අපි input කල වචනයේ අකුරින් අකුර simple letter එකක්දැයි පරීක්ෂා කර බැලීම. එනම් ASCII අගය පරාසය වන 97 හා 122 අතරදැයි පරීක්ෂා කිරීම { word[i] = word[i] - 32; // අගය පරාසය වන 97 හා 122 අතර අතරනම් එම අකුර capital බවට හැරවීමට 32ක් අඩු කිරීම. එවිට එම simple අකුරු capital අකුරු බවට හැරවේ. } i++; } printf("After converting it to uppercase = %s", word); return 0; }
Output -:
Enter a string = kalana After converting it to uppercase = KALANA
if(word[i] >= 97 && word[i] <= 122)
වෙනුවටif(word[i] >= 65 && word[i] <= 90)
යෙදීමෙන් capital letters හරවන්න පුලුවන් simple letters බවට
මන් ඔයාලට තව ප්රශ්නයක් දෙන්නම් උත්තරත් එක්ක. තනියම ට්රයි කරලා බලන්න උත්තර බලන් නැතුව.
Question 3 -: A palindrome is a word, phrase, number or other sequence of characters which reads the same backward and forward. Write a C program that enter a word, store it in a array and determine whether it is palindrome or not.
Example : CIVIC is a palindrome HOT is a not a palindrome
palindrome කියන්නේ වචනයක් අනිත් පැත්ත හැරෙව්වත් තිබුණ විදිහටම තියෙන වචන
CIVIC
කියන එකේ අකුරු අනිත් පැත්ත හැරෙව්වත් ඒක ආයේ කියැවෙන්නෙත්CIVIC
විදිහටමයි. ඒත්HOT
කියන එක අනිත් පැත්ත හැරෙව්වොත් කියැවෙන්නේTOH
ලෙසයි. එමනිසා HOT කියන එක palindrome එකක් නොවේ.Answer -: https://drive.google.com/open?id=1_zT4tXtYW6jQL5PySmXImp3_7ngAYbxw
Another Answer -: https://drive.google.com/open?id=1xhp3bUjwmH-jPQ0FQyAUOln8BJp9sFzI
- C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR
ඔබට අවශ්යනම් ඔබේ බ්රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්
- https://www.onlinegdb.com/online_c_compiler
- https://www.tutorialspoint.com/compile_c_online.php
- https://repl.it/languages/c
සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site කිහිපයක් මන් දාන්නම්
- https://www.geeksforgeeks.org/c-programming-language/
- https://www.tutorialspoint.com/cprogramming/index.htm
- https://beginnersbook.com/2014/01/c-tutorial-for-beginners-with-examples/
web url කෙටි කරන්න lankadevelopers ලා හදපු එයාලගෙම සයිට් එකක් තියෙනවා. -> https://link.lankadevelopers.com/
මගේ කලින් ලිපි
- C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://link.lankadevelopers.com/4WpH
- C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://link.lankadevelopers.com/mXio
- C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://link.lankadevelopers.com/SHNt
- C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions) -: https://link.lankadevelopers.com/2MNku
- C Programming මුල සිට ඉගෙනගනිමු (part 5 - create simple applications) -: https://link.lankadevelopers.com/KUF6
- C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 1)) -: https://link.lankadevelopers.com/8Xe71
- C Programming මුල සිට ඉගෙනගනිමු (part 7 - Format Specifiers in C) -: https://link.lankadevelopers.com/761PT
- C Programming මුල සිට ඉගෙනගනිමු (part 8 - Switch Statement) -: https://link.lankadevelopers.com/7jncK
- C Programming මුල සිට ඉගෙනගනිමු (part 9 - While loop) -: https://link.lankadevelopers.com/4TBV5
- C Programming මුල සිට ඉගෙනගනිමු (part 10 - do-while loop) -: https://link.lankadevelopers.com/4WcNd
- C Programming මුල සිට ඉගෙනගනිමු (part 11 - for loop) -: https://link.lankadevelopers.com/8utoa
- C Programming මුල සිට ඉගෙනගනිමු (part 12 - arrays) -: https://link.lankadevelopers.com/46cyf
- C Programming මුල සිට ඉගෙනගනිමු (part 13 - 2D-arrays) -: https://link.lankadevelopers.com/4Q9Gt
- C Programming මුල සිට ඉගෙනගනිමු (part 14 - Strings) -: https://link.lankadevelopers.com/58zWd
මේ ලිපියෙන් Strings වල එන මූලික කරුණු සියල්ලක්ම පාහේ අපි සාකච්ජා කලා. මන් ඊලග ලිපියෙන් C functions ගැන හා ඒවා භාවිතා කරන විදිහ ඔයාලට කියලා දෙන්නම්. මගේ ලිපි වල අඩුපාඩු තියෙනවනම් දන්නේ නැති දේවල් තියෙනවනම් පහලින් කමෙන්ට් එකක් දාන්න.
තව ලිපියකින් හම්බෙමු ජය වේවා.
-
-
C Programming මුල සිට ඉගෙනගනිමු (part 14 - Strings)
සුබ දවසක් වේවා ඔයාලට. අද මන් මේ ලිපිය මඟින් කතා කිරීමට බලාපොරොත්තු වන්නේ C Programming වල එන Strings ගැනයි. මොනාද මේ Strings කියලා කියන්නේ. සරලව පැහැදිලි කලොත් String එකක් කියලා කියන්නේ characters කිහිපයක් එකතු වී සෑදුණු array එකක් කියලා කිව්වොත් නිවැරදියි. අපි characters(char) පාවිච්චි කරද්දි අපිට එක්වරකට output කරන්න පුලුවන් එක character එකක් විතරයි, හැබැයි Strings වලදී අපිට ඕන තරම් characters එකවර output කරන්න පුලුවන්. අපි මෙහිදී සාකච්ජා කිරීමට බලාපොරොත්තු වන්නේ Strings යොදා ගනිමින් කරන්න පුලුවන් වැඩ, දිගු කාර්යයන් කෙටියෙන් කරගන්න වගේ දේවල් ගැන.
මන් මගේ පලවෙනි ලිපියේ කිව්වා
prinf()
,scanf()
වගේ දේවල් store වෙලා තියෙන්නේ#include <stdio.h>
යන header file එක ඇතුලේ කියලා. එතකොට Strings වලටත් අපි වෙනම header file එකක් භාවිතා කරනවා. ඒ තමයි#include <string.h>
කියන header file එක.Array එකක් භාවිතා කර String එකක් ලිවිය හැකි ආකාර දෙකක් පවතිනවා.
-
char name[]={'K', 'A', 'L', 'A', 'N', 'A', \0'}
-: \0 යොදාගන්නේ String එක එම ලකුණින් අවසන් වන බව පෙන්වීමටයි. මෙය NULL character ලෙස හදුන්වයි. -
char name[]="KALANA";
-: මෙහිදී \0 ලකුණ යොදන්නේ නැත්තේ එය automatically වචනය අවසානයේ add වන නිසාවෙනි.
අපි දැන් මේ සාකච්ජා කල කරුණු භාවිතා කර සරල C Program එකක් ලියමු.
#include <stdio.h> #include <string.h> // string header එක භාවිතා කල යුතු වේ. int main() { char name[20]; printf("Enter your Name = "); scanf("%s", name); // අනික් ඒවා මෙන් නොව මෙහිදී & ලකුණ යෙදිය යුතු නොවේ. printf("Your name is = %s",name); //string එකක් input කිරීමට හා output කිරීමට %s යොදා ගනී return 0; }
Output -:
Enter your Name = Kalana Your name is = Kalana
මම මගේ 4වෙනි ලිපියෙන් කතා කලා
gets()
හාputs()
ගැන. අපි ඒවා යොදා ගනිමින් ඉහත Program එක නැවත ලියමු.#include <stdio.h> #include <string.h> int main() { char nickname[20]; puts("Enter your Name = "); gets(nickname); puts("Your name is = "); puts(nickname); return 0; }
Output -:
Enter your Name = Kalana Your name is = Kalana
ඉහත උදාහරණ වලින් ඔබට පෙනෙනවා ඇති Strings වල ක්රියාකාරිත්වය. අපි දැන් කතා කරමු Strings වල එන functions මොනාද කියලා.
strlen
-: string එකක දිග සංඛ්යාත්මකව ගැනීම මෙමගින් සිදු කරයි.strlwr
-: string එකක තියෙන සියලුම අකුරු simple letters එනම් lowercase වලට හැරවීම සිදු කරයිstrupr
-: string එකක තියෙන සියලුම අකුරු capital letters එනම් uppercase වලට හැරවීම සිදු කරයිstrcat
-: string දෙකක් වෙන වෙනම ඇති අවස්තාවකදී එක් string එකක් තව string එකකට බද්ද කිරීම සිදු කරයි.strncat
-: string දෙකක් වෙන වෙනම ඇති අවස්තාවකදී එක් string එකක් තව string එකකට බද්ද කිරීමෙන් අනතුරුව අවසාන කොටසින් අපට කැමති අකුරු ගණනක් තබාගෙන ඉතුරු අකුරු ඉවත් කිරීම මෙමඟින් සිදු කරයි.strcpy
-: string එකක් තව string එකකට copy and paste කිරීම සිදු කරයි.strncpy
-: string එකක් තව string එකකට copy and paste කර අපට කැමති අකුරු ප්රමාණයක් තබාගෙන ඉතුරු අකුරු ඉවත් කිරීම මෙමඟින් සිදු කරයි.strcmp
-: string එකක් තව string එකකට සෑම අතින්ම සමානදැයි පරීක්ෂා කිරීම මෙමඟින් සිදු කරයි.strncmp
-: string එකක් තව string එකකට සෑම අතින්ම සමානදැයි string දෙකෙන්ම තෝරාගත් එකලඟ අකුරු කිහිපයක් මඟින් පරීක්ෂා කර බැලීම.strcmpi
-: simple හා capital අකුරු නොසලකා හරිමින් string එකක් තව string එකකට සෑම අතින්ම සමානදැයි පරීක්ෂා කිරීම මෙමඟින් සිදු කරයි.stricmp
-: මෙහි කාර්යයstrcmpi
කාර්යයට සමාන වේ.strnicmp
-: simple හා capital අකුරු නොසලකා හරිමින් string එකක් තව string එකකට සෑම අතින්ම සමානදැයි string දෙකෙන්ම තෝරාගත් එකලඟ අකුරු කිහිපයක් මඟින් පරීක්ෂා කර බැලීම මෙමඟින් සිදු කරයි.strdup
-: string එකක duplicate එකක් හදන එකයි මේකෙන් කරන්නේ.strchr
-: අපි අකුරක් දුන්නොත් ඒ අකුර පලමුවට හමුවන ස්තානයේ සිට string එක අවසන් වන ස්තානය දක්වා වචන ටික output වේ.strrchr
-: අපි අකුරක් දුන්නොත් ඒ අකුර අවසන් වතාවට හමුවන ස්තානයේ සිට string එක අවසන් වන ස්තානය දක්වා වචන ටික output වේ.strstr
-: අපි වචනයක් දුන්නොත් ඒ වචනය පලමුවට හමුවන ස්තානයේ සිට string එක අවසන් වන ස්තානය දක්වා වචන ටික output වේ.strset
-: string එකක ඇති අකුරු වෙනුවට අපට කැමති අකුරක් එම string එකේ තිබූ අකුරු ගණනට සමාන ලෙස ආදේශ කිරීම මෙමඟින් සිදු කරයි. passwords වලදී මෙය බොහෝ විට භාවිතා කරයි.strnset
-: string එකක මුල් අකුරින් පටන් අරන් අපට කැමති අකුරක් string එකේ තිබූ අකුරු ගණනට සමාන ලෙස ආදේශ කිරීම මෙමඟින් සිදු කරයිstrrev
-: string එකක් ආපස්සට(reverse) එකට ලිවීම මෙමඟින් සිදු කරයි.
මේ විදිහට පැහැදිලි කලාට සමහර දේවල් ඔයාලට පැහැදිලි මදියි. ඒ හින්දා දැන් මන් ඉහත සඳහන් කරපු functions ගැන එකින් එක අරන් උදාහරණ මඟින් පහදලා දෙන්නම්.
strlen
string එකක දිග සංඛ්යාත්මකව ගැනීම මෙමගින් සිදු කරයි.
#include <stdio.h> #include <string.h> int main() { char name[20] = "Kalana"; printf("Length of the string = %d", strlen(name)); // මම ඇතුලත් කරපු නමේ දිග මෙයින් output කරයි. Kalana කියන එකේ අකුරු 6ක් ඇති නිසා එහි දුග 6ක් වේ. return 0; }
Output -:
Length of the string = 6
strlwr
string එකක තියෙන සියලුම අකුරු simple letters එනම් lowercase වලට හැරවීම සිදු කරයි. මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.
#include<stdio.h> #include<string.h> int main() { char name[20] = "Kalana ERANDA"; printf("My name is = %s", strlwr(name)); return 0; }
Output -:
My name is = kalana eranda
strupr
string එකක තියෙන සියලුම අකුරු capital letters එනම් uppercase වලට හැරවීම සිදු කරයි. මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.
#include<stdio.h> #include<string.h> int main() { char name[20] = "KalanA eranda"; printf("My name is = %s", strupr(name)); return 0; }
Output -:
My name is = KALANA ERANDA
strcat
string දෙකක් වෙන වෙනම ඇති අවස්තාවකදී එක් string එකක් තව string එකකට බද්ධ කිරීම සිදු කරයි.
#include <stdio.h> #include <string.h> int main() { char word1[10] = "Hello"; //අපගේ පලමු string එක char word2[10] = "World"; // අපගේ දෙවන string එක strcat(word1, word2); //දෙවන string එක පලමුවන string එකට බද්ධ කිරීම printf("Output after connecting two strings = %s", word1); //බද්ධ කිරීමෙන් අනතුරුව පලමු string එකේ නවතම අගය. return 0; }
Output -:
Output after connecting two strings = HelloWorld
strncat
string දෙකක් වෙන වෙනම ඇති අවස්තාවකදී එක් string එකක් තව string එකකට බද්ද කිරීමෙන් අනතුරුව අවසාන කොටසින් අපට කැමති අකුරු ගණනක් තබාගෙන ඉතුරු අකුරු ඉවත් කිරීම මෙමඟින් සිදු කරයි.
#include <stdio.h> #include <string.h> int main() { char word1[10] = "Hello"; char word2[10] = "World"; strncat(word1, word2, 3); //මෙහි 3න මඟින් කියැවෙන්නේ string දෙක බද්ධ වූ පසු දෙවෙනියට බද්ධ කල වචනයෙන් පලමු අකුරු තුන තියාගෙන ඉතුරු අකුරු ටික අයින් කරලා දාන ලෙසයි. printf("Output after connecting two strings = %s", word1); return 0; }
Output -:
Output after connecting two strings = HelloWor //3 යෙදූ නිසා World වලින් පලමු අකුරු තුන පමණක් output වේ.
strcpy
string එකක් තව string එකකට copy and paste කිරීම සිදු කරයි.
#include <stdio.h> #include <string.h> int main() { char word1[30] = "Hello"; char word2[30] = "My name is kalana"; strcpy(word1, word2); // word2 වල ඇති මුලු අගය word1 වලට copy කරයි. එවිට word1 හි නවතම අගය වන්නේ "Hello" නොව "My name is kalana" යන්නයි. printf("After copying, word1's value is = %s", word1); return 0; }
Output -:
After copying, word1's value is = My name is kalana
strncpy
string එකක් තව string එකකට copy and paste කර අපට කැමති අකුරු ප්රමාණයක් තබාගෙන ඉතුරු අකුරු ඉවත් කිරීම මෙමඟින් සිදු කරයි.
#include <stdio.h> #include <string.h> int main() { char word1[30] = "Hello"; char word2[30] = "My name is kalana"; strncpy(word1, word2, 7); // word2 වල ඇති පලමු අගයන් 7 පමණක් word1 වලට copy කිරීම සිදු කරයි. එවිට word1 හි නවතම අගය වන්නේ "Hello" නොව "My name" යන්නයි. printf("After copying, word1's value is = %s", word1); return 0; }
Output -:
After copying, word1's value is = My name
strcmp
string එකක් තව string එකකට සෑම අතින්ම සමානදැයි පරීක්ෂා කිරීම මෙමඟින් සිදු කරයි.
#include <stdio.h> #include <string.h> int main() { char word1[20] = "google"; char word2[20] = "google.com"; if (strcmp(word1, word2) == 0) //word1 හා word2 වල අගයන් එකිනෙකට සමාන කර බලා එය 0ට සමානනම් එම අගයන් දෙක එකිනෙකට සමාන වේ. { printf("word1 and word2 are equal"); } else //එසේ නොමැතිනම් word1 හා word2 වල අගයන් එකිනෙකට සමාන කර බලා එය 1ට සමානනම් එම අගයන් දෙක එකිනෙකට අසමාන වේ. { printf("word1 and word2 are different"); } return 0; }
Output -:
word1 and word2 are different
- second run
#include <stdio.h> #include <string.h> int main() { char word1[20] = "google"; char word2[20] = "google"; if (strcmp(word1, word2) == 0) //word1 හා word2 වල අගයන් එකිනෙකට සමාන කර බලා එය 0ට සමානනම් එම අගයන් දෙක එකිනෙකට සමාන වේ. { printf("word1 and word2 are equal"); } else //එසේ නොමැතිනම් word1 හා word2 වල අගයන් එකිනෙකට සමාන කර බලා එය 1ට සමානනම් එම අගයන් දෙක එකිනෙකට අසමාන වේ. { printf("word1 and word2 are different"); } return 0; }
Output -:
word1 and word2 are equal
strncmp
string එකක් තව string එකකට සෑම අතින්ම සමානදැයි string දෙකෙන්ම තෝරාගත් එකලඟ අකුරු කිහිපයක් මඟින් පරීක්ෂා කර බැලීම.
#include <stdio.h> #include <string.h> int main() { char word1[20] = "google"; char word2[20] = "google.com"; if (strncmp(word1, word2, 6) == 0) //word2 වල එන පලමු අකුරු 6 පමණක් word1 වල අගයට සමාන කරයි. 6 මඟින් සිදු කරන්නේ එම කාර්යයයි. { printf("word1 and word2 are equal"); } else { printf("word1 and word2 are different"); } return 0; }
Output -:
word1 and word2 are equal
- second run
#include <stdio.h> #include <string.h> int main() { char word1[20] = "google"; char word2[20] = "google.com"; if (strncmp(word1, word2, 8) == 0) //word2 වල එන පලමු අකුරු 6 පමණක් word1 වල අගයට සමාන කරයි. 6 මඟින් සිදු කරන්නේ එම කාර්යයයි. { printf("word1 and word2 are equal"); } else { printf("word1 and word2 are different"); } return 0; }
Output -:
word1 and word2 are different
strcmpi
හාstricmp
simple හා capital අකුරු නොසලකා හරිමින් string එකක් තව string එකකට සෑම අතින්ම සමානදැයි පරීක්ෂා කිරීම මෙමඟින් සිදු කරයි. මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.
#include <stdio.h> #include <string.h> int main() { char word1[20] = "google"; char word2[20] = "GOOGLE"; if (strcmpi(word1, word2) == 0) { printf("word1 and word2 are equal"); //simple හා capital අකුරු නොසලකා හරිමින් word1, word2 වලට සමානදැයි පරීක්ෂා කර බලයි. } else { printf("word1 and word2 are different"); } return 0; }
Output -:
word1 and word2 are equal
strnicmp
simple හා capital අකුරු නොසලකා හරිමින් string එකක් තව string එකකට සෑම අතින්ම සමානදැයි string දෙකෙන්ම තෝරාගත් එකලඟ අකුරු කිහිපයක් මඟින් පරීක්ෂා කර බැලීම මෙමඟින් සිදු කරයි.
මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.#include <stdio.h> #include <string.h> int main() { char word1[20] = "google"; char word2[20] = "GooGLe.COM"; if (strnicmp(word1, word2, 6) == 0) //පලමු අකුරු 6 පමණක් සසඳා බලයි { printf("word1 and word2 are equal"); } else { printf("word1 and word2 are different"); } return 0; }
Output -:
word1 and word2 are equal
strdup
string එකක duplicate එකක් හදන එකයි මේකෙන් කරන්නේ. මෙය අනිත් ඒවා මෙන් නොව මුල් variable එකට හානියක් නොකරයි.
#include<stdio.h> #include<string.h> int main() { char name[] = "Kalana Eranda"; //ප්රධාන variable එක char *duplicate = strdup(name); // ප්රධාන variable යොදා ගනිමින් සෑදූ එහි duplicate variable එක. printf("name is = %s", name); //ප්රධාන variable එක output කිරීම. printf("\nduplicate of name is = %s", duplicate); //duplicate variable එක output කිරීම. return 0; }
Output -:
name is = Kalana Eranda duplicate of name is = Kalana Eranda
strchr
අපි අකුරක් දුන්නොත් ඒ අකුර පලමුවට හමුවන ස්තානයේ සිට string එක අවසන් වන ස්තානය දක්වා වචන ටික output වේ.
#include <stdio.h> #include <string.h> int main() { char word[50] = "I am an example of function strchr from strings"; printf ("%s", strchr(word, 'f')); //අපිට මෙහි පලවෙනියටම හමුවන f අකුර පවතින්නේ of තුලයි. එබැවින් එම f අකුරේ සිට word එක අවසානය දක්වා සියලු වචන output වේ. return 0; }
Output -:
f function strchr from strings
strchr
අපි අකුරක් දුන්නොත් ඒ අකුර අවසන් වතාවට හමුවන ස්තානයේ සිට string එක අවසන් වන ස්තානය දක්වා වචන ටික output වේ.
#include <stdio.h> #include <string.h> int main() { char word[50] = "I am an example of function strchr from strings"; printf ("%s", strrchr(word, 'f')); //මෙහිදී අපට අවසානයටම f අකුරක් ලැබෙන ස්තනය වන්නේ from කියන තැන f අකුරයි. එම f අකුර පටන් ගන්නා ස්තානයේ සිට word එක අවසානය දක්වා සියලු වචන output වේ. return 0; }
Output -:
from strings
strstr
අපි වචනයක් දුන්නොත් ඒ වචනය පලමුවට හමුවන ස්තානයේ සිට string එක අවසන් වන ස්තානය දක්වා වචන ටික output වේ.
#include <stdio.h> #include <string.h> int main() { char word[50] = "I am an example of function strchr from strings"; printf ("%s", strstr(word, "ampl")); //ampl කියන කොටස ඇත්තේ example කියන වචනය තුලයි. එබැවින් ampl කියන කොටසේ සිට word එක අවසානය දක්වා සියලු වචන output වේ. return 0; }
Output -:
ample of function strchr from strings
strset
string එකක ඇති අකුරු වෙනුවට අපට කැමති අකුරක් එම string එකේ තිබූ අකුරු ගණනට සමාන ලෙස ආදේශ කිරීම මෙමඟින් සිදු කරයි. passwords වලදී මෙය බොහෝ විට භාවිතා කරයි. මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.
#include<stdio.h> #include<string.h> int main() { char password[20] = "kalana"; printf("Original string is = %s", password); //අපගේ Original වචනය මෙමගින් output කෙරේ. printf("After using strset() = %s", strset(password,'*')); // kalana වල එන අකුරු 6වෙනුවට එම අකුරු 6ට '*' ලකුන ආදේශ කර නවතම තරු අගය output කෙරේ. return 0; }
Output -:
Original string is = kalana After using strset() = ******
strnset
string එකක මුල් අකුරින් පටන් අරන් අපට කැමති අකුරක් string එකේ තිබූ අකුරු ගණනට සමාන ලෙස ආදේශ කිරීම මෙමඟින් සිදු කරයි. මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.
#include<stdio.h> #include<string.h> int main() { char password[20] = "kalana"; printf("Original string is = %s", password); //අපගේ Original වචනය මෙමගින් output කෙරේ. printf("After using strset() = %s", strset(password,'*', 3)); // kalana වල එන පලමු අකුරු 3 වන kal වෙනුවට එම අකුරු 3ට '*' ලකුන ආදේශ කර නවතම තරු අගය output කෙරේ. return 0; }
Output -:
Original string is = kalana After using strset() = ***ana
strrev
string එකක් ආපස්සට(reverse) එකට ලිවීම මෙමඟින් සිදු කරයි. මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.
#include<stdio.h> #include<string.h> int main() { char name[50] = "kalana"; printf("Original name is = %s\n", name); printf("After reversing, new name is = %s", strrev(name)); //අපි ඇතුලත් කල වචනය කණපිට හැරවීම සිදු කරයි. return 0; }
Output -:
Original name is = = kalana After reversing, new name is = analak
- C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR
ඔබට අවශ්යනම් ඔබේ බ්රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්
- https://www.onlinegdb.com/online_c_compiler
- https://www.tutorialspoint.com/compile_c_online.php
- https://repl.it/languages/c
සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site කිහිපයක් මන් දාන්නම්
- https://www.geeksforgeeks.org/c-programming-language/
- https://www.tutorialspoint.com/cprogramming/index.htm
- https://beginnersbook.com/2014/01/c-tutorial-for-beginners-with-examples/
web url කෙටි කරන්න lankadevelopers ලා හදපු එයාලගෙම සයිට් එකක් තියෙනවා. -> https://link.lankadevelopers.com/
මගේ කලින් ලිපි
- C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://link.lankadevelopers.com/4WpH
- C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://link.lankadevelopers.com/mXio
- C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://link.lankadevelopers.com/SHNt
- C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions) -: https://link.lankadevelopers.com/2MNku
- C Programming මුල සිට ඉගෙනගනිමු (part 5 - create simple applications) -: https://link.lankadevelopers.com/KUF6
- C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 1)) -: https://link.lankadevelopers.com/8Xe71
- C Programming මුල සිට ඉගෙනගනිමු (part 7 - Format Specifiers in C) -: https://link.lankadevelopers.com/761PT
- C Programming මුල සිට ඉගෙනගනිමු (part 8 - Switch Statement) -: https://link.lankadevelopers.com/7jncK
- C Programming මුල සිට ඉගෙනගනිමු (part 9 - While loop) -: https://link.lankadevelopers.com/4TBV5
- C Programming මුල සිට ඉගෙනගනිමු (part 10 - do-while loop) -: https://link.lankadevelopers.com/4WcNd
- C Programming මුල සිට ඉගෙනගනිමු (part 11 - for loop) -: https://link.lankadevelopers.com/8utoa
- C Programming මුල සිට ඉගෙනගනිමු (part 12 - arrays) -: https://link.lankadevelopers.com/46cyf
- C Programming මුල සිට ඉගෙනගනිමු (part 13 - 2D-arrays) -: https://link.lankadevelopers.com/4Q9Gt
මේ ලිපියෙන් Strings වල එන මූලික කරුණු සියල්ලක්ම පාහේ අපි සාකච්ජා කලා. මන් ඊලග ලිපියෙන් Strings යොදාගෙන ගැටලු විසඳන හැටි ඔයාලට කියලා දෙන්නම්. මගේ ලිපි වල අඩුපාඩු තියෙනවනම් දන්නේ නැති දේවල් තියෙනවනම් පහලින් කමෙන්ට් එකක් දාන්න.
තව ලිපියකින් හම්බෙමු ජය වේවා. -
-
C Programming මුල සිට ඉගෙනගනිමු (part 13 - 2D-arrays)
සුබ දවසක් වේවා ඔයාලට. අද මන් මේ ලිපිය මඟින් කතා කිරීමට බලාපොරොත්තු වන්නේ C Programming වල එන 2D-arrays ගැනයි. 2D කිව්වාම ඔයාලා දන්නවා මාන 2ක් පමණක් ඇති වස්තූන් වලට තමා 2D කියලා කියන්නේ. එතකොට මේකෙදි බැලුවොත් arrays හා 2D-arrays වල වෙනස වෙන්නේ arrays වල values output කරන්නේ හරහට 2D-arrays වල values output හරහට හා
පහලට යන දෙපැත්තටමය.උදාහරණ -:
array = 1 2 3 4 5 6 7 8 9 (දත්ත ගලන්නේ එක් දිශාවකට පමණි) 2D-array = 1 2 3 (දත්ත දිශාවන් දෙකකට ගලයි) 4 5 6 7 8 9
2D-arrays බොහෝ විට යොදාගන්නා අවස්තාවලින් කිහිපයක් වන්නේ ගණිත විශයේ එන න්යාස නිරූපනය හා එහි ගැටළු විසදීම, වගු නිර්මාණය කිරීම වගේ දේවල් වලට හා තවත් සංකීර්ණ ගැටළු සඳහාත් මෙය යොදා ගනී.
අපි Program එකක් ලියන්න කලින් 2D-arrays වල එන වැදගත් කරුණු දැන ගනිමු.
- array එකක සේම 2D-array එකකත් data type වර්ග variable data type වර්ග වලට සමාන වේ. (
int, float, char, short,...,etc
). - 2D-array එකක මූලික ආකෘතිය වන්නේ
<data type> <array name>[][]
. (උදා -:int number[][]
,float marks[][]
,char words[][]
,....,etc)
<data type> <array name>[පේලි හෙවත් raws ගණන][තීරු හෙවත් column ගණන]
- 2D-array එකක් භාවිතා කරන සම්මත ආකාර වන්නේ
int numbers[2][5] = {{1, 2, 3, 4 ,5},{6, 7, 8, 9, 10}};
හෝ
int numbers[2][5] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
අකාරවලින් වේ. - 2D-array එකක්
int numbers[2][5]
ලෙස භාවිතා කලොත් එයින් අදහස් වන්නේ එය තුල 0, 1, 2 ලෙස පේලි 3කුත්, 0, 1, 2, 3, 4, 5 ලෙස තීරු 5කුත් ඇති බවයි. මන් එය උදාහරණයක් මඟින් පැහැදිලි කරන්නම්.
int numbers[2][5] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10} };
ඔබට පෙනෙනවා ඇති ඉහත සටහනේ පේලි 2ක් හා තීරු 5ක් ඇති බව. අපි දැන් එහි එක් එක් ඉලක්කමේ ඛණ්ඩාංක ගනිමු.
int numbers[0][0] = 1 int numbers[0][1] = 2 int numbers[0][2] = 3 int numbers[0][3] = 4 int numbers[0][4] = 5 int numbers[0][5] // අපට 2D-array වලදී සෑම විටම භාවිතා කල හැක්කේ numbers[n - 1][n - 1] දක්වා පමණි. එමනිසා අපට numbers[0][5] යන්නට සංඛ්යාවක් ආදේශ කිරීම සදහා භාවිතා කල නොහැක. int numbers[1][0] = 6 int numbers[1][1] = 7 int numbers[1][2] = 8 int numbers[1][3] = 9 int numbers[1][4] = 10 int numbers[1][5] // අපට 2D-array වලදී සෑම විටම භාවිතා කල හැක්කේ numbers[n - 1][n - 1] දක්වා පමණි. එමනිසා අපට numbers[1][5] යන්නට සංඛ්යාවක් ආදේශ කිරීම සදහා භාවිතා කල නොහැක. int numbers[2][0] //අපට 2D-array වලදී සෑම විටම භාවිතා කල හැක්කේ numbers[n - 1][n - 1] දක්වා පමණි. එමනිසා අපට numbers[2][0] යන්නට සංඛ්යාවක් ආදේශ කිරීම සදහා භාවිතා කල නොහැක.
මෙය සරලව දැක්වුවහොත්
[0][1][2][3][4] [0] 1 2 3 4 5 [1] 6 7 8 9 10
2D-array එකක් නිවැරදිව ලිවිය හැකි ආකාර අපි බලමු.
int abc[2][2] = {1, 2, 3 ,4 }
int abc[][2] = {1, 2, 3 ,4 }
int abc[2][2] = {{1, 2}, {3 ,4}}
2D-array එකක් මෙසේ ලියා තිබුනොත් වැරදි අවස්තාවක් ලෙස සලකයි.
int abc[][] = {1, 2, 3 ,4 }
//තීරු ගණන හා පේලි ගණන දක්වා නැත.int abc[2][] = {1, 2, 3 ,4 }
//තීරු ගණන දක්වා නැත.
අපි දැන් මෙම දැනුම භාවිතා කර සරල C Program එකක් ලියමු.
Question -: Output the following matrix using 2D-array.
1 2 3 4 5 6 7 8
අපට මෙහි කිරීමට ඇත්තේ ඉහත සඳහන් න්යාසය C Program එකක් මඟින් නිරූපණය කිරීමටයි.
- මෙම දී ඇති න්යාසයේ පේලි 4ක් හා තීරු 2 ඇති බැවින් අප අපගේ 2D-array එක සාදාගත යුත්තේ
int numbers[4][2]
ලෙසය.
#include <stdio.h> int main() { int numbers[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}}; //අපගේ 2D-array එක int raw; // අපගේ පේලි 4 නිරූපණය කරන variable එක int column; // අපගේ තීරු 2 නිරූපණය කරන variable එක for(raw = 0; raw < 4; raw++) // අපගේ පේලි 4 count කරන for loop එක { for(column = 0 ; column < 2 ; column++) // අපගේ තීරු 2 count කරන for loop එක { printf("%d ", numbers[raw][column]); } printf("\n"); } return 0; }
Output -:
1 2 3 4 5 6 7 8
අපි ඉහත Program එක ක්රියා කරන ආකාරය පියවර ආකාරයෙන් බලමු.
පලමු පියවර
for(raw = 0; raw < 4; raw++) // raw = 0 බව දී ඇති නිසා 0 සෑම විටම 4 ට වඩා කුඩා නිසාත් loop එක ඇතුලත codes run වේ. { for(column = 0 ; column < 2 ; column++) // column = 0 බව දී ඇති නිසා 0 සෑම විටම 2ට වඩා කුඩා නිසාත් loop එක ඇතුලත codes run වේ. { printf("%d ", numbers[raw][column]); // raw = 0 හා column = 0 බැවින් [0][0] ස්තානයේ ඇති ඉලක්කම output වේ. [0][0] ස්තානයේ ඇති ඉලක්කම වන්නේ 1යි. } printf("\n"); }
දෙවන පියවර
for(column = 1 ; column < 2 ; column++) // column++ මඟින් column වල අගය එකකින් වැඩිවන නිසා දැන් column වල අගය වන්නේ 1 වේ. 1 < 2 නිසා loop එක ඇතුලත codes run වේ. { printf("%d ", numbers[raw][column]); // raw = 0 හා column = 1 බැවින් [0][1] ස්තානයේ ඇති ඉලක්කම output වේ. [0][1] ස්තානයේ ඇති ඉලක්කම වන්නේ 2යි. }
තුන්වන පියවර
//column++ මඟින් column වල අගය එකකින් වැඩිවන නිසා දැන් column වල අගය වන්නේ 2 වේ. 2 < 2 අසත්ය වන නිසා එම loop එකෙන් එලියට පැමිනේ. for(raw = 0; raw < 4; raw++) // raw++ මගින් raw වල අගය එකකින් වැඩිවන නිසා දැන් raw වල අගය වන්නේ 1 වේ. 1 < 4 නිසා loop එක ඇතුලත codes run වේ. { for(column = 0 ; column < 2 ; column++) // column = 0 බව දී ඇති නිසා 0 සෑම විටම 2ට වඩා කුඩා නිසාත් loop එක ඇතුලත codes run වේ. { printf("%d ", numbers[raw][column]); // raw = 1 හා column = 0 බැවින් [1][0] ස්තානයේ ඇති ඉලක්කම output වේ. [1][0] ස්තානයේ ඇති ඉලක්කම වන්නේ 3යි. } printf("\n"); }
මෙසේ දිගටම මේ ආකරයෙන් පියවර සිදු වෙමින් අපට අවශ්ය Output එක මෙම Program එකෙන් ලබා දීම සිදු කරයි.
මන් ඔයාලට ප්රශ්නෙකුත් දෙන්නම් කරන්න මේකෙන්. උත්තරෙත් දෙන්නම් ඒ එක්ක.
Question 1 -: Write a C program to find total of between these two matrix.
3 7 8 1 2 5 1 9 2 4 6 5 + 3 8 4 6 = ? 5 1 4 2 1 3 3 2
Answer -:
#include <stdio.h> int main() { int numbers1[3][4] = {{3, 7, 8, 1}, {2, 4, 6, 5}, {5, 1, 4, 2}}; int numbers2[3][4] = {{2, 5, 1, 9}, {3, 8, 4, 6}, {1, 3, 3, 2}}; int total[3][4]; int raw; int column; for(raw = 0; raw < 3; raw++) { for(column = 0 ; column < 4 ; column++) { total[raw][column] = numbers1[raw][column] + numbers2[raw][column]; } } for(raw = 0; raw < 3; raw++) { for(column = 0 ; column < 4 ; column++) { printf("%4d", total[raw][column]); // %4d යොදාගත්තේ output වන සංඛ්යා වල නිශ්චිත දුරක් පවත්වා ගැනීමටයි. } printf("\n"); } return 0; }
Output -:
5 12 9 10 5 12 10 11 6 4 7 4
- C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR
ඔබට අවශ්යනම් ඔබේ බ්රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්
- https://www.onlinegdb.com/online_c_compiler
- https://www.tutorialspoint.com/compile_c_online.php
- https://repl.it/languages/c
සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site කිහිපයක් මන් දාන්නම්
- https://www.geeksforgeeks.org/c-programming-language/
- https://www.tutorialspoint.com/cprogramming/index.htm
- https://beginnersbook.com/2014/01/c-tutorial-for-beginners-with-examples/
web url කෙටි කරන්න lankadevelopers ලා හදපු එයාලගෙම සයිට් එකක් තියෙනවා. -> https://link.lankadevelopers.com/
මගේ කලින් ලිපි
- C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://link.lankadevelopers.com/4WpH
- C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://link.lankadevelopers.com/mXio
- C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://link.lankadevelopers.com/SHNt
- C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions) -: https://link.lankadevelopers.com/2MNku
- C Programming මුල සිට ඉගෙනගනිමු (part 5 - create simple applications) -: https://link.lankadevelopers.com/KUF6
- C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 1)) -: https://link.lankadevelopers.com/8Xe71
- C Programming මුල සිට ඉගෙනගනිමු (part 7 - Format Specifiers in C) -: https://link.lankadevelopers.com/761PT
- C Programming මුල සිට ඉගෙනගනිමු (part 8 - Switch Statement) -: https://link.lankadevelopers.com/7jncK
- C Programming මුල සිට ඉගෙනගනිමු (part 9 - While loop) -: https://link.lankadevelopers.com/4TBV5
- C Programming මුල සිට ඉගෙනගනිමු (part 10 - do-while loop) -: https://link.lankadevelopers.com/4WcNd
C Programming මුල සිට ඉගෙනගනිමු (part 11 - for loop) -: https://link.lankadevelopers.com/8utoa
C Programming මුල සිට ඉගෙනගනිමු (part 12 - arrays) -: https://link.lankadevelopers.com/46cyf
මන් ඊළග ලිපියෙන් කියලා දෙන්නම් Strings ගැන . මගේ ලිපි වල අඩුපාඩු තියෙනවනම් දන්නේ නැති දේවල් තියෙනවනම් පහලින් කමෙන්ට් එකක් දාන්න.
තව ලිපියකින් හම්බෙමු ජය වේවා. - array එකක සේම 2D-array එකකත් data type වර්ග variable data type වර්ග වලට සමාන වේ. (
-
RE: මොනවද මේ RANSOMWARE?
@MrCentimetre ඒ කාලේ මේවා ගැන දැනන් හිටියේ නෑනේ දකින දකින free ඒවා ඩවුන්ලෝඩ් කරනවා. :grin: