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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
 
int main ()
 
{
int x=0, y=0, z=0, m=0, n=0;
while ((m<=0) || (n<=0) || (x<=0) || (y<=0) || (z<=0))
    {
    printf("enter door size M*N, \n");
    scanf ("%d%d", &m, &n);
    printf ("enter box size X*Y*Z\n");
    scanf ("%d%d%d", &x, &y, &z);
    if (m<=0 || n<=0 || x<=0 || y<=0 || z<=0)
        {
        printf("Reentr door or box size\n");
        }
    }
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))
    {
    printf ("BOX does not pass\n");
    }
else
    {
    printf ("BOX passes\n");
    }
return 0;
}

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

  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
Похожие ответы