I was just trying to re-program my python program into C that I recently started learning. It takes in a 4 digit sequence, separates it into 2 2-digit numbers and then calculates pythagorian theorem. This is the original code in python (working):
import math
backup = 0
a = 0
b = 0
odvesnaodvesna = 0
odvesnaprepona = 0
preponaodvesna = 0
start = 1
run = 1
def program():
print("Sekvenční kalkulačka pythagorovy věty \n NÁVOD K POUŽITÍ \n 1. Zapište dvě strany do sekvence (např. a = 5cm, b = 10 cm, pak sekvence bude: 0510) \n 2. Program vygeneruje zbývající stranu ve všech možnostech, tj. \n ODVĚSNA-ODVĚSNA: \n PŘEPONA-ODVĚSNA: \n ODVĚSNA-PŘEPONA:")
sekvence = int(input("Zadejte sekvenci: "))
backup = sekvence
a = int(sekvence / 100)
b = backup - ((int(sekvence / 100)) * 100)
if a > b:
odvesnaodvesna = math.sqrt((a * a) (b * b))
preponaodvesna = math.sqrt((a * a) - (b * b))
print("ODVĚSNA-ODVĚSNA: ", odvesnaodvesna)
print("PŘEPONA-ODVĚSNA: ", preponaodvesna)
elif b > a:
odvesnaodvesna = math.sqrt((a * a) (b * b))
odvesnaprepona = math.sqrt((b * b) - (a * a))
print("ODVĚSNA-ODVĚSNA: ", odvesnaodvesna)
print("ODVĚSNA-PŘEPONA: ", odvesnaprepona)
while start == 1:
if run == 0:
quit()
else:
program()
run = int(input("Zadejte 0 pro ukončení nebo 1 pro zopakování: "))
And I rewrote it like this in C :
#include <iostream>
using namespace std;
int main() {
double backup;
double a;
double b;
double odvesnaodvesna;
double odvesnaprepona;
double preponaodvesna;
int start = 1;
int run = 1;
void program(); {
cout << "Sekvenční kalkulačka pythagorovy věty \n NÁVOD K POUŽITÍ \n 1. Zapište dvě strany do sekvence (např. a = 5cm, b = 10 cm, pak sekvence bude: 0510) \n 2. Program vygeneruje zbývající stranu ve všech možnostech, tj. \n ODVĚSNA-ODVĚSNA: \n PŘEPONA-ODVĚSNA: \n ODVĚSNA-PŘEPONA:";
double sekvence;
cout << "Zadejte sekvenci: ";
cin >> sekvence;
backup = sekvence;
a = trunc(sekvence / 100);
b = backup - (trunc(sekvence / 100)) * 100;
if (a > b) {
odvesnaodvesna = sqrt((a * a) (b * b));
preponaodvesna = sqrt((a * a) - (b * b));
cout << "ODVĚSNA-ODVĚSNA";
cout << odvesnaodvesna;
cout << "\n";
cout << "PŘEPONA-ODVĚSNA";
cout << preponaodvesna;
}
else if (a < b) {
odvesnaodvesna = sqrt((a * a) (b * b));
preponaodvesna = sqrt((b * b) (a * a));
cout << "ODVĚSNA-ODVĚSNA";
cout << odvesnaodvesna;
cout << "\n";
cout << "ODVĚSNA-PŘEPONA";
cout << preponaodvesna;
}
}
while (start == 1) {
if (run == 0) {
return 0;
}
else {
program();
cout << "Zadejte 0 pro ukončení nebo 1 pro zopakování: ";
cin >> run;
}
}
}
Now I am getting these errors from Visual studio: Errors
I am using a czech version of VS so a google translation is this:
193 / 5 000 Výsledky překladu
- Number of unrecognized external types: 1
- odvesnaprepon: unreferenced local variable
- Unrecognized external symbol "void_cdecl program (void)" (? Program @@ YAXXZ) referenced in function_main
From these messages I have no idea what I did wrong, so can anyone tell me?
CodePudding user response:
There is an extra semicolon after void program() ;
So the compiler believes that this statement is a declaration, and the brace after it begins a code block.
This misdefined function is used later, so the compiler have to find it in another object file.
CodePudding user response:
I just got it. Functions are not declared inside int main, but separately. Just a beginner's fault I guess.
Stack overflow does not allow me to tag this as a solution, but take it as such.