PDA

View Full Version : لطفا کمک کنید : خواندن یک فایل و عمل جمع عددها



irankhalij
جمعه 02 اسفند 1392, 18:11 عصر
سلام
من یک فایل متنی دارم که می خوام فایل با نام Sample02.txt را بخونه و برای سطری که با 21 شروع می شود، مقدار روبرویش را پیدا کنه و جمع بزنه

من کد زیر رو نوشتم ولی جواب نمیده
لطفا راهنمایی کنید

فایل متنی رو هم پیوست کردم


http://up.ashiyane.org/images/gppt0v17g9nuaolu3b2.rar





کد

#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include <fstream.h>



int main()
{


int num1,num3,i,j;
char cama1,cama4;
char cama[2];
char num2[5];




ifstream fp("Sample02.txt",ios::in);

if(!fp)
{
cerr<<"File can not open!"<<endl;
exit(1);
}

while(fp>>num1>>cama>>num2)
{


if (num1==21){

for (int i=5,j=1;i>=0;i--,j*=10){
num3+=((int(num2[i])-48)*j);}




cout<<num1+num3<<endl;}
}
return 0;












}

amirhossein.ha
جمعه 02 اسفند 1392, 19:25 عصر
کدتون رو توی تگ بزارید تا خوب نمایش داده بشه .
مشکل برنامه شما اینه که یه عدد صحیح از فایل میخونید و توی اون متغیر عدد تا اولین اسپیس یا \n رو ذخیره میکنه برای این باید از string استفاده کنید و دو کارکتر اولش رو چک کنید
کد :

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
ifstream fin("Sample02.txt");
if(!fin)
{
cerr<<"File can not open!"<<'\n';
return 0;
}
string s;
long long Sum=0;
while(!(fin.eof()))
{
fin>>s;
if(s[0]=='2' && s[1]=='1')
{
long long n=0;
for(int i=2;i<s.size();i++)
{
n*=10;
n+=(s[i]-'0');
}
Sum+=n;
}
}
cout<<Sum<<'\n';
return 0;
}



اگه سوالی هست در خدمتم

irankhalij
جمعه 02 اسفند 1392, 21:10 عصر
کدتون رو توی تگ بزارید تا خوب نمایش داده بشه .
مشکل برنامه شما اینه که یه عدد صحیح از فایل میخونید و توی اون متغیر عدد تا اولین اسپیس یا \n رو ذخیره میکنه برای این باید از string استفاده کنید و دو کارکتر اولش رو چک کنید
کد :

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
ifstream fin("Sample02.txt");
if(!fin)
{
cerr<<"File can not open!"<<'\n';
return 0;
}
string s;
long long Sum=0;
while(!(fin.eof()))
{
fin>>s;
if(s[0]=='2' && s[1]=='1')
{
string t;
for(int i=2;i<s.size();i++)
t+=s[i];
long long n=0;
for(int i=2;i<s.size();i++)
{
n*=10;
n+=(s[i]-'0');
}
Sum+=n;
}
}
cout<<Sum<<'\n';
return 0;
}



اگه سوالی هست در خدمتم



ممنون مخلصیم :تشویق:

ببخشید این کدها برای محیط visual studio هست؟
محیط من tc هست اونجا جواب نداد:ناراحت:

amirhossein.ha
شنبه 03 اسفند 1392, 17:09 عصر
نه من از code::blocks استفاده میکنم
به شما هم توصیه میکنم از turbo c استفاده نکنید و از IDE های دیگه مثه همین code:blocks یا visual stdio استفاده کنید