I'm doing an assignment at school in C, but the program won't run.
I get the error: "/tmp/ccW7r5po.o:functions3.c.text+0x1b9): undefined reference to `myLog2'collect2: error: ld returned 1 exit status"
Help anyone?
Code:
#include <stdio.h>
void myTriangles (int numlines);
int myPrimeFactor (int number, int primeFactor);
void myNumbers (int startnum, int endnum);
int myLog2(unsigned int n);
int main ()
{
int numlines, number, primeFactor, startnum, endnum, result, operasjon, f;
printf("Choose function.\n");
printf("1. myTriangles.\n");
printf("2. myPrimeFactor. \n");
printf("3. myNumbers. \n");
printf("4. myLog2. \n");
printf("5. reverseString. \n");
scanf ("%d",&operasjon);
switch (operasjon)
{
case 1:
{
printf("Enter number of rows!\n");
scanf("%d",&numlines);
myTriangles(numlines);
}
break;
case 2:
{
printf("Enter a value. ");
scanf("%d",&number);
printf("Enter a prime factor. \n");
scanf("%d",&primeFactor);
f = myPrimeFactor (number, primeFactor);
printf("%d", f);
}
break;
case 3:
{
printf("Enter a start number.\n");
scanf("%d", &startnum);
printf("Enter an ending number.\n");
scanf("%d", &endnum);
myNumbers(startnum, endnum);
}
break;
case 4:
{
unsigned int n;
printf("Pick a positive number: ");
scanf("%d", &n);
int result = myLog2(n);
printf("The position of the most significant bit is %d\n\n", result);
}
}
}
// OPPGAVE 1
void myTriangles (int numlines)
{
int i, j;
for (i=1;i<=numlines;i++)
{
for (j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}
}
// OPPGAVE 2
int myPrimeFactor (int number, int primeFactor)
{
int result = number % primeFactor;
if(result == 0){
return 1;
}
else
{
return 0;
}
}
// OPPGAVE 3
void myNumbers (int startnum, int endnum)
{
while (startnum <= endnum)
{
int result = myPrimeFactor(startnum, 5);
if (startnum % 2 == 0 && result == 1) {
printf("%d is even and 5 is a prime factor\n",startnum);
}
else if (startnum % 2 == 1 && result == 1) {
printf("%d is odd and 5 is a prime factor\n",startnum);
}
else if (startnum % 2 == 1 && result == 0) {
printf("%d is odd and 5 is not a prime factor\n",startnum);
}
else if (startnum % 2 == 0 && result == 0) {
printf("%d is even and 5 is not a prime factor\n",startnum);
}
startnum ++;
}
// OPPGAVE 4
int myLog2(unsigned int n)
{
int result = 0;
while (n > 1)
{
n = n >> 1;
result++;
}
return result;
}