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

Progress Bar In C Language need Help

بدأه farid777 في 28 يناير 2014 · 9 رد · 764 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا اخوتي الكرام

اريد المساعدة من اهل الخبرة عن كيفية كتابة كود في لغة السي 
كود progress bar 
|==================================================>| 100.00 %
في هذا الشكل 
ولكم جزيل الشكر

1 −1
#2

ليس هناك شيء في لغة C اسمه progress bar ابحث في win32API كما أن Google ينتظرك

#3

بحثت في gogole ولم اجد جواب على سؤالي لقد كتبت كود ولكن لم استطع برمجته بصورة صحيحة
هذا الكود
 

void doSomethingHard();
int main()
for (int i=0; i<100; i++)
{
    doSomethingHard();
}
int doSomethingHard()
{ 
    printf("=", i);
    sleep(1);
}
ارجوا المساعدة

تم تعديل هذه المشاركة بواسطة farid777 في 29 يناير 2014 في 20:33

#4

اعذرني فلم أفهم ماذا تريد ..

ماهذا

printf("=", i);

وما الذي تريده ؟ كود Progress bar ?  هذا يتعلق بنظام التشغيل وأعتقد أنك تستخدم ويندوز والأمثلة موجودة إن بحثت

أم أنك تريد القيام بعمل ما أثناء متابعة الـprogress bar تقدمه ؟

 

هل يمكنك أن تفصل طلبك ؟

#5

السلام عليك اخي الكريم لا اني استعمل LINUX و gcc compiler - وهذا الكود

printf("=", i);

يقوم بكتابة ال ============================100.0

 

ونعم اني اريد اثناء ال progress bar بقراءة ملفات موجودة في ملف ثابت وطباعة اسماء الملفات فقط

 

اشكرك جدا اخي على المساعدة

تم تعديل هذه المشاركة بواسطة farid777 في 30 يناير 2014 في 00:09

#6

طيب بما أن الموضوع يحتاج إلى API فهناك من يجيبك أفضل مني , ولكن سأقول ما عندي

من هنا

أنقل الكود مع بعض التعديلات

#include <iostream>
#include <windows.h>
#include<cstring>
using namespace std;

int Global=0;
DWORD WINAPI ThreadProc( LPVOID lpParam )
{
    for(int i=0;i<100;i++)//AnyThing
    {
            Beep(i*100,100);
            Global++;
    }
    return 0;
};

int main( )
{

    DWORD dwThreadId;

    HANDLE hThread = CreateThread(
                  NULL,              // default security attributes
                  0,                 // use default stack size
                  ThreadProc,        // thread function
                  NULL,             // argument to thread function
                  0,                 // use default creation flags
                  &dwThreadId);   // returns the thread identifier


   for(int i=0;i<100;i++)//Progress Bar
   {
       while(Global<=i);
        cout <<"=";
   }

while(WaitForSingleObject(hThread,100)!=WAIT_OBJECT_0);
    CloseHandle(hThread);

   return 0;
}

بالنسبة لي , حلّ مشكلتك باستخدام multi threading أي تعدد المسالك ..

ولعل أحد الخبراء يفيدك بإجابة أفضل

بالتوفيق

#7

مشكور اخي وبارك الله فيك :)

#8

السلام عليك اخي بعد عدة محاولات برمجة الكود لقد استطعت بكتابته بصورة صحيحة
هذا الكود
كما ترون لقد كتبت الكود من غير ال API ولكن لقد عجزت عن اضافة ال percent بجانب ال ============
ارجوا المساعدة من اهل الخبرة
 

#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
#include <unistd.h>
#include <string.h>

void prog(int x);

int main()
{
char *strcat(char *dest, const char *src);
char *strcpy(char *dest, const char *src);

printf("\n");
int x;
prog(x);
}

void prog(x)
{

char str='=';
for(x=0;x<=50;x++)
{
str=+str;
     printf("%c", str);


fflush(stdout);
sleep(1);
}

}

تم تعديل هذه المشاركة بواسطة farid777 في 30 يناير 2014 في 23:12

#9

لم أفهم الكود الذي كتبته ولكن على أي حال انظر إلى هذا

#include <stdio.h>
#include <stdlib.h>
void DoSomeThing(){
    int q;
    for(q=0;q<10000000;q++);
}
int main()
{
    int i,j,k;
    for(i=0;i<100;i++)
        {
            for(j=0;j<i;j++)
                printf("=");
            for(k=i;k<100;k++)
                printf(" ");
            printf("%d%%",i);
            DoSomeThing();
            system("cls");
        }
    return 0;
}

أو هذا مثلاً

#include <stdio.h>
#include <stdlib.h>
void DoSomeThing(){
    int q;
    for(q=0;q<10000000;q++);
}
int main()
{
    int i,j,k;
    for(i=0;i<=50;i++)
        {
            for(j=0;j<i;j++)
                printf("=");
            for(k=i;k<=50;k++)
                printf(" ");
            printf("%d%%\r",2*i);
            DoSomeThing();
        }
    return 0;
}

الأمر بسيط إن كنت لا تريد هذا فقط .

#10

السلام عليك اخي وبارك الله بك هذا هو ما كنت اريده بلضبط الكود رقم 2
لك جزيل الشكر اخي :P وإن شاء الله رح افيدك من علمي انت وجميع الاخوة الكرام في اشياء من اختصاصي

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