الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ثلاثة أكواد في معالجة النصوص

مغلق
بدأه gareb في 25 مايو 2005 · 3 رد · 1,015 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاتة
اليوم اريد ان اطلع 3 اكواد تختص بمعالجة النصوص اخذتها كواجب ... وبعد انتهاء فترة تسليم الواجبات احببت ان اضع الكود للجميع حتى يتم الاستفادة منه وتعديله اذا كانت فيه اخطاء

الكود الاول : يقوم بطباعة عد تكرارا الاحرف في سطر واحد

#include <iostream>using namespace std;const int size=400;int main(){	char line[size];	char string='a';	cin.getline(line,size,'\n');	for(int j=0;string<='z';j++,string++){  int counter=0;  for(int i=0;line!='\0';i++) 	 if(string==line)    counter++; 	 if(counter!=0)    cout <<string<<" use "<<counter <<" Time"<<endl;	}		return 0;}

الكود الثاني : يقوم بطباعة تكرار الكلمات المتساوية في عدد الاحرف في 3 اسطر.

#include <iostream>#include<cstring>using namespace std;void funspace(char []);const int size1=1500,size2=500,size=100;int main(){	int length;	int lengtharray[size]={0};	char line[size1],line2[size2],line3[size2];	char *tokenPtr;		cin.getline(line,size2,'\n');	funspace(line);	cin.getline(line2,size2,'\n');	funspace(line2);	strcat(line,line2);		cin.getline(line3,size2,'\n');	strcat(line,line3);	tokenPtr=strtok(line," ");	while ( tokenPtr != NULL ) {    length=strlen(tokenPtr);  lengtharray[length-1]++;      tokenPtr = strtok( NULL, " " );      }   for(int i=0;i<size;i++)   if(lengtharray!=0)    cout<<lengtharray<< " word(s) of length :"<<i+1<<endl;	return 0;}void funspace(char array[]){	for(int i=0;array<size2;i++)  if(array=='\0'){ 	 array=' '; 	 array[i+1]='\0'; 	 break;}}

الكود الثالث : يقوم بكباعة على تكرار كل كلمة في قطعة تتكون من 5 اسطر ...( اجوا اختبارا الكود واعلامي بمدى فعاليته ) .

#include <iostream>#include <iomanip>using namespace std;void funspace(char []);const int size=2000,size2=400;int main(){	char line[size];	char line2[size];	char line3[size2]={'\0'};	char line4[size2]={'\0'};	char line5[size2]={'\0'};	char *strings[size2] ,*tokenPtr;	int i=0;	cin.getline(line,size2,'\n');	funspace(line);	cin.getline(line2,size2,'\n');	funspace(line2);	strcat(line,line2);	cin.getline(line3,size2,'\n');	funspace(line3);	strcat(line,line3);	cin.getline(line4,size2,'\n');	funspace(line4);	strcat(line,line4);	cin.getline(line5,size2,'\n');	strcat(line,line5);		tokenPtr=strtok(line," ");	strings=tokenPtr;	for (;tokenPtr != NULL;i++ ) {     strings=tokenPtr;      tokenPtr = strtok( NULL, " " );  	}	for(int k=0;k<i;k++ ){  int counter=1; 	 if(*strings[k]==NULL)    continue; 	 else{    for(int r=(k+1);r<i;r++)   	 if(*strings[k]==*strings[r]){      counter++;      *strings[r]=NULL;   	 }   	 cout << std::setw(10)<<left<<*(strings+k)<<"use "<<counter<<" Time"<<endl;    }	}	return 0;}void funspace(char array[]){	for(int i=0;array<size2;i++)  if(array=='\0'){ 	 array=' '; 	 array[i+1]='\0'; 	 break;}}

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 10 أبريل 2014 في 19:00 — السبب: add some tags

#2

اشكرك على روحك الطيبة

و ربنا يوفقك

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#3

السلام عليكم

البركة فيك وفي الاخ hasan_aljudy انم ساعتوني على حل السوال بتوضيحكم لبعض الاشكاليات ... وارجوا ان كان في الكود اي ملاحظة ان يتم انتقادها والرد عليها حتى يتم الاستفادة

#4

السلام عليكم

ناسف على وجود خطاء غير مقصود و الذي لا يظهر في كل مرة ... الا في بعض الحالة

ارجوا استبدال السطر 58 في الفقرة 3

if(*strings[k]==*strings[r]){

بهذا

if((strcmp(strings[k],strings[r]))==0){

ارجوا على من يجد اي خطاء الاعلام به حتى يتم تصحيح و الاستفادة منه

هذا الموضوع مغلق.

مواضيع مشابهة