ورود

View Full Version : ردیفی کردن اعداد



emranrostami
شنبه 09 خرداد 1394, 22:47 عصر
سلام
من یه سری اعدا به صورت زیر دارم میخوام کل آنها به صورت یک ردیف دربیاند .
1 15
20 22 28 29
30 14 18 17
16 15 14 2 19
26 23 حالا میخوام به ترتیب ردیف از اول تا آخر در یک ردیف باشند به صورت زیر
1 15 20 22 28 29 30 14 18 17 16 15 14 20 19 26 23
ممنون

hhamidy
شنبه 09 خرداد 1394, 22:52 عصر
سلام.

نمیدونم درست متوجه شدم یا نه.
من هر سطر رو یه ماتریس در نظر گرفتم و الحاقشون کردم:

مثلا:
a=[1 15];
b=[20 22 28 29 ];


[a b]

...................
ans =


1 15 20 22 28 29

نمیدونم، اینطوری منظورتونه؟

emranrostami
شنبه 09 خرداد 1394, 23:28 عصر
داده های خیلی زیادن و نمیتونم به صورت ماتریس در نظرشون بگیرم...

1 15
20 22 28 29
30 14 18 17
16 15 14 2 19
این فقط یک تکرار ش هست تکرار دوم نیز به همین صورته

2 15
88 77 54 58
24 12 18 19
19 15 19 2 19
میخوام هر تکرار را به صورت یک ردیف در بیاد

rahnema1
یک شنبه 10 خرداد 1394, 05:58 صبح
سلام
این اعداد قراره از کجا بیان؟ اگه مثلا عدد ها از داخل یک فایل به نام myfile.txt بیایند انیجور میشه به صورت ردیفی در آورد

fid = fopen('myfile.txt');
data = fscanf(fid, '%d')';
fclose(fid);

emranrostami
دوشنبه 11 خرداد 1394, 14:15 عصر
بله اعداد قراره در یک فایل txt بیاند اما اجرا نمیشه تعداد تکرار های من زیادن.....آدرس فایل را کجا وارد کنم؟؟؟

emranrostami
دوشنبه 11 خرداد 1394, 17:36 عصر
20100 73
1.34E-02 9.94E-03 -8.76E-04 4.67E-03 -3.72E-04 2.05E-02 -1.12E-03
-1.19E-03 2.36E-03 6.53E-03 -1.34E-03 1.17E-03 3.66E-03 -7.82E-04
2.38E-03 0.127 -2.47E-04 5.56E-03 5.23E-03 1.21E-03 8.22E-03
1.14E-02 -2.07E-03 -3.28E-03 1.12E-04 -2.42E-03 4.58E-03 -1.16E-03
-4.71E-04 1.82E-03 5.50E-03 -1.35E-03 3.44E-05 2.49E-03 -7.75E-04
2.62E-03 0.9657 0.1126 -0.1169 9.15E-03 -1.92E-02 1.22E-03
-6.63E-03 -3.30E-03 0.1974 -2.46E-02 -3.29E-02 6.44E-04 -9.31E-03
6.36E-03 -5.82E-04 9.60E-02 -8.00E-03 -1.71E-02 3.62E-03 -6.97E-03
4.05E-03 3.62E-02 -1.81E-02 -4.10E-03 3.37E-03 -3.27E-03 3.26E-02
-1.01E-02 -8.14E-03 4.33E-03 2.55E-02 -5.29E-03 -2.15E-03 1.88E-02
-6.54E-03 6.93E-03 1.364
20200 73
1.50E-02 1.05E-02 -4.61E-04 5.55E-03 1.28E-04 2.09E-02 -2.00E-03
-6.16E-04 2.73E-03 4.34E-03 9.50E-05 1.93E-03 3.90E-03 3.07E-05
4.95E-03 0.1321 -4.27E-04 6.06E-03 5.99E-03 1.46E-03 8.55E-03
1.20E-02 -2.30E-03 -3.40E-03 1.06E-04 -2.73E-03 4.62E-03 -9.17E-04
-4.42E-04 1.79E-03 6.06E-03 -1.51E-03 1.80E-04 2.38E-03 -6.69E-04
2.73E-03 0.9618 0.1067 -0.121 1.58E-02 -2.41E-02 6.09E-03
-6.63E-03 -1.76E-03 0.1956 -1.74E-02 -3.59E-02 1.15E-03 -8.42E-03
2.68E-03 8.24E-04 0.1109 -1.08E-02 -2.03E-02 7.48E-03 -1.25E-02
5.51E-03 3.82E-02 -1.75E-02 -4.72E-03 2.80E-03 -3.55E-03 3.27E-02
-1.19E-02 -5.02E-03 3.73E-03 2.97E-02 -8.27E-03 -2.10E-03 2.05E-02
-6.21E-03 6.76E-03 1.349
20300 73
1.52E-02 1.33E-02 -3.15E-03 5.68E-03 1.74E-03 3.00E-02 -2.71E-03
-2.11E-03 3.91E-03 4.28E-03 -1.79E-03 5.91E-04 5.18E-03 3.20E-04
3.09E-03 0.1355 -5.17E-04 6.48E-03 4.18E-03 2.51E-03 9.21E-03
1.15E-02
این سه تا از تکرارهام هستن که 20100 73و 20200 73و 20300 73 می باشند

