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

اختبر قدراتك في C/CPP - الحلقة الرابعة, الجزء الثالث عشر

مغلق
بدأه Snack3r في 15 سبتمبر 2012 · 4 رد · 782 مشاهدة · في اختبر قداراتك
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الحلقة الأولى.

الحلقة الثانية - الجزء الأول.

الحلقة الثانية - الجزء الثاني.

الحلقة الثانية - الجزء الثالث.

الحلقة الثانية - الجزء الرابع.

الحلقة الثانية - الجزء الخامس.

الحلقة الثانية - الجزء السادس و الأخير.

الحلقة الثالثة - الجزء الأول.

الحلقة الثالثة - الجزء الثاني.

الحلقة الثالثة - الجزء الثالث.

الحلقة الثالثة - الجزء الرابع.

الحلقة الثالثة - الجزء الخامس و الأخير.

الحلقة الرابعة - الجزء الأول.

الحلقة الرابعة - الجزء الثاني.

الحلقة الرابعة - الجزء الثالث.

الحلقة الرابعة - الجزء الرابع.

الحلقة الرابعة - الجزء الخامس.

الحلقة الرابعة - الجزء السادس.

الحلقة الرابعة - الجزء السابع.

الحلقة الرابعة - الجزء الثامن.

الحلقة الرابعة - الجزء التاسع.

الحلقة الرابعة - الجزء العاشر.

الحلقة الرابعة - الجزء الحادي عشر.

الحلقة الرابعة - الجزء الثاني عشر.

مرحبا بكم إخوتي الكرام في الجزء الثالث عشر من الحلقة الرابعة من سلسلة اختبر قدراتك, قمتُ بتقسيم الحلقة الرابعة إلى عدة أجزاء, مُرتبة حسب الصعوبة.

أجزاء هذه الحلقة ستكون خاصة بمسائل الــ OOP.

الإختبار الرابع (الجزء الثالث عشر) :

اكتب برنامج يطلب من المستخدم إدخال عدد حقيقي ثم يُظهر على الشاشة مُربع العدد على شكل model مُكون من 12 محرف و ذلك بطريقتين :

  1. على هئية الــ fixed point مع عدد من أرقام الفاصلة يتراوح ما بين 0 و 10.
  2. على هئية الــ scientific notation مع عدد من أرقام الفاصلة يتراوح ما بين 0 و 10.

في كلتا الحالتين, يجب أن يكون شكل المُخرجات هكذا :

précision de xx chiffres : cccccccccccc

مثال :

post-219439-010483200 1347723727_thumb.p

سأضع حل السؤال بعد إنتهاء عرض المحاولات.

المرفقات
testCode.png
#2
#include <stdio.h>
#include <conio.h>
#include <string.h>

int main(){
	float f, f1;
	char s1[]="\t%._f\n", s2[]="\t%._e\n";
	int i, l = 0;
	printf("donnez un nombre réel: ");
	scanf("%f", &f);
	f1=f=f*f;
	while((int)f1>0){
		l++;
		f1/=10;
	}
	printf("voisi son carré:\nEn notation point fixe:\n");
	for(i=0; i<=12-l; i++){
		s1[3] = i+48;
		printf("  précision de %d chiffre :\t", i);
		printf(s1, f);
	}
	printf("En notation scientifique:\n");
	for(i=0; i<=12-l; i++){
		s2[3] = i+48;
		printf("  précision de %d chiffre :\t", i);
		printf(s2, f);
	}
	_getch();
	return 1;
}

donnez un nombre rلel: 12.3456
voisi son carrل:
En notation point fixe:
  prلcision de 0 chiffre :              152
  prلcision de 1 chiffre :              152.4
  prلcision de 2 chiffre :              152.41
  prلcision de 3 chiffre :              152.414
  prلcision de 4 chiffre :              152.4138
  prلcision de 5 chiffre :              152.41385
  prلcision de 6 chiffre :              152.413849
  prلcision de 7 chiffre :              152.4138489
  prلcision de 8 chiffre :              152.41384888
  prلcision de 9 chiffre :              152.413848877
En notation scientifique:
  prلcision de 0 chiffre :              2e+002
  prلcision de 1 chiffre :              1.5e+002
  prلcision de 2 chiffre :              1.52e+002
  prلcision de 3 chiffre :              1.524e+002
  prلcision de 4 chiffre :              1.5241e+002
  prلcision de 5 chiffre :              1.52414e+002
  prلcision de 6 chiffre :              1.524138e+002
  prلcision de 7 chiffre :              1.5241385e+002
  prلcision de 8 chiffre :              1.52413849e+002
  prلcision de 9 chiffre :              1.524138489e+002

تم تعديل هذه المشاركة بواسطة khatibe_30 في 15 سبتمبر 2012 في 19:58

[سبحان الله و بحمده, سبحان الله العظيم]

#3

السلام عليكم

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char ** argv)
{
	char format[7] = "%.2f\n";
	char s_format[7] = "%.0e\n";
	char buffer[33];
	int i = 0;
	double number = 0.0;
	printf("Donez un nombre reel: ");
	scanf("%lf", &number);
	printf("\nVoic son carre : \n\n\tEn notation point fixe: \n\n");
	for(i = 0; i < 10; i++)
	{
           	itoa(i,buffer, 10);
             	format[2] = *buffer;
              	printf("\t\t precision de %d  chiffres :  ",i);
       	printf(format,(number * number));
	}
	printf("\n\tEn notation sientifique: \n\n");
	for(i = 0; i < 10; i++)
	{
              	itoa(i, buffer, 10);
             	s_format[2] = *buffer;
              	printf("\t\t precision de %d  chiffres :  ", i);
             	printf(s_format,(number * number));
	}
	return 0;
}

تم تعديل هذه المشاركة بواسطة biginner2000 في 15 سبتمبر 2012 في 20:56

#4

biginner2000@

محاولتك رائعة جداً, و بالرغم من أن هذه الحلقة مُخصصة لــ C++ إلا أنني منحتك نقاط النقاش لأنك تستحقها :)

@ياسين

محاولة جيدة, لكن هل نسيت أن الحلقة مُخصصة لــ C++ ؟ :D

فكرة السؤال كانت تكمن في استعمال الــ Formatting Floating Point Numbers (و بالتحديد fixed و scientific) للتعامل مع البيانات المُرسلة عبر قنوات الإدخال و الإخراج في C++ عن طريق استخدام الدالة setw التابعة للفئة ios و التي تُمكننا من تحديد طول العدد الذي سيتم إظهاره :

#include <iomanip>
#include <iostream>
using namespace std;

int main() {
    float val, carre;
    cout << "donnez un nombre réel : ";
    cin >> val;
    carre = val*val;
    cout << "Voici son carré : " << endl;
    int i;
    cout << " en notation point fixe : " << endl;
    cout.setf(ios::fixed, ios::floatfield);
    for (i = 0; i < 10; i++)
        cout << " précision de " << setw(2) << i << " chiffres : "
            << setprecision(i) << setw(12) << carre << endl;
    cout << " en notation scientifique : " << endl;
    cout.setf(ios::scientific, ios::floatfield);
    for (i = 0; i < 10; i++)
        cout << " précision de " << setw(2) << i << " chiffres : "
            << setprecision(i) << setw(12) << carre << endl;
    return 0;
}

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

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