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

سؤال في السي، كتبت برنامج ولكنه لا يعمل، ما الخطأ؟؟؟

مغلق
بدأه Amjad.IT في 4 يونيو 2006 · 4 رد · 463 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سؤال في السي، أرجو الاجابة، غدا عندي امتحان نهائي!!!

اريد ان اكتب برنامج على لغة السي يقوم بقراءة string من المستخدم ثم يقوم البرنامج بطباعة الحرف الأكثر تكرارا مع عدد تكراره، وطباعة الحرف الأقل تكرارا وعدد تكراره.

لقد قمت بكتابة ما يلي، لكنه لا يعمل، ما المشكلة؟؟؟؟

#include <ctype.h>
#include <stdio.h>
#include <conio.h>

void search(char *, char *, char *, int *, int *);
void main () {
	int most,least;
	char s[100],lst,mst;
	clrscr();
	printf("Enter a string:\n");
	gets(s);
	search(s,&lst,&mst,&least,&most);
	printf("%c %d - %c %d",lst,least,mst,most);
	for(int i=0;i<100;i++) s=' ';
	getch();
}

void search(char *s, char *least, char *most, int *least_cnt, int *most_cnt) {
	char c=*s, *p=s;
	int i=0,j,tmp_cnt;
	*least_cnt=0;
	*most_cnt=0;
	for (i=0;c!='\0';i++) {
		tmp_cnt=0;
		for (p=s+1;*p!='\0';p++) if (*p==c && !isspace(c)) tmp_cnt++;
		if (tmp_cnt < *least_cnt) {
			*least_cnt=tmp_cnt;
			*least=c;
		}
		if(tmp_cnt > *most_cnt) {
			*most_cnt=tmp_cnt;
			*most=c;
		}
		c=*(s+i+1);
	}
}

أعينوني أعانكم الله، فغدا عندي امتحان نهائي.

#2

يا سيدي العزيز

انا ما تعاملت مع ال C ، بنفع ++C؟؟

محتار!!! مش عارف شوتعمل؟؟! عندك مشاكل ونفسك تنحل؟؟!

عليك بالاقتراب من خالقك

عليك بصلاة الاستخارة

وعليك بالصدقة

داوو مرضاكم بالصدقة

ما نقص مال من صدقة

تصدقو ولو بشق تمرة

#3

بنفع سي++، بالرغم اني ما بعرف سي++، لكن يمكن اعرف الخلل

#4
#include <ctype.h>
#include <stdio.h>
#include <conio.h>

void search(char *, char *, char *, int *, int *);
void main () {
	int most,least,i;
	char s[100],lst,mst;
	clrscr();
	printf("Enter a string:\n");
	gets(s);
search(s,&lst,&mst,&least,&most);
	printf("%c %d - %c %d",lst,least,mst,most);
	for(i=0;i<100;i++)
   s=' ';
	getch();
}


void search(char *s, char *least, char *most, int *least_cnt, int *most_cnt) {
	char c=*s, *p=s;
	int i=0,j,tmp_cnt;
	*least_cnt=100; // كان عندك صفر
	*most_cnt=0;
	for (i=0;c!='\0';i++) {
	tmp_cnt=0;
	for (p=s;*p!='\0';p++)
	if (*p==c && !isspace(c)) tmp_cnt++;// كان عندك *p=c+1 !!!!!!
	if (tmp_cnt < *least_cnt) {					   //	 أنظر الملاحظة الأولى لولا التصحيح في الملاحظة الاولى لما تحقق هذا الشرط
		*least_cnt=tmp_cnt;
		*least=c;
	}

	if(tmp_cnt > *most_cnt) {
		*most_cnt=tmp_cnt;
		*most=c;
	}
	c=*(s+i+1);
	}
}
#5

أشكرك جزيل الشكر على تصحيح الخطأ، ومع انني حاولت ايجاد الخطأ الا انني لم استطع، ولكن بفضلك تمكنت من حل السؤال.

شكرا كمان مرة

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…