111

2016-02-19 Thread Lisa via Digitalmars-d-learn
Can you please help me and explain how to create a program, which 
would find area of triangle and its perimeter?




Re: 111

2016-02-19 Thread Lisa via Digitalmars-d-learn

On Saturday, 20 February 2016 at 00:01:47 UTC, cym13 wrote:

On Friday, 19 February 2016 at 23:56:29 UTC, Lisa wrote:
Can you please help me and explain how to create a program, 
which would find area of triangle and its perimeter?


What do you need help for exactly? What have you tried? What do 
you struggle with?


With everything, actually i need full explanation and listing of 
programm from its beginning


Re: 111

2016-02-19 Thread Lisa via Digitalmars-d-learn

On Saturday, 20 February 2016 at 00:15:16 UTC, Chris Wright wrote:

On Sat, 20 Feb 2016 00:04:04 +, Lisa wrote:


On Saturday, 20 February 2016 at 00:01:47 UTC, cym13 wrote:

On Friday, 19 February 2016 at 23:56:29 UTC, Lisa wrote:
Can you please help me and explain how to create a program, 
which would find area of triangle and its perimeter?


What do you need help for exactly? What have you tried? What 
do you struggle with?


With everything, actually i need full explanation and listing 
of programm from its beginning


Is this a homework problem that was assigned to you?


Yes, exectly. It's new for me, and i don't even know how should I 
start.


Re: 111

2016-02-19 Thread Lisa via Digitalmars-d-learn

On Saturday, 20 February 2016 at 01:48:35 UTC, Ali Çehreli wrote:

On 02/19/2016 03:56 PM, Lisa wrote:
Can you please help me and explain how to create a program, 
which would

find area of triangle and its perimeter?


It's great to have student questions on this forum. If you 
don't mind telling us, which teacher and school teaches or uses 
D? The only one that I know of is Professor Chuck Allison at 
Utah Valley University.


Assuming that you are given the lengths of the three sides, you 
can calculate the area with Heron's formula. I had used that 
method in this otherwise unrelated chapter:


  http://ddili.org/ders/d.en/invariant.html

Ali


Thank you :)
I'm actually from Ukraine)



Re: 111

2016-02-19 Thread Lisa via Digitalmars-d-learn

On Friday, 19 February 2016 at 23:56:29 UTC, Lisa wrote:
Can you please help me and explain how to create a program, 
which would find area of triangle and its perimeter?


And for everybody - I know how to find area and perimetr, but i 
don't know how to write it on programming language)

Can i use "scanf" in D language?


Re: 111

2016-02-19 Thread Lisa via Digitalmars-d-learn

On Saturday, 20 February 2016 at 01:48:35 UTC, Ali Çehreli wrote:

On 02/19/2016 03:56 PM, Lisa wrote:
Can you please help me and explain how to create a program, 
which would

find area of triangle and its perimeter?


It's great to have student questions on this forum. If you 
don't mind telling us, which teacher and school teaches or uses 
D? The only one that I know of is Professor Chuck Allison at 
Utah Valley University.


Assuming that you are given the lengths of the three sides, you 
can calculate the area with Heron's formula. I had used that 
method in this otherwise unrelated chapter:


  http://ddili.org/ders/d.en/invariant.html

Ali



import std.stdio;
import std.math;

int main()
{
double a, b, c, p;

writef("Enter a: ");
scanf("%d", &a);
writef("Enter b: ");
scanf("%d", &b);
writef("Enter c: ");
scanf("%d", &c);

p = a + b + c;

writeln("P=", p);


return 0;
}

I try to do just perimetr, but it doesn't work :(


Re: 111

2016-02-19 Thread Lisa via Digitalmars-d-learn

On Saturday, 20 February 2016 at 03:43:17 UTC, Ali Çehreli wrote:

On 02/19/2016 07:37 PM, Lisa wrote:

