PDA

View Full Version : خواندن رشته و عدد از فایل در c یا c++



ka1_fire
یک شنبه 27 فروردین 1391, 00:15 صبح
با سلام خدمت اساتید. فایلی به این شکل رو

4
Don 0.375
ISABELLE 0.375
RALPH 0.125
WALLY 0.125

1- میخواستم بخونم و عدد 4 رو در یک متغییر قرار بدم. 2- رشته های Don و ISABELLE و RALPH و WALLY رو در یک آرایه رشته ای و اعداد 0.375 و 0.375 و 0.125 و 0.125 رو در یک آرایه float قرار بدم. مرحله اول که نوشتم و اجرا میشه اگه ممکنه راهنمایی کنین قشمت دوم رو به چه شکی باید بنویسم؟؟؟:متفکر:


#include <iostream>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <fstream>
char NAME[30];
float P[30];
int main()
{
char c;
int key;
char ch;
FILE *fp;
fp = fopen("c:/example.txt", "r");
if (!fp)
{

getch();
exit(1);

}
fscanf(fp, "%d", &key);


fclose (fp);

getch();
return 0;
}

shahmohammadi
یک شنبه 27 فروردین 1391, 00:29 صبح
سلام.
اينطور كه معلومه 4 مشخص مي كنه كه بعدا چند تا سطر به فرم عدد در مقابل رشته داريم. يه استراكت تعريف كنيد به اسم line.
اين line شامل يك رشته و يك عدد اعشاري است.
با ديدن 4 يك آرايه از اون نوع رو allocate يا new كنيد. بعد در يك حلقه فور همه خطوط رو با دستور زير بگيريد:
for(int i=0;i<n;i++) //here n is 4
{
fscanf(fp,"%s %f",array[i].str,&array[i].num);
}

ka1_fire
یک شنبه 27 فروردین 1391, 01:09 صبح
به این شکل نوشتم ولی به جای عدد ها 0.000000 نشون میده میشه راهنمایی کنین لطفن؟ با تشکر

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <fstream>

struct line
{
char NAME[30];
float P[30];
};
int main()
{
char c;
int key;
char ch;
struct line arr[4];


FILE *fp;
fp = fopen("c:/example.txt", "r");
if (!fp)
{

getch();
exit(1);

}
fscanf(fp, "%d", &key);


for(int i=0;i<4;i++)
{

fscanf(fp,"%s %f",arr[i].NAME,&arr[i].P);
printf("\n %s %f",arr[i].NAME,&arr[i].P);
}

fclose (fp);
getch();
return 0;
}

shahmohammadi
یک شنبه 27 فروردین 1391, 01:37 صبح
1.
struct line
{
char NAME[30];
float P;
};
2.
printf("\n %s %f",arr[i].NAME,arr[i].P);

3.
for(int i=0;i<key;i++)

imran.askani
یک شنبه 27 فروردین 1391, 12:46 عصر
یه سوال داشتم ممنون میشم اگه راهنماییم کنید :قلب:
1... برنامهای که اطلاعات 100 دانشجو رو گرفته و امکان جستجو هم در فراهم باشد
2... برنامه بالا که منو انتخاب داشته باشه ( insert..edit..delete..search )
;i با استراکتها

ka1_fire
یک شنبه 27 فروردین 1391, 14:18 عصر
یه سوال داشتم ممنون میشم اگه راهنماییم کنید :قلب:
1... برنامهای که اطلاعات 100 دانشجو رو گرفته و امکان جستجو هم در فراهم باشد
2... برنامه بالا که منو انتخاب داشته باشه ( insert..edit..delete..search )
;i با استراکتها

میتونین از کتاب برنامه نویسی به زبان c جعفر نژاد قمی کمک بگیرین همچین مثال هایی زیاد داره این کتاب ...

ka1_fire
یک شنبه 27 فروردین 1391, 14:27 عصر
1.
struct line
{
char NAME[30];
float P;
};
2.
printf("\n %s %f",arr[i].NAME,arr[i].P);

3.
for(int i=0;i<key;i++)
اجازه نمیده در تعریف آرایه از متغییر استفاده کنم :افسرده:

struct line arr[key];

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

