نمایش نتایج 1 تا 7 از 7

نام تاپیک: محاسبه کردن یک جمع رشته

  1. #1
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اصفهان
    پست
    717

    Thumbs up محاسبه کردن یک جمع رشته

    سلام دوستان یک سوال دارم ممنون میشم کمکم کنید
    فرض کنید که یک کاربر یک مقداری به این شکل وارد می‌کنم
    42+1+0+20
    بعد حالا ما به چه روشی و به چه کدی میتوانیم. این String را محاسبه کنیم.
    که جواب به ما بده 63
    ممنون میشم راهنمایی ام کنید

  2. #2
    کاربر دائمی آواتار hp1361
    تاریخ عضویت
    دی 1384
    محل زندگی
    تهران
    پست
    750

    نقل قول: محاسبه کردن یک جمع رشته

    نقل قول نوشته شده توسط www.pc3enter.tk مشاهده تاپیک
    سلام دوستان یک سوال دارم ممنون میشم کمکم کنید
    فرض کنید که یک کاربر یک مقداری به این شکل وارد می‌کنم
    42+1+0+20
    بعد حالا ما به چه روشی و به چه کدی میتوانیم. این String را محاسبه کنیم.
    که جواب به ما بده 63
    ممنون میشم راهنمایی ام کنید
    اگر مطمئن اید که در رشته فقط عدد و علامت +-/* هستش، رشته رو از ابتدا شروع به خوندن کنید(حرف به حرف) تا به اولین کاراکتر عملیات چهارگانه برسید و نتیجه رو در یک متغیر بریزید و این کار رو دوباره از اینکس بعد از اون علامت اولی که یافتین تکرار کنید الی آخر.

  3. #3
    کاربر دائمی آواتار persia_hrn
    تاریخ عضویت
    آذر 1390
    محل زندگی
    شیراز
    پست
    145

    نقل قول: محاسبه کردن یک جمع رشته

    سلام دوست عزیز
    شما یه زحمت میکشید یه Edit و یه Button و یه label به فرمتون اضافه میکنید و بعد کد زیر رو اضافه کنید :
    Function Calc(Input: String): String;
    var
    Txt, S1, S2: String;
    Ps1, Ps2, Loop1, Loop2: Integer;
    Sum: Real;
    begin
    Txt:=Input;
    Loop1:=0;
    S1:=Copy(Txt,1,1);
    while S1<>'' do
    begin
    Loop1:=Loop1+1;
    S1:=Copy(Txt,Loop1,1);
    if (S1='+') or (S1='-') or (S1='*') or (S1='/') then
    begin
    Ps1:=Loop1;
    For Loop2:=Loop1+1 to Length(Txt) do
    begin
    S2:=Copy(Txt,Loop2,1);
    if (S2='+') or (S2='-') or (S2='*') or (S2='/') then
    begin
    Ps2:=Loop2;
    Break;
    end
    else
    if Loop2=Length(Txt) then
    begin
    Ps2:=length(Txt)+1;
    Break;
    end;
    end;
    if S1='+' then Sum:=StrToFloat(Copy(Txt,1,Ps1-1))+StrToFloat(Copy(Txt,Ps1+1,(Ps2-Ps1)-1));
    if S1='-' then Sum:=StrToFloat(Copy(Txt,1,Ps1-1))-StrToFloat(Copy(Txt,Ps1+1,(Ps2-Ps1)-1));
    if S1='*' then Sum:=StrToFloat(Copy(Txt,1,Ps1-1))*StrToFloat(Copy(Txt,Ps1+1,(Ps2-Ps1)-1));
    if S1='/' then Sum:=StrToFloat(Copy(Txt,1,Ps1-1))/StrToFloat(Copy(Txt,Ps1+1,(Ps2-Ps1)-1));
    Txt:=FloatToStr(Sum)+Copy(Txt,Ps2,Length(Txt));
    Loop1:=0;
    end;
    end;
    Result:=FloatToStr(Sum);
    end;


    نحوه استفادشم اینجوریه :
    توی OnClick مربوط به button بنویسید :
    Label1.Caption:=Calc(Edit1.Text);


    اگر جاییش ایراد داره خودتون رفعش کنید و در ضمن این فانکشن اولویت عملیات رشته ریاضی رو در نظر نمیگیره .

    موفق باشید .

  4. #4
    کاربر دائمی آواتار persia_hrn
    تاریخ عضویت
    آذر 1390
    محل زندگی
    شیراز
    پست
    145

    نقل قول: محاسبه کردن یک جمع رشته

    سلام فانکشن بالا یه مشکل کوچولو با اعداد منفی داشت که درستش کردم :
    Function Calc(Input: String): String;
    var
    Txt, S1, S2: String;
    Ps1, Ps2, Loop1, Loop2: Integer;
    Sum: Real;
    begin
    Txt:=Input;
    Loop1:=0;
    S1:=Copy(Txt,1,1);
    while S1<>'' do
    begin
    Loop1:=Loop1+1;
    S1:=Copy(Txt,Loop1,1);
    if (S1='+') or (S1='-') or (S1='*') or (S1='/') then
    begin
    Ps1:=Loop1;
    For Loop2:=Loop1+1 to Length(Txt) do
    begin
    S2:=Copy(Txt,Loop2,1);
    if (S2='+') or (S2='-') or (S2='*') or (S2='/') then
    begin
    Ps2:=Loop2;
    Break;
    end
    else
    if Loop2=Length(Txt) then
    begin
    Ps2:=length(Txt)+1;
    Break;
    end;
    end;
    if Ps1<>1 then
    begin
    if S1='+' then Sum:=StrToFloat(Copy(Txt,1,Ps1-1))+StrToFloat(Copy(Txt,Ps1+1,(Ps2-Ps1)-1));
    if S1='-' then Sum:=StrToFloat(Copy(Txt,1,Ps1-1))-StrToFloat(Copy(Txt,Ps1+1,(Ps2-Ps1)-1));
    if S1='*' then Sum:=StrToFloat(Copy(Txt,1,Ps1-1))*StrToFloat(Copy(Txt,Ps1+1,(Ps2-Ps1)-1));
    if S1='/' then Sum:=StrToFloat(Copy(Txt,1,Ps1-1))/StrToFloat(Copy(Txt,Ps1+1,(Ps2-Ps1)-1));
    Txt:=FloatToStr(Sum)+Copy(Txt,Ps2,Length(Txt));
    Loop1:=0;
    end;
    end;
    end;
    Result:=FloatToStr(Sum);
    end;


    موفق باشید .

  5. #5
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اصفهان
    پست
    717

    نقل قول: محاسبه کردن یک جمع رشته

    ممنون، ببخشید من تازه کد نویسی را شروع کردم و چیزی زیادی بلد نیستم
    فقط یک سوال من فقط میخوام علامت + را حساب کنه
    نیازی به * / و - ندارم.
    اون چطوریه

  6. #6
    کاربر دائمی آواتار hp1361
    تاریخ عضویت
    دی 1384
    محل زندگی
    تهران
    پست
    750

    نقل قول: محاسبه کردن یک جمع رشته


    procedure TForm1.Button1Click(Sender: TObject);
    var
    Str: string;
    Sum, PlusIndex: Integer;
    begin
    Sum := 0;
    PlusIndex := -1;

    Str := Edit1.Text;
    // تعیین ایندکس اولین جایی که علامت + در رشته وجود دارد
    PlusIndex := Str.IndexOf('+');
    while PlusIndex > 0 do
    begin
    // از ابتدای رشته تا محل علامت + رو کپی کرده و بعد از تبدیل به عدد، با مقدار قبلی متغیر مجموع جمع میکنیم
    Sum := Sum + StrToInt(Copy(Str, 1, PlusIndex));
    //برای حذف کاراکتر های قبل از اولین + و همچنین خود +، کارکترهای بعد از علامت + از رشته را کپی کرده و مجددا درون متغیر رشته میریزیم
    Str := Copy(Str, PlusIndex + 2, Length(Str) - PlusIndex);
    PlusIndex := Str.IndexOf('+');
    end;
    if Str.Length > 0 then
    Sum := Sum + StrToInt(Str);

    ShowMessage('نتیجه : ' + IntToStr(Sum));
    end;

  7. #7

    نقل قول: محاسبه کردن یک جمع رشته


    procedure TForm1.Button1Click(Sender: TObject);
    var
    i, sum: integer;
    s: string;
    lst: TStringList;
    begin
    s := '42+1+0+20';
    lst := TStringList.Create;
    lst.Text := StringReplace(s, '+', #13#10, [rfReplaceAll]);
    sum := 0;
    for i := 0 to lst.Count -1 do
    sum := sum + StrToInt(lst[i]);
    lst.Destroy;
    ShowMessage(IntToStr(sum));
    end;
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

تاپیک های مشابه

  1. پیدا کردن یک زیر رشته در رشته ای که مقدار ثابت ندارد
    نوشته شده توسط سیدسبحان در بخش C#‎‎
    پاسخ: 1
    آخرین پست: چهارشنبه 12 خرداد 1395, 17:26 عصر
  2. پیدا کردن یک زیر رشته در یک رشته
    نوشته شده توسط dj_dj_dj در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 4
    آخرین پست: سه شنبه 16 آبان 1391, 01:26 صبح
  3. جمع کردن یک ستون برای هر صفجه : و محاسبه نتیجه نهایی !
    نوشته شده توسط CODETALA در بخش گزارش سازی با Crystal Report
    پاسخ: 2
    آخرین پست: پنج شنبه 07 اردیبهشت 1391, 16:46 عصر
  4. سوال: جدا کردن یک زیر رشته از رشته
    نوشته شده توسط asghar2008 در بخش VB.NET
    پاسخ: 3
    آخرین پست: شنبه 07 آبان 1390, 15:35 عصر
  5. رمز کردن یک رشته
    نوشته شده توسط موسوی در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: شنبه 17 آبان 1382, 22:20 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •