Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #164100

Re: Can this program be improved?

From Bart <bc@freeuk.com>
Newsgroups comp.lang.c
Subject Re: Can this program be improved?
Date 2021-12-29 17:49 +0000
Organization A noiseless patient Spider
Message-ID <sqi72e$q7e$1@dont-email.me> (permalink)
References <sq63mi$gom$1@dont-email.me> <sq6b3t$ce5$1@dont-email.me> <sqi3p9$1bia$1@gioia.aioe.org>

Show all headers | View raw


On 29/12/2021 16:52, Guillaume wrote:
> Le 25/12/2021 à 06:44, Andrey Tarasevich a écrit :


>> 1. int main(void)
>>
>> 2. Stop using `float` for local variables. "Default" floating-point 
>> type in C is `double`. Everything else is used only if you have a good 
>> reason to do that. In this case you don't.
>>
>> 3. Stop using "regular" floating point types for representing monetary 
>> quantities. They are not good for that purpose.
>>
>> 4. It appears that you are actually trying to use `float` to represent 
>> _integer_ quantities (judging by your `printf`). Why?
>>
>> 5. Stop using `pow` for calculating integer powers. You don't really 
>> need `<math.h>` here.
>>
>> 6. Stop piling up all variable declarations at the beginning of the 
>> function. Declare variables as locally as possible.
>>
>> 7. Stop using dummy initializers for your variables. It is better to 
>> leave them uninitialized than initialize them to dummy zeros. This 
>> point is actually connected to the previous one: once you start 
>> declaring variables as locally as possible, you'll normally have a 
>> meaningful initializers for them at the point of declaration.
>>
>> 8. What's going on with capitalization in your variables names? 
>> `Opening`, `closing`, `interest`, `Total`? Is this a convention of 
>> some sort?
>>
>> 9. "Magical constants"? What on Earth is `1200`?
>>
>> 10. Repetitive subexpressions, like `1 + r / 1200` (some explicit, 
>> some slightly obfuscated) are probably a matter of style.... But 
>> anyway: DRY - do not repeat yourself.
> 
> All good points!
> 

All?

2) Nothing wrong with using 'float' when it's appropropriate. Many 
libraries eg. OpenGL make extensive use of float.

It's not obvious that C's /default/ float type is 'double', nor that 
'float' is not the default float type, despite the name!

However, for this application, float is not quite accurate enough.

3) Double is perfectly suitable for representing monetary amounts, 
especially in a toy program or for personal use. (I've used it for 
accounts within a small business.)

But what exactly would be a practical alternative here? To import a 
decimal float library, or somehow work with int64 whole cents? (Good 
luck with interest calculations with that.)

4) Doesn't make sense. The quantities have to be floating point, but are 
simply being printed with zero decimal places, as whole dollars or whatever.

5) I can't see an issue in using pow() to do pow(float,int); the result 
will not be exact anyway. What is the alternate, to invent a local 
powint(float,int) routine? Which will probably contain a loop. Or change 
the logic for an accumulative product. pow() is simpler!

6) I just don't agree with this at all. I like all the cluttery 
declarations out of the way of the logic, and in one place for quick 
reference. Then you also know there are no multiple, incompatible 
instances of any local identifier.

7) I think initialisers are a good idea. Some languages will ensure such 
locals are set to a known starting value, like 0 or 0.0 for static 
types; presumably they think that is a benefit.

Ones like (1) I agree with, but I also think it's a waste of time 
pointing it out, as the practice is so widespread.

Because compilers [not mine!] have long routinely accepted () parameter 
lists without any warnings that args passed to those functions are 
completely unchecked for number or types, most seem to assume that they 
mean /no/ parameters.