shahmohammadi
یک شنبه 27 فروردین 1391, 21:03 عصر
راه حلش استفاده از تخصيص حافظه هست.
در سي با تابع malloc و در C++ علاوه بر malloc از عملگر new هم مي شه استفاده كرد.
در كتاب جعفر نژاد قمي يك فصل در همين مورد هست. و در اين سايت هم در اين مورد زياد بحث شده.
لينك 1 (http://barnamenevis.org/showthread.php?328157-%D9%86%D8%AD%D9%88%D9%87-%D8%A8%D8%AF%D8%B3%D8%AA-%D8%A7%D9%88%D8%B1%D8%AF%D9%86-%D9%85%D8%AD%D8%AA%D9%88%D8%A7%DB%8C-%D8%AE%D8%A7%D9%86%D9%87-%D8%A7%D8%B1%D8%A7%DB%8C%D9%87-%D9%86%D9%87-%D8%A7%D8%AF%D8%B1%D8%B3-%D8%A7%D9%86%D8%9F&p=1443768&viewfull=1#post1443768)
ایراد این کد چیست...؟ (http://barnamenevis.org/showthread.php?317748-%D8%A7%DB%8C%D8%B1%D8%A7%D8%AF-%D8%A7%DB%8C%D9%86-%DA%A9%D8%AF-%DA%86%DB%8C%D8%B3%D8%AA...%D8%9F)

ka1_fire
دوشنبه 28 فروردین 1391, 20:17 عصر
راه حلش استفاده از تخصيص حافظه هست.
در سي با تابع malloc و در C++‎ علاوه بر malloc از عملگر new هم مي شه استفاده كرد.
در كتاب جعفر نژاد قمي يك فصل در همين مورد هست. و در اين سايت هم در اين مورد زياد بحث شده.
لينك 1 (http://barnamenevis.org/showthread.php?328157-%D9%86%D8%AD%D9%88%D9%87-%D8%A8%D8%AF%D8%B3%D8%AA-%D8%A7%D9%88%D8%B1%D8%AF%D9%86-%D9%85%D8%AD%D8%AA%D9%88%D8%A7%DB%8C-%D8%AE%D8%A7%D9%86%D9%87-%D8%A7%D8%B1%D8%A7%DB%8C%D9%87-%D9%86%D9%87-%D8%A7%D8%AF%D8%B1%D8%B3-%D8%A7%D9%86%D8%9F&p=1443768&viewfull=1#post1443768)
ایراد این کد چیست...؟ (http://barnamenevis.org/showthread.php?317748-%D8%A7%DB%8C%D8%B1%D8%A7%D8%AF-%D8%A7%DB%8C%D9%86-%DA%A9%D8%AF-%DA%86%DB%8C%D8%B3%D8%AA...%D8%9F)

به ای ترتیب نوشتم ولی break میشه و از برنامه میاد بیرون.
struct line *arr;
arr = new struct line [key];


delete [] arr;

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

ka1_fire
دوشنبه 28 فروردین 1391, 20:29 عصر
و یک سوال دیگه چه جوری میتونم کدی بنویسم که مثلآ 4 رو که گرفت 4 تا عدد تصادفی اعشاری ایجاد کنه که جمعشون 1 بشه؟!
چون این برنامه باید روی به طور مثال ده هزار key باید اجرا بشه و دستی نوشتنش معقول به نظر نمی آد. البته بعدش قصد موازی سازی این برنامرو دارم...
در زمینه موازی سازی ام اگه مشکلی پیش آمد میتونم از شما کمک بگیرم؟

shahmohammadi
دوشنبه 28 فروردین 1391, 22:38 عصر
به ای ترتیب نوشتم ولی break میشه و از برنامه میاد بیرون.
struct line *arr;
arr = new struct line [key];


delete [] arr;
من به صورت زير امتحان كردم، درست بود:
#include <cstdlib>
#include <iostream>

using namespace std;

struct line
{
char NAME[30];
float P;
};

int main(int argc, char *argv[])
{
int b=10;
struct line *arr;
arr= new struct line [b];
cin>>arr[9].NAME;

cout<<arr[9].NAME;;
delete [] arr;
system("PAUSE");
return EXIT_SUCCESS;
}

و یک سوال دیگه چه جوری میتونم کدی بنویسم که مثلآ 4 رو که گرفت 4 تا عدد تصادفی اعشاری ایجاد کنه که جمعشون 1 بشه؟!
مي تونيد چهار تا عدد تصادفي بين 1 تا مثلا 20 انتخاب كنيد، بعد مجموعشون رو در sum بريزيد و بعدش همه رو به sum تقسيم كنيد. هر كدوم از جواب هاي تقسيم ها يه عدد تصادفي خواهند بود كه مجموعشون هم يك هست.

در زمینه موازی سازی ام اگه مشکلی پیش آمد میتونم از شما کمک بگیرم؟
شرمنده. در اين مورد زياد تخصص ندارم و قول نمي دم.
موفق باشيد.

amanver
سه شنبه 05 شهریور 1392, 23:46 عصر
سلام. میخواستم تو vC++‎ محتویات فایل text ام رو که به شکل زیر است را بخواند واعداد را وقتی به سمی کالون رسید در متغییر ذخیره کند. بدین ترتیب که عدد 12 در یک متغیر و عدد بعدی در یک متغیر دیگر.ممنون

12,5,6

HamEd276
پنج شنبه 06 خرداد 1395, 13:58 عصر
دوستان درود
میخواستم یه برنامه بنویسم که 4 رشته رو بخونه،و رشته دوم و سوم رو به انتهای رشته اول اضافه کنه !!

ممنون میشم کمک کنید ، خیلی ضروریِ :ناراحت::ناراحت::ناراحت::نار حت:

amirtork
پنج شنبه 06 خرداد 1395, 18:41 عصر
دوستان درود
میخواستم یه برنامه بنویسم که 4 رشته رو بخونه،و رشته دوم و سوم رو به انتهای رشته اول اضافه کنه !!

ممنون میشم کمک کنید ، خیلی ضروریِ :ناراحت::ناراحت::ناراحت::نار حت:


پیشنهاد میکنم برای سریع تر رسیدن به جواب، ضمن ایجاد تاپیک جدید، مشکل خودتون رو دقیق تر بیان کنید.