1
1

আমার কাছে একটি TXT File আছে যাতে কিছু integer type data আছে ।। এখন আমি চাই data File থেকে read করব এবং sort করব ।। কিভাবে করতে হবে এটা ??

asked 07 Sep '15, 15:01

Anisur%20Rahman%20Tonu's gravatar image

Anisur Rahman Tonu
20721


অনেকভাবেই করা যায় এটি। একটি পদ্ধতি হলো পুরো stream টাই file থেকে নেওয়া, যেটা আমরা programming contest এর অনেক problem এর ক্ষেত্রে instruction মত করে থাকি। আবার কিছু data file থেকে, আর কিছু data অন্য যায়গা থেকে, অথবা কিছু data এক file থেকে আর কিছু data আরেক file থেকে নিতে গেলেও এটি কাজ করবে না।

#include <stdio.h>
int compare (const int * a, const int * b)
{
    return ( *(int*)a - *(int*)b );
}

int main()
{
    freopen("input.txt","r",stdin);
    int t, n, m=0, cas=1,i;
    int v[10005];
    while(~scanf("%d", &v[m++]));

    qsort(v,--m,sizeof v[0], compare);

    for (i = 0; i<m; i++)
        printf("%d\n", v[i]);

    return 0;
}

আপনি যদি একই file এ input নিয়ে output দিতে চান তাহলে নিচের মত file open করে নিতে পারেন। উল্লেখ্য, উভয়ক্ষেত্রেই file এর নাম input.txt.

#include <stdio.h>
int compare (const int * a, const int * b)
{
    return ( *(int*)a - *(int*)b );
}

int main()
{
    FILE *file = fopen("input.txt","r");
    int t, n, m=0, cas=1,i;
    int v[10005];
    while(~fscanf(file,"%d", &v[m++]));
    fclose(file);

    qsort(v,--m,sizeof v[0], compare);

    file = fopen("input.txt","w");

    for (i = 0; i<m; i++)
        fprintf(file,"%d\n", v[i]);

    fclose(file);
    return 0;
}
permanent link

answered 07 Sep '15, 16:10

manetsus's gravatar image

manetsus
2.2k211

edited 08 Sep '15, 20:29

ভাইয়া program টা c language দিয়ে বুঝিয়ে দিলে উপকৃত হতাম ধন্যবাদ

(08 Sep '15, 17:00) Anisur Rahman Tonu
1

২টাই c তে update করে দিয়েছি, খুশি? আপনাকেও অসংখ্য ধন্যবাদ। @anisur-rahman-tonu

(08 Sep '15, 20:28) manetsus
1

compare function এর কাজটা ঠিক বুঝতে পারলাম না ভাই... আর scanf() এর আগে ~ এটা কেন ব্যবহার করা হয়েছে ??

(11 Sep '15, 09:54) Anisur Rahman Tonu

compare function টা বুঝতে হলে pointer এর কিছু কাপঝাপ বুঝতে হবে। এটা ascending order এ sort করার জন্য ব্যবহৃত হয়। আর scanf() এর আগে টিল্ট (~) চিহ্নটা বর্তমান number টার সবগুলো bit flip করতে ব্যবহৃত হয়। scanf যদি কোন input নিতে পারে, তাহলে কয়টা জিনিস input নিলো, তা return করে, আর যদি না নিতে পারে (অর্থাৎ input file এর শেষে চলে গেছে) তাহলে -1 return করে, যার binary representation সবগুলো bit 1. আর এই সবগুলো bit কে টিল্টেড সাইনটা দিয়ে flip করে 0 করা হয়। বুঝলেন কিছু? না বুঝলে বইলেন। ধন্যবাদ। @anisur-rahman-tonu

(11 Sep '15, 17:55) manetsus

pointer এর link টা দিলে উপক্রিত হবো আর flip করার কারনটা কি ??

(12 Sep '15, 16:33) Anisur Rahman Tonu

কারণ বুঝলেন না? একটা general জিনিস দার করানো গেলো যা দিয়ে input শেষ হয়ে গেলে while loop এর কাজ বন্ধ করা যায়। pointer এর জন্য specific কোন link দিলে অন্যায় হবে হয়তো, কারণ কোনটা ভালো কোনটা খারাপ আমি অতটা বুঝি না, আপনি নিজে search দিলে বোধ হয় ভালো হবে। ধন্যবাদ।

(12 Sep '15, 16:58) manetsus
1

ok ভাই ধন্যবাদ

(16 Sep '15, 16:16) Anisur Rahman Tonu
showing 5 of 7 show 2 more comments
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×402
×214
×9

question asked: 07 Sep '15, 15:01

question was seen: 1,226 times

last updated: 16 Sep '15, 16:16