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

ممكن أعرف إيه الخطأ اللي في الكود؟؟؟؟

بدأه tracy في 6 أغسطس 2009 · 23 رد · 1,423 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
#include <iostream>
using namespace std;

struct time {
	   int hours, minutes, seconds;
	   };

int main () {

	time t1;

	cout << "Enter hours: ";
	cin >> t1.hours;
	cout << "Enter minutes: ";
	cin >> t1.minutes;
	cout << "Enter seconds: ";
	cin >> t1.seconds;

	long totalsecs = t1.hours*3600 + t1.minutes*60 + t1.seconds;

	cout << "\nTime by seconds = " << totalsecs;

	system ("pause");
	return 0;
	}

تم تعديل هذه المشاركة بواسطة HGB في 6 أغسطس 2009 في 01:37

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

#2

شكرًا يا أستاذنا هيثم... حاولت أظبطه بس فشلت... :lol:

عمومًا أنا كتبت الكود ورنيته على الديف، بس هو مصمم انه في خطأ هنا:

time t1;

مش فاهمة ليه حقيقة!!!!!!!

ممكن حد يفهمني؟؟؟ :(

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

#3

انا جربت الكود و شغال معايا كويس بدون مشاكل

مدونتي: C++ Tips and Tricks

#4

مش عارفة والله يافندم،،، هو عندي مصصم انه في semicolomn

قبل t1

مش فاهمة بتاعت إيه بالظبط!!!!

هذا هو:

اقتباس
expected `;' before "t1"

تم تعديل هذه المشاركة بواسطة tracy في 6 أغسطس 2009 في 03:10

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

#5

السلام عليكم

فقط قومي بتغيير اسم الـ struct من time إلى أي اسم آخر (ليكن TIME)

هناك دالة معرفة في الملف ctime تحمل نفس الإسم، يبدو أنك قمتي بتضمين هذا الملف.

SAFETY TIP : Always delete what you new, and free what you malloc, never mix new with free or malloc with delete.

#6

وعليكم السلام ورحمة الله....

تمام، الكود رن معايا كويس أوي... :)

مش عارفة أشكر حضرتك ازاي.....

جزاكم الله خيرًا.. :)

تم تعديل هذه المشاركة بواسطة tracy في 6 أغسطس 2009 في 03:30

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

#7

طيب أنا عندي سؤال كمان غاية في الضرورة بالنسبة للفانكشن بردو... :blush:

هو السؤال كالتالي::

اقتباس
Raising a number n to a power p is the same as multiplying n by itself p times. Write a function called power() that takes a double value for n and an int value for p, and returns the result as a double value. Use a default argument of 2 for p, so that if this argument is omitted, the number n will be squared. Write a main() function that gets values from the user to test this function.

يعني برنامج بياخد رقم من اليوزر، وياخد أس، ويرفع الرقم للأس دا......

أنا كتبته هكذا::

#include <iostream>
using namespace std;

int main () {
	int power (double n, int p);
	int pow;
	double num, res;

	cout << "Enter a number, a power: ";
	cin >> num >> pow;

	res = power (num, pow);

	cout << "\nThe result is: " << res << endl << endl;

	system ("pause");
	return 0;
	}


int power (double n, int p){
	for (int i = 1; i < p; i++){
		n = n * i;
		}
	return n;
	}

لكن بيطلع معايا أرقام غريبة أوي.... مش عارفة أعمل اللوب ازاي!!! :hmm:

ممكن حد يساعدني ربنا يكرمكم... :blush:

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

#8

السلام عليكم

اول شىء يفضل الإعلان عن الدوال بطريقة prototype خارج الداله main حتى يمكننا استخدام تلك الدوال فى دوال أخرى غير الداله main

وتصحيح الكود يكون بهذا الشكل

#include <iostream>
using namespace std;
double power (double , int ); // prototype
int main () {

	int pow;
	double num, res;

	cout << "Enter a number, a power: ";
	cin >> num >> pow;

	res = power (num, pow);

	cout << "\nThe result is: " << res << endl << endl;
	system ("pause");
	return 0;
}

double power (double n, int p){
	double temp=1;
	for (int i = 1; i <= p; i++){
		temp *= n;
	}
	return temp;
	}

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#9

يعطيك العافية أخوي amin_mu123 على الحل الأكثر من رائع

واحببت أن أضيف أن هناك مكتبة خاصه بالرياضيات بحثت عنها ولم أجدها فياليت الي يعرفها يبلغنا بيها

#10

عجز لساني عن شكرك يا أستاذ أمين....

جزاكم الله خيرًا.. :) :) :)

اقتباس
واحببت أن أضيف أن هناك مكتبة خاصه بالرياضيات بحثت عنها ولم أجدها فياليت الي يعرفها يبلغنا بيها

أظن يا فندم ان حضرتك تقصد مكتبة cmath

#include <cmath>

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

#11

طيب أنا عندي فانكشن كمان، اسمها swap

بتاخد رقمين وبترجعهم مرتبين من الأكبر للأصغر،،،

وأنا كتبت البرنامج كدا::

#include <iostream>
using namespace std;
int main (){
	int swap (int a, int b, int res);
	int num1, num2, result;

	cout << "Enter first number, second number: ";
	cin >> num1 >> num2;

	result = swap (num1 , num2, result);

	cout << "\nMax value is: " << result;

	system ("pause");
	return 0;
	}


int swap (int a, int b, int res){
	int temp, max;
	if (a < b){
		  temp = a;
		  a = b;
		  b = temp;
		  max = b;
		  }
	else
	max = a;

	return max;

أنا عارفة ان البرنامج فيه مشاكل كبيرة، بس مش عارفة أضع إيدي عليها...!!!

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

#12

إضافة إلى ان في سؤال أنا مش فاهماه خاااالص....

اقتباس
Write a function that, when you call it, displays a message telling how many times it has been called: “I have been called 3 times”, or whatever. Write a main() program that calls this function at least 10 times. Try implementing this function in two different ways. First, use an external variable to store the count. Second, use a local static variable. Which is more appropriate? Why can’t you use an automatic variable?

ياريت بس حد يفهمني هو عاوز إيه،،،،

وربنا يكرمكم جميعًا... :)

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

#13

.

تم تعديل هذه المشاركة بواسطة tracy في 7 أغسطس 2009 في 16:42

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

#14

.

تم تعديل هذه المشاركة بواسطة tracy في 7 أغسطس 2009 في 16:55

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

#15

معلش يا جماعة، أنا عارفة والله ان أسئلتي كترت،،، بس أنا

فعلاً محتاجة آرائكم في بعض الأمور...

وقتي ضيق جدًا،،،، وورايا برامج كتير أعملها.......

وأنا متفهمة ضيق وقتكم، لكن أنا أدعو الله أن يجعل كل علم تؤدونه للمبتدئين أمثالنا في ميزان حسناتكم إن شاء الله... :)

هي بس الفانكشن الأخيرة دي بس مش فاهماها،،،، في شوية حاجات أساسية ياريت حد يديني فكرة عنها، مثلاً:

اقتباس
Write a function that, when you call it, displays a message telling how many times it has been called

يعني إيه external variable ؟؟ و static variable ؟؟ و automatic variable ؟؟

أنا بس مش متخيلة البرنامج هيشتغل ازاي، أو فكرته مش قادرة تخطر على بالي!!! :(

جزاكم الله خيرًا، وأنا آسفة بجد ان كانت أسئلتي لا داع لها!

تم تعديل هذه المشاركة بواسطة tracy في 7 أغسطس 2009 في 16:57

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

#16

السلام عليكم

ان من الأفضل أيضا وضع السؤال للداله swap

اللى فهمته ان الداله يمرر لها قيمتين ثم تعود الداله بهم مرتبين تنازليا أى من الأكبر الى الأصغر

وعلى هذا الفهم كان هذا التعديل

#include <iostream>
using namespace std;
void swap (int &a, int &b);
int main (){

	int num1, num2;

	cout << "Enter first number, second number: ";
	cin >> num1 >> num2;

	 swap (num1 , num2);
	 cout<<num1<<"  "<<num2<<endl;
	system ("pause");
	return 0;
}


void swap (int &a, int &b){
	int temp;
	if (a < b){
		temp = a;
		a = b;
		b = temp;
	}
}

والذى لم أفهم وظيفته هو البارامتر الثالث هل تريديه استقبال القيمه الأكبر؟؟

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#17
اقتباس
يعني إيه external variable ؟؟ و static variable ؟؟ و automatic variable ؟؟

int a; //external variable

int main()
{
	int c; // automatic variable
	static int b; // static variable

	return 0;
}

SAFETY TIP : Always delete what you new, and free what you malloc, never mix new with free or malloc with delete.

#18

بالنسبه للسؤال الثانى

external variable

وهى المتغيرات التى يوجد قبلها الكلمه المحجوزه extern مثل

extern int var;

وهى تعتبر همزة وصل بين أكثر من ملف أو أكثر من برنامج ولكى يتم توضيح الموضوع لدينا المثال التالى

فتحنا مشروع جديد وأنشأنا ملف a.cpp يحتوى على ما يأتى

int t=1;

سطر واحد فقط فيه متغير واسندنا له القيمه 1

وقمنا بإنشاء ملف آخر داخل المشروع اسمه b.cpp

#include <iostream.h>
extern int t;
int main()
{
	cout<<t<<endl;
	return 0;
}

شغل البرنامج ستجد انه يطبع قيمة المتغير t الموجوده فى الملف الآخر

احذفى الكلمه extern وشوفى ما يحدث

هل توصلتى للفكره؟

بالنسبه للمتغيرات الأوتوماتيك

جميع المتغيرات فى السى او السى بلس بلس هى أوتوماتيك اذا لم يذكر غير ذلك

أى تولد فى مدى معين وتموت عندما نخرج من هذا المدى

المتغيرات الستاتيك :

المتغير الإستاتيك هو متغير يحجز مره واحده مهما تم استدعاء الداله التى تحتويه ويحتفظ بقيمته السابقه دون تغيير

أما المتغيرات الأوتوماتيك فهى تحجز لمدى معين ثم تموت وعندما نستدعى الداله مرة ثانيه تنشأ من جديد أى لا تحتفظ بقيمتها الا فى مدى معين

بالنسبه للسؤال .......

يمكنك استخدام متغير جلوبال واسناد القيمه صفر له وداخل الداله المطلوبه تزيدى قيمته بواحد ثم تعرضيه بإستخدام cout

أو تعلنى عن متغير استاتيك static داخل الداله نفسها وتعطيه القيمه صفر

ونفس الكلام السابق بلا تغيير

طبعا عرفتى لما لا نستطيع استخدام المتغيرات الأوتوماتيك فى سؤالك؟

بالتوفيق

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#19
اقتباس
جميع المتغيرات فى السى او السى بلس بلس هى أوتوماتيك اذا لم يذكر غير ذلك

وهل هذا اوتوماتيك برأيك؟

int global;
int main() { return 0; }

SAFETY TIP : Always delete what you new, and free what you malloc, never mix new with free or malloc with delete.

#20

لا يا أخى ليس اوتوماتيك

لأنه متغير global وهو لا ينطبق عليه الجمله التاليه

اقتباس
أى تولد فى مدى معين وتموت عندما نخرج من هذا المدى

وقصدى أن اى متغير يعلن عنه داخل بلوك أو مدى يكون أوتوماتيك اذا لم يذكر غير ذلك

وشكرا على التنبيه أخى محمد :)

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#21

يعطيك العافية اخوي أمين

هذي المكتبة المطلوبه

#22

جزاكم الله خيرًا يا جماعة،،،،،، جزاكم الله الجنة إن شاء الله... :)

أستاذي أمين،،،، أنا عدلت الكود ليعمل هكذا:

#include <iostream>
using namespace std;
int main (){
	int swap (int a, int b);
	int num1, num2;
	char choice;

	do {
	cout << "\n\nEnter first number, second number: ";
	cin >> num1 >> num2;

	swap (num1 , num2);

	cout << "\nDo another? (y or n): ";
	cin >> choice;

	} while (choice != 'n');



	system ("pause");
	return 0;
	}


void swap (int a, int b){
	int temp;
	if (a > b){
		  cout << endl << a << "   " << b << endl << endl;
		  }
	else
		  cout << endl << b << "   " << a << endl << endl;
	}

والحمد لله، شغال تمام........

بس سؤال: هو ليه حضرتك اخترت انك تبعت الباراميترات by reference ؟؟؟

هل لذلك مغزى؟

بس هي الحاجة اللي عاوزة أفهمها الفانكشن اللي بتعرف هي استدعت كام مرة ازاي.....

بجد أنا مش متخيلاها........ حد في ف دماغه حاجة؟؟؟

تم تعديل هذه المشاركة بواسطة tracy في 8 أغسطس 2009 في 00:28

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

#23

Mohd.A

العفو أخى ولكن أى مكتبه تقصد ؟

tracy :

بالنسبه للداله swap وتعريفها فى السؤال , اذا أردنا فقط كتابة القيم مرتبه ترتيبا تنازليا دون التغير في قيمهم الأصليه فالحل هو طريقتك أى التمرير بالقيمه , أما لو أردنا ان نغير قيمهم الأصليه بحيث أن يأخذ الأول القيمه الأكبر والثانى القيمه الأصغر فيجب التمرير بالريفرنس

وعموما تعودنا أن كلمة swap تعنى تبديل القيم بين متغيرين !!!!

---------------------------------------------------------

بالنسبه لعد مرات استدعاء داله فخذى المثال الآتى

لو فرضنا أن لدينا طابور من الأشخاص ونريد عد هذا الطابور بدون أن يخرج أحد منه للعد ماذا نحتاج ؟؟؟

نحتاج لشخص خارج الطابور للعد

أى نريد متغير جلوبال تكون قيمته صفر فى البدايه وفى كل مرة استدعاء للداله تقوم تلك الداله بزيادة قيمة هذا المتغير بمقدار واحد

وطريقه أخرى

أننا نعلن عن متغير استاتيك داخل الداله وتكون قيمته تساوى صفر وتقوم الداله بزيادته واحد فى كل مره استدعاء

ثم نعرض قيمة هذا المتغير

والسؤال لماذا لا يصلح متغير عادى داخل الداله لعد مرات الإستدعاء ؟؟

لأن فى كل مرة استدعاء ينشأ المتغير من جديد ويفقد قيمته السابقه

شوفى المثال :::

#include <iostream>
#include <conio.h>
using namespace std;
void func()
{
	int count=0;
	count++;
	cout<<"I have been called  "<<count<<" times\n";

}
void main ()
{	
	func();
	func();
	func();
	func();
	getch();
}

ويكون الناتج بهذا الشكل

I have been called 1 times

I have been called 1 times

I have been called 1 times

I have been called 1 times

لاحظى أن الرقم 1 لم يتغير لأن المتغير count فى كل مره استدعاء ينشأ من جديد ؟

هل توصلتى لحل سؤالك :)

سلام

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#24

بجد والله يا فندم أنا مش عارفة أشكر حضرتك ازاي!!!!

أستاذي ومعلمي الفاضل: أمين،، جزاكم الله خير الجزاء..

وجعله في ميزان حسناتك ونفع بك إن شاء الله.. :)

توصلت لحل السؤال يا فندم، وغيرت فيه حاجات بسيطة أوي كدا:

#include <iostream>
using namespace std;
void func()
{
	static int count=0;
	count++;
	cout<<"I have been called  "<<count<<" times\n";

}

int main ()
{  
	for (int i = 0; i < 20; i++)  
	func();


	system ("pause");
	return 0;
}

لأنه مطلوب في المسألة استدعائها على الأقل 10 مرات.....

شكرًا يا فندم.... أنا ممتنة جدًا لحضرتك... :)

تم تعديل هذه المشاركة بواسطة tracy في 8 أغسطس 2009 في 18:00

أستغفر الله العظيم الذي لا إله إلا هو الحي القيوم وأتوب إليه

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

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

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

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

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