محمدرضا هلالی
3 سال پیش توسط محمدرضا هلالی مطرح شد
7 پاسخ

پروژه Sonar Sweep

سلام پروژه مسابقات code of advent هست این موردی که میزارم هر کاری کردمانصافا تمرین سختی داره مسابقات اش :)
متوجه نمیشم چجوری کاری کنم که اولا هر بار دو عدد قبلی مقایسه کنه و افزایش و کاهش بررسی کنه
الگوریتم پروژه

200 (increased)
208 (increased)
210 (increased)
200 (decreased)
207 (increased)
240 (increased)
269 (increased)
260 (decreased)
263 (increased)

به همراه تعداد increased و decreased هم میخواد که توی مثال بالا 7 تا شد حالا میشه بگید چجوری با لیست کاری کنم که رنج خاصی مثلا 10 عدد از ورودی بگیره و بعد خروجی بالا بده


ثبت پرسش جدید
میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 3 سال پیش آپدیت شد
0

خب بخش شرطی که گذاشتید ایراد داره. ی همچین چیزی رو باید بنویسید.

if(currentNum < beforeNum) count_decreased += 1;
else if(currentNum > beforeNum) count_increased += 1;
else count_equal += 1;

میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 3 سال پیش مطرح شد
0

سوالتون رو به طور کامل بنویسید. واضح نیست. بایستی زحمت ترجمه سوال رو به خودتون بدین.


محمدرضا هلالی
تخصص : جونیور تازه کار
@mohammadrezah 3 سال پیش مطرح شد
0

نگاه کنید پروژه به این شکل که 50 ورودی به برنامه داده میشه بعد دو عدد اول رو مقایسه میکنه تا به عدد آخر برسه وقتی به عدد آخر رسید تعداد افزایش اعداد و تعداد کاهش رو باید نشون بده البته بیشتر این متوجه نشدم
کد خودم میزارم یک نگاهی بهش بکنید با فانکشن نوشتم اما توی بدست آوردن اعدادی که کمتر میشن مشکل داره

def sonar_sweep_pt1(inp):
    count_increased = 0
    count_decreased = 0
    with open(inp, 'r') as f:
        before_num = None
        for line in f.readlines():
            if not before_num:
                before_num = line
                #print(before_num)
            if before_num > line or before_num < line:
                count_decreased += 1
            before_num = line

    return 'decreased count value in this file :', count_decreased
    #return count_increased

inp = 'V:/temp_file/num_inp.txt'
print(sonar_sweep_pt1(inp))

میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 3 سال پیش آپدیت شد
0

خب بخش شرطی که گذاشتید ایراد داره. ی همچین چیزی رو باید بنویسید.

if(currentNum < beforeNum) count_decreased += 1;
else if(currentNum > beforeNum) count_increased += 1;
else count_equal += 1;

محمدرضا هلالی
تخصص : جونیور تازه کار
@mohammadrezah 3 سال پیش مطرح شد
1

سلام میلاد عزیز کدم درست شد فقط موردی که داره باز بعضی اوقات اون شرطی که برای تعداد افزایش عدد هست درست کار نمیکنه مثلا فایل زیر نگاه کن

def sonar_sweep_pt1(inp):
    count_increased = 0
    count_decreased = 0
    count_equall = 0
    with open(inp, 'r') as f:
        first_num = None
        for after_num in f.readlines():
            if not first_num:
                first_num = after_num
                #print(first_num)
            if (first_num < after_num):
                count_increased += 1
            if (first_num > after_num):
                count_decreased+= 1
            else:
                count_equall+= 1

    print('increased count number is :',count_increased)
    print('decreased count number is : ',count_decreased)
    #return count_increased

inp = 'V:/temp_file/num_inp.txt'
print(sonar_sweep_pt1(inp))
# خروجی به اشتباه اینجوری میزنه 
increased count number is : 9
decreased count number is :  0

ولی خروجی به اشتباه اینجوری میزنه به خاطر null دادن متغیر نیست ؟

فایل ورودی 
199 
200 
208 
210 
200 
207 
240 
269 
260 
263 
# 7 incrased 
# 2 descreased

میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 3 سال پیش مطرح شد
0

بله از خروجی مشخص هستش که خطا دارید.
من با زبان برنامه نویسی تون آشنایی ندارم، سعی کنید در طول پیمایش حلقه for, مقادیر متغیرها را رصد کنید تا متوجه بشید کجای کارتون ایراد داره.


mmj-sys
تخصص : داش متخصص چیه من پروفسورم .
@mmj.sys 3 سال پیش مطرح شد
0

با شی گرایی کم

import sys
class app():
      def __init__(self , file_addr):
          self.file_addr = file_addr
          self.file_content = self.read_file()
          self.number_list = self.convert_string_to_list()
          self.how_much = self.compute()
      #read file data
      def read_file(self):
          with open(self.file_addr , "r") as file:
               content = file.read()
          return content
      # convert string of file to list
      def convert_string_to_list(self):
          list_of_numbers = self.file_content.split("\n")
          temp_list = []
          for number in list_of_numbers:
              temp_list.append(int(number))
          return temp_list
      # get all numbers and compute all increased
      def compute(self):
          how_much=0
          last_number = self.number_list[0]
          for i in self.number_list:
              if i > last_number:
                 how_much += 1
              last_number=i
          return how_much

محمدرضا هلالی
تخصص : جونیور تازه کار
@mohammadrezah 3 سال پیش مطرح شد
0

من شی گرای کار نکردم اصلا نتونستم کدتون متوجه بشم داخل ide اجرا میکنم ولی فکر می کنم اون کدی که من گذاشتم با یک تغییر درست میشه چون فقط مشکل اینه باگ منطقی داره و باید شرط ها درست کنم ولی نمیدونم چجوری


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام