View Full Version : سوال: خواندن از فایل و 1 سوال دیگه
soroush_tayyebi
یک شنبه 20 دی 1388, 18:27 عصر
با سلام
به برنامه هستش که نام بانک،درصد سودهای یه بانک رو از یه فایل میخونه و مقدار پولی که گذاشتن رو از کاربر گرفته و بعد میگه چه نوع سپرده ای هست و بعد انتخاب کاربر مقدار سود تعلق گرفته رو حساب میکنه،در فایل مینویسه و بعد از فایل اجرا میکنه
من این برنامه رو به این صورت نوشتم که همه چیزش اولش تعریف میشه ولی در فایل نیستش،بلدم تو فایل بنویسم،ولی بلد نیستم ازش بخونم اطلاعات رو.
اگه ممکنه در این مورد راهنماییم کنید
یه سوال دیگه هم داشتم،اینکه میخوام با دکمه های جهت حرکت کنه توی صفحه و با اسپیس سیاه کنه اون نقطه ای که اونجا هستش،این برنامه رو با if نوشتم به این صورت که مختصات رو میگیره،اما میخوام به اون صورتی که گفتم بنویسمش
ممنون میشم راهنماییم کنید
soroush_tayyebi
دوشنبه 21 دی 1388, 01:22 صبح
من برنامه ی اولی بدون فایلش رو بزارم بهم جواب میدید؟؟
tdkhakpur
دوشنبه 21 دی 1388, 12:57 عصر
ان قسمتی از برنامه را که نمیتوانید ارش جواب بگیرید را ارسال کنید و همچنین ساختارتان را هم ارسال کنید.
soroush_tayyebi
سه شنبه 22 دی 1388, 18:19 عصر
ممنون از پاسختون،نا امید شده بودم،با borland c++ نوشتمش،البته بعد اینکه بنامه ران شد یهو ارور میده و میاد بیرون ازش:( (موقع کامپایل ارور نمیده)
میخوام اون چیزایی که میگیره تو فایل نوشته بشه و بعدش از فایل بخونه:
#include <stdio.h>
#include <conio.h>
struct bank
{
char name[20];
int m1,y1,y3,y5;
}t[5];
struct user
{
int pul,ruz;
}s;
char menu();
void main()
{
char m;
int a,b,c,sud=0,max=0;
for(a=0;a<5;a++)
{
printf("lotfan name banke %d ra vared konid:\t",a+1);
scanf("%s",t[a].name);
printf("lotfan dar sad sude 6 mahe banke %s ra vared konid:\t",t[a].name);
scanf("%d",t[a].m1);
printf("lotfan dar sad sude 1 sale banke %s ra vared konid:\t",t[a].name);
scanf("%d",t[a].y1);
printf("lotfan dar sad sude 3 sale banke %s ra vared konid:\t",t[a].name);
scanf("%d",t[a].y3);
printf("lotfan dar sad sude 5 sale banke %s ra vared konid:\t",t[a].name);
scanf("%d",t[a].y5);
}
//payane gereftane etela'ate bank
printf("lotfan meghadr pule sarmaye gozari shode ra vared konid.\n");
scanf("%d",&s.pul);
printf("lotfan tedad ruze sarmayegozari pul ra vared konid.\n");
scanf("%d",&s.ruz);
//payane gerftane etela'at
clrscr();
m=menu();
switch(m)
{
case '1':
for(b=0;b<5;b++)
{
sud=((t[b].m1*s.pul*s.ruz)/180);
printf("sude 6 mahe banke %s barabar ast ba %d\n",t[b].name,sud);
if(max<t[b].m1)
c=b;
}
printf("banke %s ba sude %d bishtarin sude 6 mahe ra midahad.",t[c].name,sud);
break;
case '2':
for(b=0;b<5;b++)
{
sud=((t[b].y1*s.pul*s.ruz)/365);
printf("sude 1 sale banke %s barabar ast ba %d\n",t[b].name,sud);
if(max<t[b].y1)
c=b;
}
printf("banke %s ba sude %d bishtarin sude 1 sale ra mdiahad",t[c].name,sud);
break;
case '3':
for(b=0;b<5;b++)
{
sud=((t[b].y3*s.pul*s.ruz)/1095);
printf("sude 3 sale banke %s barabar ast ba %d\n",t[b].name,sud);
if(max<t[b].y3)
c=b;
}
printf("banke %s ba sude %d bishtarin sude 3 sale ra mdiahad",t[c].name,sud);
break;
case '4':
for(b=0;b<5;b++)
{
sud=((t[b].y5*s.pul*s.ruz)/1825);
printf("sude 5 sale banke %s barabar ast ba %d\n",t[b].name,sud);
if(max<t[b].y5)
c=b;
}
printf("banke %s ba sude %d bishtarin sude 5 sale ra mdiahad",t[c].name,sud);
break;
}
getch();
}
//end main
char menu(void)
{
char ch;
printf("1.sepordeye 6mahe\n2.spordeye 1 sale\n3.sepordeye 3 sale\n4.sepordeye 5 sale");
printf("lotfan shomareye noe sepordegozarie khod ra vared konid\n");
ch=getche();
return ch;
}
ممنون
tdkhakpur
سه شنبه 22 دی 1388, 19:59 عصر
جاهای که اشکال داشتید علامتگذاری شد.
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <dos.h>
#include <stdio.h>
#include <conio.h>
struct bank
{
char name[20];
int m1,y1,y3,y5;
}t[5];
struct user
{
int pul,ruz;
}s;
char menu();
void main()
{
char m;
int a,b,c,sud=0,max=0;
for(a=0;a<5;a++)
{
printf("lotfan name banke %d ra vared konid:\t",a+1);
scanf("%s",t[a].name);
printf("lotfan dar sad sude 6 mahe banke %s ra vared konid:\t",t[a].name);
scanf("%d",&t[a].m1); // & نگذاشته بودید
printf("lotfan dar sad sude 1 sale banke %s ra vared konid:\t",t[a].name);
scanf("%d",&t[a].y1); // & نگذاشته بودید
printf("lotfan dar sad sude 3 sale banke %s ra vared konid:\t",t[a].name);
scanf("%d",&t[a].y3);// & نگذاشته بودید
printf("lotfan dar sad sude 5 sale banke %s ra vared konid:\t",t[a].name);
scanf("%d",&t[a].y5);// & نگذاشته بودید
}
//payane gereftane etela'ate bank
printf("lotfan meghadr pule sarmaye gozari shode ra vared konid.\n");
scanf("%d",&s.pul);
printf("lotfan tedad ruze sarmayegozari pul ra vared konid.\n");
scanf("%d",&s.ruz);
//payane gerftane etela'at
clrscr();
m=menu();
switch(m)
{
case '1':
for(b=0;b<5;b++)
{
sud=((t[b].m1*s.pul*s.ruz)/180);
printf("sude 6 mahe banke %s barabar ast ba %d\n",t[b].name,sud);
if(max<t[b].m1){
c=b;
max = t[b].m1; // اضافه شد
}
}
printf("banke %s ba sude %d bishtarin sude 6 mahe ra midahad.",t[c].name,sud);
break;
case '2':
for(b=0;b<5;b++)
{
sud=((t[b].y1*s.pul*s.ruz)/365);
printf("sude 1 sale banke %s barabar ast ba %d\n",t[b].name,sud);
if(max<t[b].y1){
c=b;
max = t[b].y1; // اضافه شد
}
}
printf("banke %s ba sude %d bishtarin sude 1 sale ra mdiahad",t[c].name,sud);
break;
case '3':
for(b=0;b<5;b++)
{
sud=((t[b].y3*s.pul*s.ruz)/1095);
printf("sude 3 sale banke %s barabar ast ba %d\n",t[b].name,sud);
if(max<t[b].y3){
c=b;
max = t[b].y3; // اضافه شد
}
}
printf("banke %s ba sude %d bishtarin sude 3 sale ra mdiahad",t[c].name,sud);
break;
case '4':
for(b=0;b<5;b++)
{
sud=((t[b].y5*s.pul*s.ruz)/1825);
printf("sude 5 sale banke %s barabar ast ba %d\n",t[b].name,sud);
if(max<t[b].y5){
c=b;
max = t[b].y5; // اضافه شد
}
}
printf("banke %s ba sude %d bishtarin sude 5 sale ra mdiahad",t[c].name,sud);
break;
}
getch();
}
//end main
char menu(void)
{
char ch;
printf("1.sepordeye 6mahe\n2.spordeye 1 sale\n3.sepordeye 3 sale\n4.sepordeye 5 sale");
printf("lotfan shomareye noe sepordegozarie khod ra vared konid\n");
ch=getche();
return ch;
}
soroush_tayyebi
سه شنبه 22 دی 1388, 20:50 عصر
سلام
ممنون دوست عزیز
خب یه سوال دیگه هم داشتم،الان اولش اطلاعات رو از کاربر میگیره،اگه بخوام این اطلاعات رو تو فایل ذخیره کنه بعد از فایل لود کنه باید چی کارش کنم؟
باز هم ممنون
tdkhakpur
سه شنبه 22 دی 1388, 22:34 عصر
با استفاده از
FILE *fp;
fp = fopen("testdata.dat", "wb+");
فایل را باز نموده و توسط
rewind(fp);
for( int i=0; i<5; i++)
fwrite( &t[i], sizeof(t[i]), 1, fp);
در داخل فایل ریخته و توسط
rewind(fp);
for( int i=0; i<5; i++)
fread( &t[i], sizeof(t[i]), 1, fp);
مجددا داده ها را از فایل بخوانید و در نهایت با استفاده از
fclose(fp);
فایل را ببندید.
soroush_tayyebi
چهارشنبه 23 دی 1388, 01:30 صبح
آقا خیلی ممنون،با این دستور هم میشه تو فایل نوشت:
fprintf(fp,"%s",t[a].name)
بعد یه سوال دیگه
میتونم ازین دستوراتی که شما دادید تو فایل های txt استفاده کنم؟یعنی مثلا جای
fp = fopen("testdata.dat", "wb+");
بزنم :
fp = fopen("testdata.txt", "wb+");
یه سوال دیگه هم داشتم،اون b چی کار میکنه؟w+ رو میدونم یعنی فایل رو بساز تو مسیری که داده شده ولی اون b چیه؟
ممنون و شرمنده که اینقدر سوال کردم:)
tdkhakpur
چهارشنبه 23 دی 1388, 19:14 عصر
میتونم ازین دستوراتی که شما دادید تو فایل های txt استفاده کنم؟
اشکالی ندارد ولی از لحاظ استاندارد اسامی کار درستی نیست دلیلش هم این هست فایلهای متنی دارای یه سری قوانین مانند کنترل خطوط و همچنین صفحه را دارند که شما این کار رو انجام ندادید.
یه سوال دیگه هم داشتم،اون b چی کار میکنه؟w+ رو میدونم یعنی فایل رو بساز تو مسیری که داده شده ولی اون b چیه؟
b به معنی قرار دادن داده ها بصورت باینری بوده و +w هم به معنای این هست که اگر فایل قبلا وجو داشت آنرا از اول ایجاد نماید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.