rahnema1
سه شنبه 12 خرداد 1394, 00:38 صبح
لطفا توضیح بیشتر بدهید

emranrostami
سه شنبه 12 خرداد 1394, 02:31 صبح
میخوام اعداد به صورت زیر در بیان
که از عد 20100 تا عدد 20200 هر عددی که وجود داره در یک ردیف (1) بیایند
بعد از عدد 20200 تا 20300 هر عددی دیگری هم هرست در ردیف دیگر(2) بیایند و الی آخر.. البته اینم بگم که در هر ردیف تعداد سطر ها ثابت هستند تکرار سوم به صورت ناقص اومده....
ممنون

rahnema1
سه شنبه 12 خرداد 1394, 14:59 عصر
یعنی همیشه 11 سطر وجود داره که باید اعداد موجود در اونها را خوند و وارد یک سطر کرد
اون عدد 73 هم باید خونده بشه؟
لطفا دقیقا بگید چه تعداد سطر خونده بشه؟
توضیح بدید

emranrostami
سه شنبه 12 خرداد 1394, 23:42 عصر
بله توی کل تکرار ها 11 سطر دارند ...خب اول بقیه اعداد بیان جلوی 73 نوشته بشن..

rahnema1
سه شنبه 12 خرداد 1394, 23:45 عصر
آخرش نفهمیدیم چی شد از بس خلاصه و پیامکی جواب میدین

emranrostami
سه شنبه 12 خرداد 1394, 23:59 عصر
ببخشین چطور فایل پیوست میشه تا کامل بگم.... میخوام هرعددی که بین 20100 73 تا 20200 73 هست بیاد جلوی 20100 73 و هر عددی هم که بین 20200 73 تا 20300 73 هست بیاد جلو 2020073 در سطر قرار بگیرن

rahnema1
چهارشنبه 13 خرداد 1394, 19:30 عصر
بر اساس توضیحات شما اینجور برداشت کردم

fin = fopen('input.txt', 'r');
fout = fopen('outpu.txt', 'w');
while(1)
m1 = fscanf(fin, '%f', [1,2]);
if(numel(m1) == 0)
break;
end
m2 = fscanf(fin, '%f', [10,7]);
m3 = fscanf(fin, '%f', [1,3]);
m4 = [m1(:);m2(:);m3(:)]';
fprintf(fout, '%f ', m4);
fprintf(fout, '\n');
end
fclose(fin);
fclose(fout);

emranrostami
پنج شنبه 14 خرداد 1394, 02:12 صبح
بله درسته ممنون درست شد...اما اگه الان بخوام تعداد سطرها را تغییر بدم مثلا9 تا بشن کدوم قسمت باید تغییر بدم ...
خیلی خیلی ممنون

rahnema1
پنج شنبه 14 خرداد 1394, 18:17 عصر
یعنی چه طور باشه. منظورتون فایل input تعداد سطر هاش 9 تا هست؟
ولی اینجا که 10 تا هست

emranrostami
پنج شنبه 14 خرداد 1394, 21:26 عصر
بله درسته اینجا 10 تا هست اما میگم توی فایل دیگه که سطرها تغییر میکنن ....اگه فایل ذیگه م 8 سطر داشته باشه چی؟؟؟

