تالار گفتمان مانشت
برنامه نویسی c - نسخه‌ی قابل چاپ

برنامه نویسی c - ali.329 - 09 تیر ۱۳۹۵ ۱۱:۴۷ ق.ظ

سلام دوستان
من به یک برنامه c که کار های زیر را انجام بده نیاز دارم.اگه کسی بتونه کمکم کنه خیلی خوشحال میشم.
یک تابع که ۴ تا ورودی بگیرد(tagin-op1-op2-cmd) که همش integer هستش.همچنین tagin می تواند ۴ حالت از صفر تا ۳ داشته باشد.
سپس tagin و یک محساباتی که روی op1 و op2 صورت بگیرد(فرض کنید یک تابعی این کار را می کند) و در متغیری بنام exp دخیره کند و exp و tagin در یا فایل ذخیره شود.یعنی حداکثر یک فایل با ۴ رکورد و هر رکورد دو فیلد.
تابع دوم:
یک تابع که tagout را بگیرد ویک lookup در فایل انجام بدهد و با هرکدام از tagin تطابق یافت فیلد exp را برگرداند و اون رکورد را از فایل حذف کند.


بچه ها من خیلی به این برنامه احتیاج دارم.لطفا اگر کسی بتونه این برنامه را انجام بده بهم خبر بده
خیلی ممنون.

RE: برنامه نویسی c - Behnam‌ - ۰۹ تیر ۱۳۹۵ ۰۸:۳۱ ب.ظ

(۰۹ تیر ۱۳۹۵ ۱۱:۴۷ ق.ظ)ali.329 نوشته شده توسط:  سلام دوستان
من به یک برنامه c که کار های زیر را انجام بده نیاز دارم.اگه کسی بتونه کمکم کنه خیلی خوشحال میشم.
یک تابع که ۴ تا ورودی بگیرد(tagin-op1-op2-cmd) که همش integer هستش.همچنین tagin می تواند ۴ حالت از صفر تا ۳ داشته باشد.
سپس tagin و یک محساباتی که روی op1 و op2 صورت بگیرد(فرض کنید یک تابعی این کار را می کند) و در متغیری بنام exp دخیره کند و exp و tagin در یا فایل ذخیره شود.یعنی حداکثر یک فایل با ۴ رکورد و هر رکورد دو فیلد.
تابع دوم:
یک تابع که tagout را بگیرد ویک lookup در فایل انجام بدهد و با هرکدام از tagin تطابق یافت فیلد exp را برگرداند و اون رکورد را از فایل حذف کند.


بچه ها من خیلی به این برنامه احتیاج دارم.لطفا اگر کسی بتونه این برنامه را انجام بده بهم خبر بده
خیلی ممنون.

یعنی چی یک فایل با ۴ رکورد و هر رکورد ۲ فیلد!؟
یک نمونه ورودی (۴ تایی tagin, op1, op2, cmd) و مخصوصاً چیزی که در خروجی نوشته می‌شود رو به عنوان مثال بیارید.

RE: برنامه نویسی c - ali.329 - 09 تیر ۱۳۹۵ ۰۹:۴۰ ب.ظ

(۰۹ تیر ۱۳۹۵ ۰۸:۳۱ ب.ظ)behnam5670 نوشته شده توسط:  
(09 تیر ۱۳۹۵ ۱۱:۴۷ ق.ظ)ali.329 نوشته شده توسط:  سلام دوستان
من به یک برنامه c که کار های زیر را انجام بده نیاز دارم.اگه کسی بتونه کمکم کنه خیلی خوشحال میشم.
یک تابع که ۴ تا ورودی بگیرد(tagin-op1-op2-cmd) که همش integer هستش.همچنین tagin می تواند ۴ حالت از صفر تا ۳ داشته باشد.
سپس tagin و یک محساباتی که روی op1 و op2 صورت بگیرد(فرض کنید یک تابعی این کار را می کند) و در متغیری بنام exp دخیره کند و exp و tagin در یا فایل ذخیره شود.یعنی حداکثر یک فایل با ۴ رکورد و هر رکورد دو فیلد.
تابع دوم:
یک تابع که tagout را بگیرد ویک lookup در فایل انجام بدهد و با هرکدام از tagin تطابق یافت فیلد exp را برگرداند و اون رکورد را از فایل حذف کند.


بچه ها من خیلی به این برنامه احتیاج دارم.لطفا اگر کسی بتونه این برنامه را انجام بده بهم خبر بده
خیلی ممنون.

یعنی چی یک فایل با ۴ رکورد و هر رکورد ۲ فیلد!؟
یک نمونه ورودی (۴ تایی tagin, op1, op2, cmd) و مخصوصاً چیزی که در خروجی نوشته می‌شود رو به عنوان مثال بیارید.

یعنی یک تابع که چهار تا آرگومان داشته باشه.مثلا op1=2 و op2=3 و tag هم مثلا ۲ و cmd هم مثلا جمع.این تابع این داده ها را به تابع دیگر می فرستدو حاصل را بر می گرداند و حاصل(یعنی ۵) و tagin و در یک فایل بنویسد.

RE: برنامه نویسی c - Behnam‌ - ۰۹ تیر ۱۳۹۵ ۱۱:۰۲ ب.ظ

شلخته نوشتم منتهی حداقل میتونی ازش ایده بگیری.
برای اینکه یه رکورد رو حذف کنم، مجبور شدم کل متن رو در یک فایل دیگه بنویسم (به جز اون خطی که رکورد رو داره) و بعد اسم فایل رو دوباره به فایل اصلی تغییر بدم. چیز دیگه‌ای به ذهنم نرسید برای کار با فایل. یا میشد کل خط‌ها (به جز خطی که دارای رکورد هست) رو در آرایه ذخیره کرد، فایل رو پاک کرد و دوباره این آرایه‌ی جدید رو نوشت.

کد:
#include <stdio.h>
#include <stdlib.h>

FILE* fpw;
int method_calc(int, int, int);

void method_write(int tagin, int op1, int op2, int cmd){
    int exp = method_calc(op1, op2, cmd);
    fpw = fopen("out.txt", "a");
    fprintf(fpw, "%d\t%d\n", tagin, exp);
    fclose(fpw);
}

void method_remove(int tagout){
    FILE* inFile = fopen("out.txt", "r");
    FILE* outFile = fopen("temp.txt", "w+");
    char line[32];
    while(fgets(line, sizeof(line), inFile) != NULL){
        int tag = line[0] - '0';
        if(tag != tagout){
            fprintf(outFile, "%s", line);
        }
    }
    fclose(inFile);
    fclose(outFile);
    remove("out.txt");
    rename("temp.txt", "out.txt");
}

int method_calc(int op1, int op2, int cmd){
    int result = 0;
    if(cmd == 0)
        result = op1 + op2;
    else if(cmd == 1)
        result = op1 - op2;
    else if(cmd == 2)
        result = op1 * op2;
    return result;
}

int main() {
    remove("out.txt");
    method_write(2, 7, 9, 2);
    method_write(0, 5, 10, 0);
    method_write(1, 100, 20, 1);
    method_write(3, 100, 200, 0);
    method_remove(0);
    method_remove(2);
    system("pause");
    return 0;
}


RE: برنامه نویسی c - ali.329 - 10 تیر ۱۳۹۵ ۰۹:۵۱ ق.ظ

خیلی لطف کردین.Rolleyes