Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

تحديات برمجيةالتحدي الثالث - حل التمرين الثالث بلغة C

المطلوب

قم بتعريف دالة إسمها PrintWordsOccurence, نمرر لها نص عند إستدعاءها فتقوم بطباعة كم مرة تكررت كل كلمة في هذا النص.

مثال: إذا قمنا باستخدام الدالة PrintWordsOccurence() و تمرير النص "I am happy. I am a doctor. I like chocolate." فإنها ستطبع النتيجة التالية.

[3] I
[2] am
[1] happy.
[1] a
[1] doctor.
[1] like
[1] chocolate.
	


الحل بلغة C

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#define MAX_SIZE 100
void printWordsOccurence(char * s) {
if (s[0] == '\0')
{
printf("There is no text!");
}
char text[MAX_SIZE];
char word[MAX_SIZE];
int index;
int beginOfNextWord = 0;
int endOfNextWord = 0;
int wordsCounter;
// Create a copy from the original string
for (int i = 0; i < strlen(s); i++)
{
text[i] = s[i];
}
text[strlen(s)] = '\0';
// walk through all charaters in the string
for (int i = 0; i < strlen(text); i++)
{
if (text[i] != ' ')
{
wordsCounter = 1;
// store first occurence of the word, then remove it
index = 0;
int j = i;
for (; text[j] != ' ' && text[j] != '\0'; j++)
{
word[index] = text[j];
index++;
text[j] = ' ';
}
// remove the reset of copy of the same word
for (; j < strlen(text); j++)
{
bool shouldClear = true;
for (int k = 0; k < strlen(word) && shouldClear == true; k++)
{
if (word[k] != text[j+k])
{
shouldClear = false;
}
}
if (shouldClear)
{
for (int k = 0; k < strlen(word); k++)
{
text[j+k] = ' ';
}
wordsCounter++;
}
}
word[index] = '\0';
printf("[%d] %s\n", wordsCounter, word);
}
}
}
void main() {
char * text = "I am happy. I am a doctor. I like chocolate.";
printWordsOccurence(text);
}
#include <stdio.h> #include <string.h> #include <stdbool.h> #define MAX_SIZE 100 void printWordsOccurence(char * s) { if (s[0] == '\0') { printf("There is no text!"); } char text[MAX_SIZE]; char word[MAX_SIZE]; int index; int beginOfNextWord = 0; int endOfNextWord = 0; int wordsCounter; // Create a copy from the original string for (int i = 0; i < strlen(s); i++) { text[i] = s[i]; } text[strlen(s)] = '\0'; // walk through all charaters in the string for (int i = 0; i < strlen(text); i++) { if (text[i] != ' ') { wordsCounter = 1; // store first occurence of the word, then remove it index = 0; int j = i; for (; text[j] != ' ' && text[j] != '\0'; j++) { word[index] = text[j]; index++; text[j] = ' '; } // remove the reset of copy of the same word for (; j < strlen(text); j++) { bool shouldClear = true; for (int k = 0; k < strlen(word) && shouldClear == true; k++) { if (word[k] != text[j+k]) { shouldClear = false; } } if (shouldClear) { for (int k = 0; k < strlen(word); k++) { text[j+k] = ' '; } wordsCounter++; } } word[index] = '\0'; printf("[%d] %s\n", wordsCounter, word); } } } void main() { char * text = "I am happy. I am a doctor. I like chocolate."; printWordsOccurence(text); }

سنحصل على النتيجة التالية عند التشغيل.

[3] I
[2] am
[1] happy.
[1] a
[1] doctor.
[1] like
[1] chocolate.
		

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة