Проверьте программу на наличие плохого кода - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день. Проверьте программу,(может быть программы, которые я буду в дальнейшем выкладывать) на наличие плохого тона в программировании(говнокода). Я понимаю, что одну задачу можно решить разными способами. Я сейчас учу программирование для себя. Сам уже несколько лет работаю системным администратором. По работе поднимал несколько сайтов на разных движках, иногда нужны были кое-какие корректировки в коде, я их делал. Так-же пишу скрипты на баше. Хотелось бы в будущем работать именно программистом, сейчас начал усиленно учить Си, как основу для будущего. Делаю все чисто для себя самого, проверить меня некому, а в книгах, ответы даны не ко всем задачам. Буду благодарен за помощь, или корректировки. Итак первая задача. из книги Дейтла № 3.17. Задача Из за высокой цены на бензин, водители интерессуются пробегом своих автомобилей. Некий водитель отследил несколько заправон своего автомобиля, записывая пройденное расстояние в милях и объем каждой заправки в галлонах. Разработайте программу для ввода пройденного расстояния в милях и объема каждой заправки в галлонах. Программа должна вычислять и отображать на экране кол-во пройденных миль на галлон, для каждой заправки автомобиля. После обработкти всей входной информации должно вычисляться и выводиться общая информация, об милях, литрах и расходе топлива, милей на галон по всем заправкам. Единственное, я использовал литры и километры. Но тут не суть. Программа полностью работающая, проверьте пожалуйста, если можно сделать ее как то по другому. Спасибо.
Листинг программы
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int zapravka, put, vsegokm, vsegotop, i;
  5. float rashod, rashodtotal, rashodarif;
  6. vsegotop = 0, vsegokm = 0, rashodtotal = 0, i = 0;
  7. while (zapravka != -1){
  8. printf("Vvedite koli4estvo zapravlennonho d litrah(-1 exit)\n");
  9. scanf ("%d", &zapravka);
  10. if (zapravka != -1){
  11. printf("Vvedite rasstoyanie v kilimetrah\n");
  12. scanf ("%d", &put);
  13. rashod = (float) put / zapravka;
  14. vsegokm = vsegokm + put;
  15. vsegotop = vsegotop + zapravka;
  16. printf("rashod topliva km-rov na 1 litr = %f\n", rashod);
  17. rashodtotal = rashod + rashodtotal;
  18. i++;
  19. }
  20. }
  21. printf("Vsego proydeno %d\n",vsegokm);
  22. printf("Vsego topliva potracheno %d\n",vsegotop);
  23. rashodarif = rashodtotal/i;
  24. printf("srednii rashod topliva %f\n",rashodarif);
  25. return 0;
  26. }

Решение задачи: «Проверьте программу на наличие плохого кода»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. int main ()
  4.  
  5. {
  6. int x=0, y=0, z=0, m=0, n=0;
  7. while ((m<=0) || (n<=0) || (x<=0) || (y<=0) || (z<=0))
  8.     {
  9.     printf("enter door size M*N, \n");
  10.     scanf ("%d%d", &m, &n);
  11.     printf ("enter box size X*Y*Z\n");
  12.     scanf ("%d%d%d", &x, &y, &z);
  13.     if (m<=0 || n<=0 || x<=0 || y<=0 || z<=0)
  14.         {
  15.         printf("Reentr door or box size\n");
  16.         }
  17.     }
  18. if ((y>m && x>n) || (y>m && z>n) || (z>n && x>m) || (x>m && y>n) || (z>n &&y>m) || (z>m && x>n))
  19.     {
  20.     printf ("BOX does not pass\n");
  21.     }
  22. else
  23.     {
  24.     printf ("BOX passes\n");
  25.     }
  26. return 0;
  27. }

Объяснение кода листинга программы

  1. В начале программы объявляются переменные x, y, z, m, n типа int и инициализируются значением 0.
  2. Затем программа входит в цикл while, который будет выполняться до тех пор, пока любой из следующих условий истинно: m меньше или равно 0, n меньше или равно 0, x меньше или равно 0, y меньше или равно 0, z меньше или равно 0.
  3. Внутри цикла программа запрашивает у пользователя ввод размеров двери M*N и размеров коробки X*Y*Z, используя функцию scanf.
  4. Затем программа проверяет, выполняется ли хотя бы одно из условий, указанных в цикле while. Если это так, программа выводит сообщение Reentr door or box size и цикл продолжается.
  5. Если все условия выполняются, программа проверяет, проходит ли коробка через дверь, сравнивая y и m, y и z, z и m, x и m, x и y, z и y. Если какое-либо из этих сравнений истинно, программа выводит сообщение BOX does not pass. В противном случае программа выводит сообщение BOX passes.
  6. В конце программы возвращается 0, что означает успешное выполнение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы