# Week 2: valid_triangle function example -- compiling [errors]

This goes to week 2: Functions mini lecture. We create a custom function for verifying whether we have a valid triangle by assessing it's 3 sides.

I wanted to elaborate on the code. Since, this isn't a graded assignment, but rather soley for practice, I don't find any reason why I shouldn't share my results. ERRORS

``````// Includes
#include <stdio.h>
#include <cs50.h>
#include <stdbool.h> // to call bool flag variable

// declare functions
bool valid_triangle(float a, float b, float c);

int main(void)
{
// prompt the user for inputs (s1 for side 1, etc..)
float s1, s2, s3;
printf("Enter triangle side 1 :\n");
scanf("%f, &s1");

printf("Enter triangle side 2 :\n");
scanf("%f, &s2");

printf("Enter triangle side 3 :\n");
scanf("%f, &s3");

// calling the function and using a 'flag variable' to evaluate
bool flag = valid_triangle(s1,s2,s3);
if(flag == 0)
printf("A triangle must have positive sides\n and both sides must sum to the other side \n");
if(flag == 1)
printf("Those are valid sides of a triangle\n");
}

// define bool_triangle function
bool valid_triangle(float a, float b, float c)
{
// check all sides are positive
if (a <= 0 || b <= 0 || c <= 0)
{
return false;
}

// check that sum of any two sides is greater than third
if ((a + b <= c) || (a + c <= b) || (b + c <= a))
{
return false;
}

// if we passed both tests, we're good:
return true;
}
``````
• My error is:
``````\$ make triangle
clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow    triangle.c  -lcrypt -lcs50 -lm -o triangle
triangle.c:13:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s1");
~^
triangle.c:16:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s2");
~^
triangle.c:19:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s3");
~^
triangle.c:23:32: error: variable 's1' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:11:13: note: initialize the variable 's1' to silence this warning
float s1, s2, s3;
^
= 0.0
triangle.c:23:35: error: variable 's2' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:11:17: note: initialize the variable 's2' to silence this warning
float s1, s2, s3;
^
= 0.0
triangle.c:23:38: error: variable 's3' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:11:21: note: initialize the variable 's3' to silence this warning
float s1, s2, s3;
^
= 0.0
6 errors generated.
<builtin>: recipe for target 'triangle' failed
make: *** [triangle] Error 1
~/pset1/week2/ \$ make triangle
clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow    triangle.c  -lcrypt -lcs50 -lm -o triangle
triangle.c:13:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s1");
~^
triangle.c:16:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s2");
~^
triangle.c:19:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s3");
~^
triangle.c:23:32: error: variable 's1' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:11:13: note: initialize the variable 's1' to silence this warning
float s1, s2, s3;
^
= 0.0
triangle.c:23:35: error: variable 's2' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:11:17: note: initialize the variable 's2' to silence this warning
float s1, s2, s3;
^
= 0.0
triangle.c:23:38: error: variable 's3' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:11:21: note: initialize the variable 's3' to silence this warning
float s1, s2, s3;
^
= 0.0
6 errors generated.
<builtin>: recipe for target 'triangle' failed
make: *** [triangle] Error 1
~/pset1/week2/ \$ debug50 make triangle
debug50: make: No such file
~/pset1/week2/ \$ check50 make triangle
usage: check50 [-h] [-d] [--offline] [-l] [--log]
[-o {ansi,json,html} [{ansi,json,html} ...]]
[--target TARGET [TARGET ...]] [--output-file FILE] [-v] [-V]
[--logout]
slug
check50: error: unrecognized arguments: triangle
~/pset1/week2/ \$ check50 triangle
Invalid slug
~/pset1/week2/ \$ check50 ./triangle
Invalid slug
~/pset1/week2/ \$ debug50 ./triangle
Looks like you've changed your code. Recompile and then re-run debug50!
~/pset1/week2/ \$ debug50 make triangle
debug50: make: No such file
~/pset1/week2/ \$ make triangle
clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow    triangle.c  -lcrypt -lcs50 -lm -o triangle
triangle.c:13:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s1");
~^
triangle.c:16:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s2");
~^
triangle.c:19:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s3");
~^
triangle.c:23:32: error: variable 's1' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:11:13: note: initialize the variable 's1' to silence this warning
float s1, s2, s3;
^
= 0.0
triangle.c:23:35: error: variable 's2' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:11:17: note: initialize the variable 's2' to silence this warning
float s1, s2, s3;
^
= 0.0
triangle.c:23:38: error: variable 's3' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:11:21: note: initialize the variable 's3' to silence this warning
float s1, s2, s3;
^
= 0.0
6 errors generated.
<builtin>: recipe for target 'triangle' failed
make: *** [triangle] Error 1
~/pset1/week2/ \$ debug50 ./triangle
Looks like you've changed your code. Recompile and then re-run debug50!
~/pset1/week2/ \$ make triangle
clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow    triangle.c  -lcrypt -lcs50 -lm -o triangle
triangle.c:14:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s1");
~^
triangle.c:17:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s2");
~^
triangle.c:20:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s3");
~^
triangle.c:24:32: error: variable 's1' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:12:13: note: initialize the variable 's1' to silence this warning
float s1, s2, s3;
^
= 0.0
triangle.c:24:35: error: variable 's2' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:12:17: note: initialize the variable 's2' to silence this warning
float s1, s2, s3;
^
= 0.0
triangle.c:24:38: error: variable 's3' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:12:21: note: initialize the variable 's3' to silence this warning
float s1, s2, s3;
^
= 0.0
6 errors generated.
<builtin>: recipe for target 'triangle' failed
make: *** [triangle] Error 1
~/pset1/week2/ \$ make triangle
clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow    triangle.c  -lcrypt -lcs50 -lm -o triangle
triangle.c:14:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s1");
~^
triangle.c:17:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s2");
~^
triangle.c:20:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s3");
~^
triangle.c:24:32: error: variable 's1' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:12:13: note: initialize the variable 's1' to silence this warning
float s1, s2, s3;
^
= 0.0
triangle.c:24:35: error: variable 's2' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:12:17: note: initialize the variable 's2' to silence this warning
float s1, s2, s3;
^
= 0.0
triangle.c:24:38: error: variable 's3' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:12:21: note: initialize the variable 's3' to silence this warning
~/pset1/week2/ \$ make triangle
clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow    triangle.c  -lcrypt -lcs50 -lm -o triangle
triangle.c:14:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s1");
~^
triangle.c:17:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s2");
~^
triangle.c:20:13: error: more '%' conversions than data arguments
[-Werror,-Wformat]
scanf("%f, &s3");
~^
triangle.c:24:32: error: variable 's1' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:12:13: note: initialize the variable 's1' to silence this warning
float s1, s2, s3;
^
= 0.0
triangle.c:24:35: error: variable 's2' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:12:17: note: initialize the variable 's2' to silence this warning
float s1, s2, s3;
^
= 0.0
triangle.c:24:38: error: variable 's3' is uninitialized when used here
[-Werror,-Wuninitialized]
bool flag = valid_triangle(s1,s2,s3);
^~
triangle.c:12:21: note: initialize the variable 's3' to silence this warning
float s1, s2, s3;
^
= 0.0
6 errors generated.
<builtin>: recipe for target 'triangle' failed
make: *** [triangle] Error 1
``````

In your `scanf` lines, only the format code should be in the double quotes. So the line should be
``````scanf("%f", &s1);