أهم برامج التعامل مع السلاسل النصية (Strings) في لغة C: أمثلة عملية

Amine
23/10/2024

برامج التعامل مع السلاسل النصية (Strings) في C

في هذا الدرس، سنستعرض مجموعة من البرامج الشائعة للتعامل مع السلاسل النصية (Strings) في لغة C. تتضمن هذه البرامج طباعة السلسلة، حساب طول السلسلة، البحث عن الحروف، وعكس السلسلة وغيرها.

1. برنامج لطباعة سلسلة نصية في C

#include <stdio.h>

int main() {
    char str[100];
    
    printf("أدخل سلسلة نصية: ");
    gets(str);  // استخدم gets لإدخال السلسلة
    
    printf("السلسلة النصية المدخلة: %s\n", str);
    
    return 0;
}

2. برنامج لطباعة السلسلة حرفًا بحرف في C

#include <stdio.h>

int main() {
    char str[100];
    int i = 0;
    
    printf("أدخل سلسلة نصية: ");
    gets(str);
    
    printf("حروف السلسلة:\n");
    while(str[i] != '\0') {
        printf("%c\n", str[i]);
        i++;
    }
    
    return 0;
}

3. برنامج لحساب طول السلسلة بدون دالة

#include <stdio.h>

int main() {
    char str[100];
    int i = 0, length = 0;
    
    printf("أدخل سلسلة نصية: ");
    gets(str);
    
    while(str[i] != '\0') {
        length++;
        i++;
    }
    
    printf("طول السلسلة هو: %d\n", length);
    
    return 0;
}

4. برنامج لحساب تكرار الحروف في السلسلة

#include <stdio.h>

int main() {
    char str[100], ch;
    int i, count = 0;
    
    printf("أدخل سلسلة نصية: ");
    gets(str);
    
    printf("أدخل الحرف المراد حساب تكراره: ");
    scanf("%c", &ch);
    
    for(i = 0; str[i] != '\0'; i++) {
        if(str[i] == ch) {
            count++;
        }
    }
    
    printf("عدد مرات تكرار الحرف %c هو: %d\n", ch, count);
    
    return 0;
}

5. برنامج لحساب عدد حروف العلة في السلسلة

#include <stdio.h>

int main() {
    char str[100];
    int i, count = 0;
    
    printf("أدخل سلسلة نصية: ");
    gets(str);
    
    for(i = 0; str[i] != '\0'; i++) {
        if(str[i]=='a' || str[i]=='e' || str[i]=='i' || str[i]=='o' || str[i]=='u' || 
           str[i]=='A' || str[i]=='E' || str[i]=='I' || str[i]=='O' || str[i]=='U') {
            count++;
        }
    }
    
    printf("عدد حروف العلة هو: %d\n", count);
    
    return 0;
}

6. برنامج لترتيب حروف السلسلة أبجديًا

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

int main() {
    char str[100], temp;
    int i, j;
    
    printf("أدخل سلسلة نصية: ");
    gets(str);
    
    // ترتيب الحروف
    for(i = 0; i < strlen(str) - 1; i++) {
        for(j = i + 1; j < strlen(str); j++) {
            if(str[i] > str[j]) {
                temp = str[i];
                str[i] = str[j];
                str[j] = temp;
            }
        }
    }
    
    printf("السلسلة بعد الترتيب: %s\n", str);
    
    return 0;
}

7. برنامج لنسخ سلسلة إلى أخرى

#include <stdio.h>

int main() {
    char str1[100], str2[100];
    int i;
    
    printf("أدخل سلسلة نصية: ");
    gets(str1);
    
    // نسخ السلسلة
    for(i = 0; str1[i] != '\0'; i++) {
        str2[i] = str1[i];
    }
    str2[i] = '\0';
    
    printf("السلسلة المنسوخة: %s\n", str2);
    
    return 0;
}

8. برنامج لعكس السلسلة النصية

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

int main() {
    char str[100];
    int i, length;
    
    printf("أدخل سلسلة نصية: ");
    gets(str);
    
    length = strlen(str);
    
    printf("السلسلة معكوسة: ");
    for(i = length - 1; i >= 0; i--) {
        printf("%c", str[i]);
    }
    
    return 0;
}

9. برنامج للبحث عن سلسلة في أخرى

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

