کد،کد و بازهم کد

این وبلاگ همش کده!

کد،کد و بازهم کد

این وبلاگ همش کده!

*هیچ*

طبقه بندی موضوعی

نحوه گرفتن ورودی از فایل و ذخیره آن در فایل خروجی در ++C

بیشتر مسابقات به شما ورودی نمی دهند تا خودتان جواب درست را برای آنها بنویسید.ولی برخی مسابقات مانند مسابقه برنامه نویسی بیان 100 ورودی برای یک سوال می دهند و از شما فایل خروجی می خواهند و پس از آن ، سورس برنامه را می خواهند.این برنامه ای که آموزش داده   می شود، فقط برای پردازش فایل ورودی و خروجی می باشد و شما برای دادن سورس برنامه باید به طور معمول و ففط با کتابخانه استاندارد برنامه  نویسی کنید.

ابتدا باید علاوه بر کتابخانه استاندارد،باید دو کتابخانه ی زیر را اضافه کنید.

#include <fstream>
#include <cstdio>

حالا باید برای برنامه تعریف کنیم که فایل ورودی را از کجا بگیرد و فایل خروجی را به کجا بریزد.فرض می کنیم که نام فایل ورودی، input.txt و فایل خروجی، output.txt است.

ifstream fin("input.txt");
ofstream fout("output.txt");

حالا برای اینکه مقدار متغیر مورد نظر-مثلا متغیر a و b-را از ورودی بگیریم،از دستور fin و برای خروجی دادن از دستور fout استفاده می کنیم.مثال:

fin>>a>>b;
fout<<a+b<<endl;

در واقع می توان گفت که تنها تفاوت دستوری fin و fout با cin و cout اینست که cin و cout ، ورودی را از برنامه و خروجی را نیز به برنامه می دهند ولی fin و fout ، ورودی را از فایل و خروجی را به فایل می دهند.

نکته:وقتی از fin و fout استفاده می کنید نیاز به نگه داشتن برنامه با ("system ("pause و getchar و... ندارید.زیرا خروجی خودکار در فایل ذخیره می شود و در کنسول نمایش داده نمی شود.

تذکر:محل کامپایل شدن برنامه و فایل ورودی و خروجی باید در یک پوشه باشند.

نمونه یک برنامه که n بار ورودی می گیرد و خروجی را در فایل جداگانه ذخیره می کند.

 

#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;
int main ()
{
    int a,b,n;
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    cin>>n;
    for (int i=0;i<n;i++)
    {
        fin>>a>>b;
        fout<<a+b<<endl;
    }
}      
 
  • سپهر محمدی

نظرات  (۵)

  • محمد سهرابی
  • aghaye mohamadi salam.

    babat vebloget dastet dard nakone.

    man daneshjooye reshte IT hastam va shadidan be barname nevisi alaghe daram v be omid khoda daram amade misham bara mosabeghat ACM.man ye seri moshkel ro fail daram ke vaghti mikham dadeham ro ke rekord hastan ro chetori bayad bekhonam.

    man mikham ba yek dade kelidi mesle ID yek rekordam ro az vorodi bekhonam va ye taghiri rosh anjam bedm va dobare zakhirash konam. lotf mikonid age sari javabam ro bedid.

    پاسخ:
    میشه یه مثال بزنید؟منظرتون از رکورد چیه ؟
  • محمد سهرابی
  • اقای محمدی اگه براتون مقدوره لطفا جواب رو تو وبلاگ خودم بنویسد.من اماده تبادل لینک هستم و شما رو هم لینک کردم شما هم اگه خواستید لینک کنید.با تشکر فراوان.خیلی اقایی
    پاسخ:
    ممنون.شما لینک شدید
    سلام
    چطور می شود زبان فرترن را به سی پلاس پلاس تبدیل نمود؟
    ممنون می شوم که راهنمایی کنید
    باتشکر
    حسین
    پاسخ:
    اصولا تبدیل دو زبان به یکدیگر هیچ وقت کاملا درست نمیشود. مگر اینکه دو زبان یا خیلی به هم شبیه باشند یا از یک فریم ورک استفاده کنند.مثلا زبان vb.net و C#.Net رو میشه به یکدیگر تبدیل کرد.
    من زبان فرترن رو بلد نیستم اما دو نرم افزار برای تبدیل فرترن به سی پلاس پلاس میشناسم:
    ۱- نرم افزار f2c
    ۲- نرم افزار fable
    نام این نرم افزار ها رو در گوگل سرچ کنید ، دانلود کنید و مطابق توضیحی که داده شده است عمل کنید .
    سلام و خسته نباشید
    ممنون بابت آموزش خلاصه و کاربردیتون
    من برنامه خودتون رو تست کردم
    فایل input.txt حاوی 123 در خط اولش و 321 در خط بعد هستش
    اما برنامه رو که اجرا میکنم و مقدار n رو 1 یا 2 میدم مقداری که برای a و b میخونه و ذخیره میکنه مجموع اعداد تناظر هستش
    یعنی :
    123
    321
    ____
    444
    حتی
    fout<<a+b<<endl;
    این خط رو تبدیل کردم به :
    fout<<a<<endl;
    اما خروجی تفاوتی نداشت!!!
    لطفا جواب رو به ایمیلم هم بفرستید ممنون میشم
    پاسخ:
    امکان نداره که a و a+b با هم مساوی در بیان ! 
    احتمالا مشکل از کامپایلرتونه یا اینکه یه جا غلط میزنید کامپایلر میاد فایل قبلی رو کامپایل می کنه.
    ضمنا اون n برای تعداد خطوط ورودیه . که تعداده ...
    سلام
    ضمن تشکر از مطلب خوبتون میخواستم بپرسم چطور میشه ورودی ها را از چند فایل ورودی گرفت و خروجی ها در یک فیل چاپ شود. مثلا در همان مثال بالا، اعداد a و b را دو تا دو تا از فایل های جداگانه دریافت کرد، اما حاصل جمع را در یک فایل خروجی چاپ کرد؟
    پاسخ:
    سلام،
    خوب میتونید یه fstream دیگر هم تعریف کنید که ورودی دوم تون رو از اون بگیرید !
    ----
    ببخشید بابت دیر جواب دادن چون درگیر کنکور هستم ! 
    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی