Bogdan
надо все таки кормена почитать
Bogdan
ибо мне даже ментор на курсах его рекомендовал
Igor
main я сам придумал. В задании только array_fib
Я же тебе другое написал ты или меня или других слушай
Bogdan
и Седжвика
danil
Igor
#include <stdio.h> void array_fib(int* array, int* limit); int main() { int nums[4]; int* limit = nums+4; array_fib(nums, limit); for (int i = 0; i < 4; ++i) printf("%d ", nums[i]); return 0; } void array_fib(int* array, int* limit) { int* tmp = array; int i=0; while (tmp != limit) { if (i >= 2) tmp[0] = tmp[-1] + tmp[-2]; else tmp[0] = 1; tmp++; i++; } }
Vladislav
Нет, если убрать все ифы и поставить тупо в том же цикле *tmp = 1, то все ок
Andrii
Нет, если убрать все ифы и поставить тупо в том же цикле *tmp = 1, то все ок
А что говорит отладка? Ошибка то простая, но почему не смотришь в gdb?
Vladislav
Артур
почему, Игорь?
Vladislav
Правда уже не сейчас. Щас я уже спать лежу
danil
Ну так условие, когда I >= 2
а, да, тут согласен, в глаза долблюсь Однако когда else происходит, то как я уже говорил раньше (https://t.me/devworden/181950), ты изменяешь только первый элемент, а элемент tmp[1] будет с рандомным числом
Andrii
Правда уже не сейчас. Щас я уже спать лежу
Отладка тебе покажет, что единицы запишутся правильно, а как только сработает условие i>=2, то к мусору прибавится мусор и запишется в хрен знает куда
Vladislav
Я прост не понел что с этим делать
Vladislav
Вот так
И оно пашет?
Гамлет
Отладка классная вещь
Гамлет
Юзайте дебагеры, ребят
Vladislav
Там вместо else tmp[0] = 1; Надо else tmp[i] = 1;
Vladislav
Отладка классная вещь
Классная, только нада к ней привыкнуть и правильно пользоваться
Andrii
Ну, это я видел.
Значит ошибка в строке tmp[i] = tmp[i-1] + tmp[i-2]. Значит надо узнать, почему мусор
Гамлет
Если не начать использовать никогда не привыкнешь
Andrii
Посмотртеть адрес элемента tmp[-1]
Andrii
А посмотреть адрес элемента array[0] и задаться вопросом, а почему они не совпадают?
Andrii
И родить void array_fib(int * array, int * limit) { if (array >= limit) return; *array = 1; if (++array >= limit) return; *array = 1; while (++array < limit) { array[0] = array[-1] + array[-2]; } }
Vladislav
Так, мне сказали что tmp[-1] это неправильно. А тут говорят что так. Кому верить
Andrii
Потому что tmp[-1] это западная Сибирь?
Просто tmp указывает на второй элемент. Ты от второго элемента отсчитываешь ещё i, а значение i у тебя два.
Vladislav
Кто сказал?
Даня и Игорь)
Andrii
Даня и Игорь)
В ядре Linux и не такое найдёшь
danil
Так, мне сказали что tmp[-1] это неправильно. А тут говорят что так. Кому верить
да, я ошибся. Я забыл что адрес tmp изменяется и мы можем получить доступ к -1 элементу. Извиняюсь за холивар и неправильную подсказку
Vladislav
В ядре Linux и не такое найдёшь
Ладно... Но я не понел первые два условия в вашем коде
Andrii
Ладно... Но я не понел первые два условия в вашем коде
Я просто из цикла вынес инициализацию первых двух элементов.
Andrii
Первое условие это проверка, что N == 0, второе что N == 1. А дальше уже цикл, кто мы не беспокоимся
Vladislav
Ой, ладно. Завтра исправлю код. Всем спасибо. А я спать
Vladislav
Артур
можешь ссылку отправить или название задачи?
Vladislav
Со степика
Завтра скину. Щас я уже того
Артур
хорошо
Денис
Я начал, привыкаю
Родители в курсе, чему тут тебя учат?
Артур
получилось(
Артур
increment_string(strng): if not strng: return '1' l = strng[-1] if l.isdigit(): i = int(l) + 1 return increment_string(strng[:-1]) + '0' if i == 10 else strng[:-1]+str(i) else: return strng + '1'
Игорь, вот такой код к этой задачи https://www.codewars.com/kata/54a91a4883a7de5d7800009c/train/python def increment_string(strng): if strng == 'foo': return "foo" + "1" if strng == '': return 1 x = "0123456789" my_values = [] for i in list(reversed(strng)): if i in x: my_values.append(int(i)) else: break g = len(my_values) my_keys = [10 ** i for i in range(len(my_values))] my_dict = dict(zip(my_keys, my_values)) for value in my_dict: if type(my_dict[value]) is int: my_dict[value] = my_dict[value] + 1 break else: continue a = 0 for key, value in my_dict.items(): # print(key,value) if (type(key) is int) and (type(value) is int): a += (key * value) return strng[0:(len(strng) - len(my_values))] + f"{a:0{g}d}" if __name__ == '__main__': # print(increment_string("foo"))#, "foo1") # print(increment_string("foobar001"))#, "foobar002") # print(increment_string("foobar1"))#, "foobar2") # print(increment_string("foobar00"))#, "foobar01") # print(increment_string("foobar99"))#, "foobar100") # print(increment_string("foobar099")) # , "foobar100") print(increment_string("z50=b!V16161EYy1LA.R:30919382F83}e2|1284459602{7Ch9988927=o71iPB41z>u?%/#6685364#xtw70717000005449559")) # , "z 50=b!V16161EYy1LA.R:30919382F83}e2|1284459602{7Ch9988927=o71iPB41z>u?%/#6685364#xtw70717000005449560") # print(increment_s1tring(""))#, "1")
Anton
Народ а в kivy норм писать приложение на питоне?
Anton
Или в чем лучше/проще?
Jsx707
Народ а в kivy норм писать приложение на питоне?
Норм , но с производительностью могут быть проблемы и компилить очень геморно и он в конечном итоге под вопросом будет юзать джаву
Jsx707
Лучше изучи Java для андроид-разработки
Anton
Спасибо за ответы
Oleksii
А лучше Свифт и делай приложения под айфон
Гамлет
Народ а в kivy норм писать приложение на питоне?
это скорее прикол, чем серьезный инструмент для продукта
Jsx707
как ваш проект?
Живёт спокойно , код нужен?
Артур
да нет, просто интересно что вашим петом
Jsx707
Ну файлы сохранять +- научился
Jsx707
Это само ядро
Mikhail
Ну файлы сохранять +- научился
Можно начинать искать pre-seed funding.
Vova
Лучше изучи Java для андроид-разработки
Котлин для андроид разработки по моему более актуален сейчас Хотя джаву тоже надо знать, так как у них один движок
Vova
Это как ситуация с Swift & Objective-C
Jsx707
Без знаний Java многие понятия из документации Котлин могут быть непонятны
Vova
Котлин компилится в Java
Ну всё таки не полностью совместимые языки, я знаю что есть очень редкие но нюансы при их одновременном использовании Они оба работают на JVM, но у котлина много уникальных фич Я не думаю что оно в джаву компилится. Скорее всего напрямую в байт-код какой-то
Jsx707
МБ и так , я не очень люблю эти языки
Vova
Кстати по синтаксису мне котлин очень нравится :) божественно
Vova
Но это всё что мне в нём нравится
Jsx707
Память жрут как свиньи , при этом сам ты память хуй будешь контролить , слишком сильная привязка к ООП
Vova
Ну это проблема JVM
Jsx707
Хотя надо бы получше узнать эти ЯП