السلام عليكم جميعاً
ارجوا المساعده في هذه الفقرة
The user enterd : ABCCCFDD
in the output must be = CCCDD
use Array in linked list
السلام عليكم جميعاً
ارجوا المساعده في هذه الفقرة
The user enterd : ABCCCFDD
in the output must be = CCCDD
use Array in linked list
Ba7raini_net كتب:السلام عليكم جميعاً : ارجوا المساعده في هذه الفقرة
The user enterd : ABCCCFDD
in the output must be = CCCDD
use Array in linked list
من الجميل التى تسأل ما دتمت ﻻتعرف وحتى نتستطيع مساعدتك ممكن توضح القاعدة التى تربط المدخلات بالمخرجات؟
وسنساعدك بشكل اسرع وأفضل أن تفضلت وادرجت لنا محاوﻻتك.
عذرا فضلا راجع قواعد المشاركات من هنا .
تقبل مرورى والله ولى التوفيق
تم تعديل هذه المشاركة بواسطة AudaNix في 20 مارس 2012 في 11:15
السلام عليكم
اخي الكريم انا لا اعرف في هذه اللغه ولكن لدي صديق يريد التوصل الي كتابة الكود وقلت له اني مشارك في احد المنتديات وطرحت الموضوع لمساعدته فقط لا غير
اقتباساخي الكريم انا لا اعرف في هذه اللغه ولكن لدي صديق يريد التوصل الي كتابة الكود وقلت له اني مشارك في احد المنتديات وطرحت الموضوع لمساعدته فقط لا غير
أنا أقدر لك هذة المساعدة لصديقك
ولكنى ﻻ أفهم العلاقة بين المخرجات والمدخلات حتى أحاول مساعدتكم ...
حول شرح السؤال بطريقة اخرى
تقبل مرورى والله ولى التوفيق
تم تعديل هذه المشاركة بواسطة AudaNix في 20 مارس 2012 في 23:46
كأن القاعدة هي قبول عدد محدد من الحروف و هيC وD
وتجاهل غيرها .. والطريقة بسيطة وهي اختبار العنصر .. وإخراجه إن حقق الشرط وتجاهله إن لم يحقق
نعم اخي الكريم مصطفي هو اظهار الحروف المتشابهه في معطيات الاخراج
هذا هوا الكود ارجوا منكم تصحيحه
يوجد به اخطاء برمجيه
ارجوا منكم كرما لا امرا
#include<iostream>
using namespace std;
int main()
{
const int size=10;
const int size2=10;
int Array;
int dupArray[size2];
cout<<"enter 10 characters at most\n";
cin>>Array[0];
int i=0;
for(int n=0; n<size; n++){
while (Array[n] == Array[n+i]){
i++;
}
for (int m=0; m<n; m++)
cout<<dupArray[m];
}
return 0;
}
نرجوا من الاخوان المساعده كرما
اخي انا لا اعرف هاي اللغة لكن جربت كودك على الكود بلوكس واشتغل تمام .. لا يوجد فيه syntax error اذن وهي اخطاء منطقية بالتاكيد .. لكن لو تضع الكود بشكل افضل حتى يكون مقروء للمحترفين ويساعدوك ربما بشكل مباشر ..
هكذا
#include<iostream>
using namespace std;
int main()
{
const int size=10;
const int size2=10;
int Array[size];
int dupArray[size2];
cout<<"enter 10 characters at most\n";
cin>>Array[0];
int i=0;
for(int n=0; n<size; n++){
while (Array[n] == Array[n+i]){
i++;
}
for (int m=0; m<n; m++)
cout<<dupArray[m];
}
return 0;
}تم تعديل هذه المشاركة بواسطة يوسف حسين في 23 مارس 2012 في 14:44
السلام عليكم
تفضل أخى الكريم الكود بلغة السي :
#include <stdio.h>
#include <stdbool.h>
int main()
{
const int size=11;
char Array[size];
char outArray[size];
char getCh;
bool isDub=false;
int i=0;
printf("enter 10 characters at most\n");
getCh=getchar();
while(getCh!='\n')
{
if(i==size-1) break;
Array[i++]=getCh;
getCh=getchar();
}
Array='\0';
i=0;
for(int n=0; n<size-1; n++)
{
for(int k=0; k<size-1; k++)
{
if(n==k)continue;
if(Array[n]==Array[k])
{
isDub=true;
}
}
if(isDub==true)
{
outArray[i++]=Array[n];
isDub=false;
}
}
outArray='\0';
i=0;
printf("%s\n",outArray);
return 0;
}- طبعاً وضعت أقصى حجم للمصفوفة هو 11 لأنى أستخدم أخر مكان فيها لإغلاق المصفوفة.
عذراً لكتابتة بلغة السي ويمكن لك تحويلة للسي++ بسهولة أو ممكن أحد الإخوة يقوم بتحويلة لك .
لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق
لا إله إلا أنت سبحانك إني كنت من الظالمين
السلام عليكم:
لقد فكرت فى هذة كثيرا والحمد محاولة بلغة سي++ ناجحة:
فكرة الحل:
1. حساب كم مرة تكرر الحرف فى المصفوف userInput
2. كتابة الحرف بعدد تكراراتة الى المصفوفة DubCh
الكود بـــ سي++ :
/*
* File: main.cpp
* Author: Mohammed Abu Zayed
* * Created on March 24, 2012, 6:00 AM
*/
#include<iostream>
#include <string.h>
using namespace std;
int main()
{
const int ArrSize = 10;
int n = 0, num = 0, pos = 0;
char UserInput[ArrSize] = {'\0'}, DubCh[ArrSize] = {'\0'};
cout << "Enter 10 characters at most: ";
cin >> UserInput;
n = strlen(UserInput);
while (n--)
{
num = 0;
for (int i = 0; i < n + 1; i++)
if (UserInput[n] == UserInput)
num++;
if (num - 1)
for (int y = 0; y < num; y++)
DubCh[pos++] = UserInput[n];
}
while (pos + 1) cout << DubCh[pos--];
cout << endl;
return 0;
}المخرجات:
Enter 10 characters at most: aZZdWW ZZWW Press [Enter] to close the terminal ...
اقتباسعذراً لكتابتة بلغة السي ويمكن لك تحويلة للسي++ بسهولة أو ممكن أحد الإخوة يقوم بتحويلة لك .
أن شاء الله فى وقت ﻻحق سأحاول تحويل مشاركة الى سي++ بعد التحقق من نتائجها
تقبلو مرورى والله ولى التوفيق
شكرا لكم على السعي للمساعده وايجاد الحل
لكم فائق الإحترام والتقدير الى الإعضاء الذين رحبوا بالمساعده الجاهده
اتمنى لكم مزيد من التقدم والإزدهار
جاري ارسال الكود الى صديقي شكراً لكم
السلام عليكم
AudaNix كتب:أن شاء الله فى وقت ﻻحق سأحاول تحويل مشاركة الى سي++ بعد التحقق من نتائجها
يشرفنى إطلاعك على الكود وتجربتة أخى العزيز محمد
Ba7raini_net كتب:use Array in linked list
عذراً لم ألاحظ هذا الشرط أخي الكريم , ولكن كيف مصفوفة مع قائمة متصلة والمدخلات سوف تكون فى مصفوفة واحدة فكيف لي تكوين قائمة متصلة ؟
وأيضاً لي بعض التساؤلات , السؤال ما زال غير واضح فهل المقصود إزالة الحروف الغير مكررة مطلقاً أم التى لا تتكرر بشكل متتالى؟
عموماً هذا هو البرنامج بإستخدام القوئم المتصلة , نفس عمل البرنامج السابق وهو إزالة الحروف التى لا تتكرر أبداً فى السلسلة والإبقاء على الحروف التى تكررت فى السلسة , وأيضاً غير مقيد بطول معين للسلة .
إليك الكود :
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
/*
تعريف القائمة الموصولة
*/
struct LinkedList
{
char ch;
struct LinkedList * next;
};
typedef struct LinkedList node;
/*
تعريف الدوال المستخدمة
*/
void displayList(node *fristN);
void greatNewList(node *fristN,node *fristN2);
/*############
الدالة الأساسية
##############*/
int main()
{
/*
تعيرف الم
*/
node *fristNode = NULL; /* أول عنصر فى القائمة */
node *fristNodeOutput = NULL; /* أول عنصر فى قائمة المخرجات التى تم حذف القيم غير المكررة منها */
node *newNode=NULL; /* مؤشر يستخدم فى إنشاء نود جديدة لربطها فى القائمة */
node *temp=NULL; /* مؤشر مؤقت لحفظ المتغيرات */
node *last=NULL; /* مؤشر مؤقت لحفظ أخر قيمة نود تم حفظ بيانات بها ليسنى لنا إغلاق السلسة الموصولة */
char getCh; /* متغير حرفى لتخزين القيم المدخل من المستخدم حرف حرف */
printf("Enter Any Nubers Of Characters To Print Dublicated Characters\n");
getCh=getchar(); /* قراءه أو حرف على الشاشة */
if(getCh!='\n') fristNode=( node*) malloc(sizeof(node)); // إن لم يكن الذر هو ذر الإدخال يتم حجز مساحة لأول نود فى القائمة */
temp=fristNode; /* اسناد عنوان أول نود للمؤشر المؤقت */
while(getCh!='\n') /* شرط التكرار لقراءه الحرف من الشاشة حتى يصل لقراءه ذر الإدخال ليخرج من الحلقة */
{
temp->ch=getCh; /* إسناد الحرف المدخل للنود */
newNode=( node*) malloc(sizeof(node)); /* حجز مساحة لنود تالية لها */
temp->next=newNode; /* إشارة النود الحالية للنود الجديدة المنشأه */
last=temp; /* حفظ تلك النود فى المتغير المؤقت هذا تحسباً لكونها أخر نود */
temp=newNode; /* اسناد عنوان النود الجديدة للمؤشر المؤقت */
getCh=getchar(); /* قراءه حرف أخر من الشاشة */
}
if(last!=NULL) last->next=NULL; /* بما أن المؤشر لا يساوى القيمة الفارغة يعنى هذا تم إدخال قيم للقائمة ولو قيمة واحدة */
if(newNode!=NULL) free(newNode); /* لحذف المكان المحجوز للنود الجديدة لعدم إستخدامة */
if(fristNode!=NULL) fristNodeOutput=(node *) malloc(sizeof(node)); /* هذا يعنى أنة فى حالة وجود قيم فى القائمة الموصولة يتم حجز أول مكان للقائمة الجديدة التى سوف تخزن بها المخرجات */
greatNewList(fristNode,fristNodeOutput); /* إستدعاء دالة إنشاء قائمة المخرجات بعد فحصها لقائمة المدخلات */
displayList(fristNodeOutput); /* استدعاء دالة عرض القائمة */
printf("\nPRESS ENTER TO END\n");
getchar();
return 0;
}
/*#################################################
دالة إنشاء قائمة المخرجات بعد فحصها لقائمة المدخلات
###################################################*/
void greatNewList(node *fristN,node *fristN2) /* تأخذ عناوين أول وحدات من قائمة المدخلات والمخرجات */
{
bool isDub=false; /* تعريف متغير منطقى لإختبار الحروف المتشابهة فى السلسة */
node *cur; /* مؤشر مؤقت للحلقة الخارجية */
node *cur2; /* مؤشر مؤقت للحقة الداخلية */
node *newnode=NULL; /* مؤشر يستخدم فى إنشاء نود جديدة لربطها فى القائمة */
node *lst; /* مؤشر مؤقت لحفظ أخر قيمة نود تم حفظ بيانات بها ليسنى لنا إغلاق السلسة الموصولة */
node *tmp=fristN2; /* مؤشر مؤقت لحفظ المتغيرات */
cur = fristN; /* إسناد عنوان أول نود فى قائمة المدخلات للمؤشر المؤقت */
while (cur) /* دوران حتى أن تكون قيمة المؤشر قى القيمة الفارغة وتعنى إنتهاء عناصر القائمة */
{
cur2=fristN; /* إسناد عنوان أول نود فى قائمة المدخلات للمؤشر المؤقت فى كل دورة فى الحلقة الخارجية */
while(cur2) /* دوران حتى أن تكون قيمة المؤشر قى القيمة الفارغة وتعنى إنتهاء عناصر القائمة */
{
if(cur->next==cur2->next) /* حتى لا يتم إختبار القيمة مع نفسها */
{
cur2=cur2->next; /* الإنتقال للنود التالية فى الحلقة الداخلية */
continue;
}
if(cur->ch==cur2->ch) /* شرط تساوى حرفين فى السلسة */
{
isDub=true;
}
cur2=cur2->next; /* الإنتقال للنود التالية فى الحلقة الداخلية */
}
if(isDub==true) /* إذا كان الحرف له نظير فى السلسة أو القائمة يتم إدراجة فى القائمة الجديدة وهى قائمة المخرجات */
{
tmp->ch=cur->ch;
newnode=(node *) malloc(sizeof(node)); /* حجز مساحة لنود تالية لها */
tmp->next=newnode; /* إشارة النود الحالية للنود الجديدة المنشأه */
lst=tmp; /* حفظ تلك النود فى المتغير المؤقت هذا تحسباً لكونها أخر نود */
tmp=newnode; /* اسناد عنوان النود الجديدة للمؤشر المؤقت */
isDub=false; /* إرجاع قيمة المتغير المنطقى للقيمة الإبتدائية له */
}
cur = cur->next ; /* الإنتقال للنود التالية فى الحلقة الخارجية */
}
if(tmp!=NULL) tmp->next=NULL; /* إنهاء القائمة الموصولة إن كانت تحتوى على بيانات */
if(newnode!=NULL) free(newnode); /* تحرير أخر مكان محجوز للنود الجديدة لعدم إستخدامة */
}
/*####################################
دالة عرض القائمة الموصولة
#####################################*/
void displayList(node *fristN) /* تأخذ عنوان أو نود فى القائمة لعرضها */
{
node * cur; /* تعريف مؤشر مؤقت */
cur = fristN; /* إسناد عنوان أول نود للمؤشر المؤقت */
if (!cur) /* شرط وجود عناصر فى القائمة من عدمة */
printf("\nThe List is empty\n ");
else
{
while (cur) /* دوران حتى أن تكون قيمة المؤشر قى القيمة الفارغة وتعنى إنتهاء عناصر القائمة */
{
printf ("%c", cur->ch); /* طباعة الحروف */
cur = cur->next ; /* نقل المؤشر للقيمة التالية للنود الحالية */
}
printf("\n"); /* طباعة سطر فارغ */
}
}وأخيراً أرجو من أخى محمد الإطلاع على الكود وتحويلة للغة السي++ إن سمح لك وقتك ... لأن صاحب السؤال ليس له باع فى البرمجة فلن يستطيع فعل هذا
وهذا ملف بالكود والملف التنفيذي للتجريب
وشكراً أيضاً لصاحب الموضوع لمساعدته لصاحبة
لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق
لا إله إلا أنت سبحانك إني كنت من الظالمين
اقتباسعذراً لم ألاحظ هذا الشرط أخي الكريم , ولكن كيف مصفوفة مع قائمة متصلة والمدخلات سوف تكون فى مصفوفة واحدة فكيف لي تكوين قائمة متصلة ؟
يالله حتى انا نسيته أنشغلت بحل مشكلة التكرار ونسيت القائمة الموصوله . الحمد لله هو تمرين جيد سأحاول أضافة القائمة له ان شاء الله