প্রতিটি ক্যারেক্টার ফ্রিকোয়েন্সি কাউন্ট
স্ট্রিংয়ের সব ক্যারেক্টার (A-Z, a-z) এর ফ্রিকোয়েন্সি আলাদা আলাদা কাউন্ট করে প্রিন্ট করা। কেস-ইনসেনসিটিভ (case-insensitive) কাউন্টিং করা হয়।
অ্যালগরিদম
- স্ট্রিং ইনপুট নিন।
- ফ্রিকোয়েন্সি অ্যারে
freq[26]শূন্য দিয়ে ইনিশিয়ালাইজ করুন (শুধু অ্যালফাবেটের জন্য)। - প্রতিটি ক্যারেক্টার চেক করুন:
- যদি 'a'-'z' →
freq[ch - 'a']++ - যদি 'A'-'Z' →
freq[ch - 'A']++
- যদি 'a'-'z' →
- নন-জিরো ফ্রিকোয়েন্সিostics वाले ক্যারেক্টারগুলো প্রিন্ট করুন।
সি প্রোগ্রাম
#include <stdio.h>
#include <string.h>
#define MAX_STR 100
int main() {
char str[MAX_STR];
int freq[26] = {0};
int i, len;
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0';
len = strlen(str);
for (i = 0; i < len; i++) {
char ch = str[i];
if (ch >= 'a' && ch <= 'z')
freq[ch - 'a']++;
else if (ch >= 'A' && ch <= 'Z')
freq[ch - 'A']++;
}
printf("\nCharacter Frequencies:\n");
for (i = 0; i < 26; i++) {
if (freq[i] != 0)
printf("'%c' = %d\n", 'a' + i, freq[i]);
}
return 0;
}
আউটপুট
Enter a string: Tutorials Point Character Frequencies: 'a' = 1 'i' = 2 'l' = 1 'n' = 1 'o' = 2 'p' = 1 'r' = 1 's' = 1 't' = 3
উন্নত সংস্করণ: সব ক্যারেক্টার (ASCII 256) কভার
#include <stdio.h>
#include <string.h>
#define MAX_STR 100
#define MAX_CHARS 256
int main() {
char str[MAX_STR];
int freq[MAX_CHARS] = {0};
int i;
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0';
for (i = 0; str[i]; i++)
freq[(unsigned char)str[i]]++;
printf("\nAll character frequencies:\n");
for (i = 0; i < MAX_CHARS; i++) {
if (freq[i] > 0) {
if (i >= 32 && i <= 126)
printf("'%c' = %d\n", i, freq[i]);
else
printf("ASCII %d = %d\n", i, freq[i]);
}
}
return 0;
}
সarসংক্ষেপ
- অ্যালফাবেট-অনלי কাউন্টের জন্য
freq[26]পর্যাপ্ত। - সব ASCII ক্যারেক্টার কাউন্ট করতে
freq[256]ব্যবহার করুন। unsigned charকাস্ট ব্যবহার করুন নেগেটিভ ইনডেক্স এড়াতে।- কেস-সেনসিটিভ চাইলে 'a'-'z' এবং 'A'-'Z' আলাদা হ্যান্ডল করুন।