int main() {
    char str1[100], str2[100];
    
    printf("أدخل السلسلة الأولى: ");
    gets(str1);
    
    printf("أدخل السلسلة الثانية: ");
    gets(str2);
    
    if(strstr(str1, str2) != NULL) {
        printf("السلسلة الثانية موجودة في السلسلة الأولى.\n");
    } else {
        printf("السلسلة الثانية غير موجودة في السلسلة الأولى.\n");
    }
    
    return 0;
}

10. برنامج لتبديل سلسلتين نصيتين

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

int main() {
    char str1[100], str2[100], temp[100];
    
    printf("أدخل السلسلة الأولى: ");
    gets(str1);
    
    printf("أدخل السلسلة الثانية: ");
    gets(str2);
    
    // تبديل السلسلتين
    strcpy(temp, str1);
    strcpy(str1, str2);
    strcpy(str2, temp);
    
    printf("بعد التبديل:\n");
    printf("السلسلة الأولى: %s\n", str1);
    printf("السلسلة الثانية: %s\n", str2);
    
    return 0;
}

11. برنامج لمقارنة سلسلتين نصيتين

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

int main() {
    char str1[100], str2[100];
    
    printf("أدخل السلسلة الأولى: ");
    gets(str1);
    
    printf("أدخل السلسلة الثانية: ");
    gets(str2);
    
    if(strcmp(str1, str2) == 0) {
        printf("السلسلتان متساويتان.\n");
    } else {
        printf("السلسلتان غير متساويتين.\n");
    }
    
    return 0;
}

12. برنامج لدمج سلسلتين نصيتين

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

int main() {
    char str1[100], str2[100];
    
    printf("أدخل السلسلة الأولى: ");
    gets(str1);
    
    printf("أدخل السلسلة الثانية: ");
    gets(str2);
    
    strcat(str1, str2); // دمج السلسلتين
    
    printf("السلسلة بعد الدمج: %s\n", str1);
    
    return 0;
}

13. برنامج للتحقق من كون سلسلتين نصيتين أناغرام

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

void sortString(char str[]) {
    int i, j;
    char temp;
    for(i = 0; i < strlen(str) - 1; i++) {
        for(j = i + 1; j < strlen(str); j++) {
            if(str[i] > str[j]) {
                temp = str[i];
                str[i] = str[j];
                str[j] = temp;
            }
        }
    }
}

int main() {
    char str1[100], str2[100];
    
    printf("أدخل السلسلة الأولى: ");
    gets(str1);
    
    printf("أدخل السلسلة الثانية: ");
    gets(str2);
    
    // ترتيب السلاسل
    sortString(str1);
    sortString(str2);
    
    if(strcmp(str1, str2) == 0) {
        printf("السلسلتان أناغرام.\n");
    } else {
        printf("السلسلتان ليستا أناغرام.\n");
    }
    
    return 0;
}

14. برنامج لعكس الكلمات في سطر

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

void reverseWords(char str[]) {
    int i, start = 0, end, length;
    
    length = strlen(str);
    
    for(i = 0; i <= length; i++) {
        if(str[i] == ' ' || str[i] == '\0') {
            end = i - 1;
            while(start < end) {
                char temp = str[start];
                str[start] = str[end];
                str[end] = temp;
                start++;
                end--;
            }
            start = i + 1;
        }
    }
}

int main() {
    char str[100];
    
    printf("أدخل سطرًا نصيًا: ");
    gets(str);
    
    reverseWords(str);
    
    printf("السطر بعد عكس الكلمات: %s\n", str);
    
    return 0;
}

15. برنامج لعكس سطر نصي بالكامل

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

int main() {
    char str[100];
    int i, length;
    
    printf("أدخل سطرًا نصيًا: ");
    gets(str);
    
    length = strlen(str);
    
    printf("السطر معكوس بالكامل: ");
    for(i = length - 1; i >= 0; i--) {
        printf("%c", str[i]);
    }
    
    return 0;
}

هذه البرامج تغطي مجموعة من العمليات الشائعة على السلاسل النصية (Strings) في لغة C. يمكن التوسع في هذه البرامج لتشمل عمليات أكثر تعقيدًا مثل معالجة النصوص وتنسيقها في التطبيقات البرمجية.

التعليقات

اترك تعليقاً