In this example program, it means that the code could call main(10, 
20.0, "three") without comment. But then it could still call it legally 
as main() if the (void) was added.

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Can this program be improved? Manu Raju <MR@invalid.invalid> - 2021-12-25 01:00 +0000
  Re: Can this program be improved? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-12-24 21:44 -0800
    Re: Can this program be improved? David Brown <david.brown@hesbynett.no> - 2021-12-25 12:56 +0100
    Re: Can this program be improved? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-12-25 11:13 -0800
    Re: Can this program be improved? Manfred <noname@add.invalid> - 2021-12-25 23:50 +0100
    Re: Can this program be improved? Manu Raju <MR@invalid.invalid> - 2021-12-26 18:52 +0000
      Re: Can this program be improved? Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2021-12-26 19:22 +0000
        Re: Can this program be improved? Manu Raju <MR@invalid.invalid> - 2021-12-26 21:30 +0000
          Re: Can this program be improved? Bart <bc@freeuk.com> - 2021-12-26 22:02 +0000
          Re: Can this program be improved? Richard Damon <Richard@Damon-Family.org> - 2021-12-26 18:24 -0500
          Re: Can this program be improved? Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2021-12-27 00:47 +0000
    Re: Can this program be improved? Guillaume <message@bottle.org> - 2021-12-29 17:52 +0100
      Re: Can this program be improved? Bart <bc@freeuk.com> - 2021-12-29 17:49 +0000
        Re: Can this program be improved? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-12-29 11:33 -0800
          Re: Can this program be improved? James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-12-29 22:45 -0500
            Re: Can this program be improved? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-12-30 00:35 -0800
              Re: Can this program be improved? David Brown <david.brown@hesbynett.no> - 2021-12-30 10:19 +0100
          Re: Can this program be improved? Bart <bc@freeuk.com> - 2022-01-01 18:19 +0000
            Re: Can this program be improved? Bart <bc@freeuk.com> - 2022-01-01 19:33 +0000
        Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-12-29 14:37 -0800
          Re: Can this program be improved? Bart <bc@freeuk.com> - 2021-12-29 23:09 +0000
            Re: Can this program be improved? scott@slp53.sl.home (Scott Lurndal) - 2021-12-29 23:54 +0000
              Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-12-29 16:11 -0800
              Re: Can this program be improved? Kaz Kylheku <480-992-1380@kylheku.com> - 2021-12-30 00:34 +0000
                Re: Can this program be improved? Bart <bc@freeuk.com> - 2021-12-30 12:49 +0000
                Re: Can this program be improved? Kaz Kylheku <480-992-1380@kylheku.com> - 2021-12-30 21:04 +0000
                Re: Can this program be improved? Bart <bc@freeuk.com> - 2021-12-31 02:13 +0000
            Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-12-29 16:09 -0800
              Re: Can this program be improved? Kaz Kylheku <480-992-1380@kylheku.com> - 2021-12-30 00:59 +0000
                Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-12-29 17:48 -0800
                Re: Can this program be improved? Kaz Kylheku <480-992-1380@kylheku.com> - 2021-12-30 20:47 +0000
              Re: Can this program be improved? Bart <bc@freeuk.com> - 2021-12-30 01:06 +0000
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-12-30 04:48 -0800
                Re: Can this program be improved? Manfred <noname@add.invalid> - 2021-12-30 18:16 +0100
                Re: Can this program be improved? Bart <bc@freeuk.com> - 2021-12-31 02:20 +0000
                Re: Can this program be improved? Manfred <noname@add.invalid> - 2021-12-31 18:25 +0100
                Re: Can this program be improved? James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-12-31 18:13 -0500
                Re: Can this program be improved? Bart <bc@freeuk.com> - 2021-12-31 23:59 +0000
                Re: Can this program be improved? "james...@alumni.caltech.edu" <jameskuyper@alumni.caltech.edu> - 2021-12-31 16:20 -0800
                Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-12-31 16:35 -0800
                Re: Can this program be improved? Bart <bc@freeuk.com> - 2022-01-01 00:53 +0000
                Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-12-31 20:22 -0800
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-12-31 22:04 -0800
                Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-01-01 14:59 -0800
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-02 17:22 -0800
                Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-01-02 20:49 -0800
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-03 03:09 -0800
                Re: Can this program be improved? scott@slp53.sl.home (Scott Lurndal) - 2022-01-03 16:22 +0000
                Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-01-03 14:42 -0800
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-03 14:52 -0800
                Re: Can this program be improved? gazelle@shell.xmission.com (Kenny McCormack) - 2022-01-03 22:58 +0000
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-04 04:27 -0800
                Re: Can this program be improved? gazelle@shell.xmission.com (Kenny McCormack) - 2022-01-04 13:39 +0000
                Re: Can this program be improved? David Brown <david.brown@hesbynett.no> - 2022-01-04 00:18 +0100
                Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-01-03 15:24 -0800
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-03 15:43 -0800
                Re: Can this program be improved? Öö Tiib <ootiib@hot.ee> - 2022-01-03 21:19 -0800
                Re: Can this program be improved? Mateusz Viste <mateusz@xyz.invalid> - 2022-01-04 09:23 +0100
                Re: Can this program be improved? Guillaume <message@bottle.org> - 2022-01-04 18:18 +0100
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-04 10:35 -0800
                Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-01-04 14:07 -0800
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-04 15:11 -0800
                Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-01-04 15:47 -0800
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-04 18:30 -0800
                Re: Can this program be improved? scott@slp53.sl.home (Scott Lurndal) - 2022-01-04 23:46 +0000
                Re: Can this program be improved? Bart <bc@freeuk.com> - 2022-01-04 18:41 +0000
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-04 10:52 -0800
                Re: Can this program be improved? scott@slp53.sl.home (Scott Lurndal) - 2022-01-04 19:00 +0000
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-04 11:15 -0800
                Re: Can this program be improved? Guillaume <message@bottle.org> - 2022-01-04 21:57 +0100
                Re: Can this program be improved? Bart <bc@freeuk.com> - 2022-01-04 21:02 +0000
                Re: Can this program be improved? scott@slp53.sl.home (Scott Lurndal) - 2022-01-04 21:38 +0000
                Re: Can this program be improved? Manfred <noname@add.invalid> - 2022-01-04 23:01 +0100
                Re: Can this program be improved? David Brown <david.brown@hesbynett.no> - 2022-01-04 09:31 +0100
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-04 01:30 -0800
                Re: Can this program be improved? David Brown <david.brown@hesbynett.no> - 2022-01-04 14:55 +0100
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-04 06:21 -0800
                Re: Can this program be improved? David Brown <david.brown@hesbynett.no> - 2022-01-04 16:49 +0100
                Re: Can this program be improved? gazelle@shell.xmission.com (Kenny McCormack) - 2022-01-04 15:56 +0000
                Re: Can this program be improved? gazelle@shell.xmission.com (Kenny McCormack) - 2022-01-04 15:03 +0000
                Re: Can this program be improved? gazelle@shell.xmission.com (Kenny McCormack) - 2022-01-03 22:54 +0000
                Re: Can this program be improved? Mateusz Viste <mateusz@xyz.invalid> - 2022-01-03 09:22 +0100
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-03 03:30 -0800
                Re: Can this program be improved? David Brown <david.brown@hesbynett.no> - 2022-01-03 17:22 +0100
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-03 08:48 -0800
                Re: Can this program be improved? Mateusz Viste <mateusz@xyz.invalid> - 2022-01-03 18:42 +0100
                Re: Can this program be improved? Bart <bc@freeuk.com> - 2022-01-03 17:59 +0000
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-03 11:09 -0800
                Re: Can this program be improved? Mateusz Viste <mateusz@xyz.invalid> - 2022-01-03 20:32 +0100
                Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-01-03 11:58 -0800
                Re: Can this program be improved? scott@slp53.sl.home (Scott Lurndal) - 2022-01-03 18:13 +0000
                Re: Can this program be improved? gazelle@shell.xmission.com (Kenny McCormack) - 2022-01-03 20:05 +0000
                Re: Can this program be improved? Bart <bc@freeuk.com> - 2022-01-01 16:53 +0000
          Re: Can this program be improved? Kaz Kylheku <480-992-1380@kylheku.com> - 2021-12-30 00:29 +0000
  Re: Can this program be improved? Bart <bc@freeuk.com> - 2021-12-25 12:47 +0000
    Re: Can this program be improved? Manu Raju <MR@invalid.invalid> - 2021-12-26 18:56 +0000
  Re: Can this program be improved? Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2021-12-25 17:38 +0000
    Re: Can this program be improved? Öö Tiib <ootiib@hot.ee> - 2021-12-25 10:58 -0800
      Re: Can this program be improved? Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2021-12-25 19:16 +0000
        Re: Can this program be improved? Öö Tiib <ootiib@hot.ee> - 2021-12-25 11:25 -0800
      Re: Can this program be improved? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2021-12-25 15:01 -0800
        Re: Can this program be improved? Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2021-12-25 23:09 +0000
          Re: Can this program be improved? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2021-12-25 20:56 -0800
    Re: Can this program be improved? scott@slp53.sl.home (Scott Lurndal) - 2021-12-25 19:30 +0000
      Re: Can this program be improved? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-12-25 15:50 -0800
        Re: Can this program be improved? Manu Raju <MR@invalid.invalid> - 2021-12-26 19:02 +0000
    Re: Can this program be improved? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-12-25 11:53 -0800
    Re: Can this program be improved? Manu Raju <MR@invalid.invalid> - 2021-12-26 19:00 +0000
  Re: Can this program be improved? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-12-25 11:22 -0800
    Re: Can this program be improved? Manu Raju <MR@invalid.invalid> - 2021-12-26 19:01 +0000
  Re: Can this program be improved? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-12-25 13:27 -0800
    Re: Can this program be improved? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-12-25 16:06 -0800
  Re: Can this program be improved? Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2021-12-29 15:21 +0000

csiph-web