rahnema1
جمعه 15 خرداد 1394, 21:23 عصر
نمیشه برای تمام فایلها یک نسخه پیچید. با توجه به ساختار فایل باید برنامه هم متناسب با اون نوشته بشه

emranrostami
جمعه 15 خرداد 1394, 22:59 عصر
اوکی ممنون ....ببخشید مزاحمتون شدم ...گفتم شاید فقط یه تغییر کوچک بخواد واسه همین ...آخه من تعداد فایلهام خیلی زیادن...
خیلی خیلی متشکرم

rahnema1
شنبه 16 خرداد 1394, 07:17 صبح
باید ببینیم فایلها چه طور هستند شاید بشه یک قاعده مشترک بین تمام فایلها استخراج کرد

emranrostami
یک شنبه 17 خرداد 1394, 02:59 صبح
سلام در فایلهای دیگه فقط تعداد سطر و ستونها عوض میشه به صورت زیر
20100 61
4.391 0.5993 -0.2988 0.5811 -0.355 1.977 0.1172
-0.3137 0.5582 0.8932 0.1145 -0.4091 0.528 1.25E-02
0.7515 1.644 0.1362 5.29E-02 0.265 -0.2618 0.5411
-4.64E-03 -4.65E-02 0.2176 0.2866 2.00E-02 -0.2096 0.187
3.64E-02 0.3895 3.403 0.759 -2.85E-04 0.1758 -0.5003
0.8967 9.85E-03 -0.2231 7.61E-02 0.3779 8.42E-02 -0.2119
0.2581 -2.51E-02 0.3481 16.48 3.777 -1.702 0.5884
-1.432 3.547 -0.5794 -1.03 0.339 1.649 0.3052
-0.7434 0.8615 -0.2566 0.9994 0.1331
20200 61
4.353 0.5746 -0.3335 0.5752 -0.3354 1.953 8.20E-02
-0.2859 0.6034 0.9074 0.1339 -0.4113 0.5082 -1.82E-03
0.7598 1.781 0.1279 2.33E-02 0.2894 -0.248 0.5347
1.11E-02 -5.18E-02 0.1979 0.2766 1.26E-02 -0.1883 0.185
3.50E-02 0.3541 3.447 0.6757 -3.77E-02 0.2056 -0.5093
0.845 1.63E-02 -0.2158 7.37E-02 0.3706 7.66E-02 -0.1972
0.2592 -2.36E-02 0.3397 16.38 3.828 -1.722 0.5739
-1.367 3.644 -0.5469 -1.051 0.3354 1.649 0.2595
-0.7586 0.8581 -0.2329 1.008 0.1358
20300 61
4.498 0.5815 -0.2702 0.5938 -0.4097 1.914 0.1033
-0.3066 0.5449 0.8886 0.1193 -0.4188 0.5153 -2.34E-03
0.7561 1.666 6.90E-02 5.36E-02 0.2557 -0.3052 0.5418
6.96E-03 -6.64E-02 0.2078 0.2795 1.63E-02 -0.2029 0.1843
3.23E-02 0.3883 3.345 0.6745 -1.04E-02 0.2049 -0.4988
0.8432 3.00E-02 -0.2154 6.26E-02 0.3741 6.76E-02 -0.2087
0.2583 -1.69E-02 0.3447 16.04 3.799 -1.606 0.5537
-1.376 3.483 -0.4439 -0.9286 0.2828 1.683 0.2691
-0.7542 0.803 -0.2112 0.9966 0.1375

rahnema1
یک شنبه 17 خرداد 1394, 10:00 صبح
fin = fopen('input.txt', 'r');
fout = fopen('output.txt', 'w');
m1 = fscanf(fin, '%d', [1, 2]);
while(numel(m1) ~= 0)
fprintf(fout, '%d ', m1);
m2 = fscanf(fin, '%f', [1, m1(2)]);
fprintf(fout, '%f ', m2);
fprintf(fout, '\r\n');
m1 = fscanf(fin, '%d', [1, 2]);
end
fclose(fin);
fclose(fout);

emranrostami
یک شنبه 17 خرداد 1394, 11:44 صبح
خیلی خیلی ممنون ....درست شد واقعا لطف کردین