> import std.stdio;
> import std.math;
>
> int main()
> {
>  double a, b, c, p;
>
>  writef("Enter a: ");
>  scanf("%d", &a);

scanf is not a safe function. It trusts the format string and 
assumes that 'a' really is what the programmer told it. (For 
example, although 'a' is not an 'int, %d means 'int' and scanf 
treats it as such.)


The correct format identifier for double is %lf. You need to 
replace all three of with %lf.


However, you are not writing idiomatic D code. I recommend 
dropping C functions altogether an taking advantage of readf():


  http://ddili.org/ders/d.en/input.html

Ali


module main;

import std.stdio;
import std.math;

int main() {
int A, B, C;
writef("A = ");
readf("%lf", %A);

writef("B = ");
readf("%lf", %B);

writef("C1= ");
readf("%lf", %C);

writefl("P = (%lf)", A + B + C);
return 0;
}

It whatever doesn't work


Re: 111

2016-02-21 Thread Lisa via Digitalmars-d-learn
On Saturday, 20 February 2016 at 12:59:58 UTC, Ivan Kazmenko 
wrote:

On Saturday, 20 February 2016 at 04:15:50 UTC, Lisa wrote:

module main;

import std.stdio;
import std.math;

int main() {
int A, B, C;
writef("A = ");
readf("%lf", %A);

writef("B = ");
readf("%lf", %B);

writef("C1= ");
readf("%lf", %C);

writefl("P = (%lf)", A + B + C);
return 0;
}

It whatever doesn't work


The line "int A, B, C;" should be "double A, B, C;" if you want 
to be able to operate non-integer lengths as well.


The lines like "readf("%lf", %A);" should be "readf(" %s", 
&A);".
 Please read the reasoning again carefully in Ali's book: 
http://ddili.org/ders/d.en/input.html.  The " %s" can be " %f" 
but not " %lf" (that would be the correct string for C's printf 
but not for D's readf), and the leading space is important.


On the output line, you perhaps meant "writefln" instead of 
"writefl".  Again, "%lf" should be changed into "%f" or "%s".


import std.stdio;
import std.math;

void main() {

writef("Enter side A: ");
double A;
readf("%s", &A);

writef("Enter side B: ");
double B;
readf("%s", &B);

writef("Enter side C: ");
double C;
readf("%s", &C);

writefln("Perimetr is", A + B + C, " centimetrs.");

return 0;
}

Is there smth wrong again?


Re: 111

2016-02-21 Thread Lisa via Digitalmars-d-learn

On Sunday, 21 February 2016 at 14:03:56 UTC, Ivan Kazmenko wrote:

On Sunday, 21 February 2016 at 12:35:31 UTC, Lisa wrote:

...
Is there smth wrong again?


Yes.

As a programmer, most of the time, you will have to try your 
programs by yourself before you consider them correct.


Now, run a compiler, and it complains:
-
main.d(20): Error: cannot return non-void from void function
-

Line 20 of your program is "return 0;", and the void function 
in question is "void main() {...}".  So, you have to fix either 
of that: make main return int instead of void, or remove the 
return line.


After that, the program will finally compile.  But that's not 
the end, you have to try running it.

"Enter side A:"
shall we say,
"1"
and then it writes
"Enter side B:"
and fails:
-
std.conv.ConvException@c:\Tools\dmd\windows\bin\..\..\src\phobos\std\conv.d(2729):
 no digits seen

0x0040666A in ...
-

That's a whole lot of unfriendly error text on the screen, but 
the human-readable part is "no digits seen" when reading 
variable B.


Now, read the chapter of Ali's book again very carefully, or 
one of the posts here.  You may then notice that the space 
inside the quotes is important, and also learn why.


The bottom line: the task of writing a program is not finished 
until you can compile it, run it, give it at least a few 
example inputs, and it prints the right output for all these 
inputs.


Ivan Kazmenko.


Thank you so much! :)
Thanks everyone!) You're really cool)