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

لدي سؤال و هذه محاولتي...

بدأه hamany-pirlo في 4 أبريل 2010 · 3 رد · 434 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدي برنامج و عندما أعمل له compile يظهر لي هذا الخطأ

hw02b.cpp:27: error: storage size of ‘word’ isn't known

فكيف أنشئ array of strings من غير معرفة الحجم إلا في الـ runtime ؟

#include <iostream>
#include <string>

using namespace std;

string smallest(string word[], int n)
{
	string small;

	if(n==0)
		return 0;
	else
		{
			if(word[n].size() < word[n-1].size()) 
				{
					small= word[n];
					return smallest(word, --n);
					}
			else
				return smallest(word, --n);
			}
	}

int main()
{
	int length, n;
	string word[];



	cout<<"Enter a list of words on one line: "<<endl;
	cin>>word;

	length= word.length;
	n= smallest(word, length);

	cout<<"The smallest word is: "<<word[n];

	return 0;
	}

Program every day for 20 years and you will become a good programmer. Program every day for 10 years and study algorithms on the side and you will become a great programmer !

على الأقل هذا اللي سمعته ...

#2

بهذه الطريقة :

string * text;
text = new string [5]
tvquran_6.gif

#3

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

vector<string> word;
word.push_back("name1");
word.push_back("name2");
cout << word[0] << endl;

cout << word.size() << endl;

للمزيد عن الفكتور راجع المواضيع المثبته ، أيضا بحث في قوقل لن يضير :)

http://www.cplusplus.com/reference/stl/vector/vector/

أيضا لديك مشكلة في الدالة حيث ترجع string وعلى حسب حلك يجب أن ترجع index وليس string فقم بتغييرها الى int .

وهذا حل لهاوي سي++ باستخدام STL

// find smallest string

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;

int main(int argc, char* argv[]) {

	// input strings
	vector<string> strings ;
	cout << "Enter strings every one in new line and press CTRL+Z to end input" << endl;
	copy(istream_iterator<string>(cin), istream_iterator<string>(), back_inserter(strings) );

	// print strings content 
	cout << "Strings : " ; copy(strings.begin(), strings.end(), ostream_iterator<string>(cout," ") ); cout << endl << endl;

	// print small element
	cout << "Smallest String is: " << *(min_element(strings.begin(), strings.end()) ) << endl;

	// print Lergest elements
	cout << "Largest  String is: " << *(max_element(strings.begin(), strings.end()) ) << endl;

	return (0);
}

بالتوفيق،

تم تعديل هذه المشاركة بواسطة Wajdy Essam في 4 أبريل 2010 في 13:45

1

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#4

شكراً لكم جميعاً ، كنت أحاول إني أعملها بنفس طريقة الأخ فهد الشلوي بس ما عرفت ، و لكن الحمدلله إنك ذكرتها.

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

Program every day for 20 years and you will become a good programmer. Program every day for 10 years and study algorithms on the side and you will become a great programmer !

على الأقل هذا اللي سمعته ...

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