steffischwein
Grünschnabel
Hallo liebe C/C++-Gemeine,
ich bin neu in C und hab ein kleines Problem, das ich lösen muss. Leider schaffe ich es alleine nicht, da mir noch das Hintergrundwissen zu einigen grundlegenden Sprachkonstrukten in C und deren Anwendung fehlt - daher muss ich um eure Hilfe bitten. In meinem Buch und im Internet konnte ich leider keine passenden Programmierbeispiele finden, die mir auf die Sprünge geholfen haben.
Und zwar habe ich drei Klassen: eine Main-Klasse, die nur die Methodenaufrufen enthalten soll, eine Header-Klasse und eine Klasse, welche die Prototypenfunktionen aus dem Header "implementieren" muss.
Bisher steht alles in der Main-Klasse (siehe unten) und ich wollte euch fragen, wie ich das ganze Refactoren muss:
- die Struct-Definition aus der Main.c muss in den Header Test.h
- die drei Methoden read, average und print müssen in Test.c
Als Laie möchte man meinen, dass es reicht, diese Methoden und die Struct-Definition einfach zu verschieben, allerdings kommen da Fehler beim compilieren, mit denen ich leider nichts anfangen kann.
Vielleicht kann mir ja jemand helfen, das wäre sehr nett. Vielen Dank schonmal im Voraus.
Edit: Includes für stdio und stdlib in die Main und fehlende Semikolons bei den Prototypen eingebaut.
ich bin neu in C und hab ein kleines Problem, das ich lösen muss. Leider schaffe ich es alleine nicht, da mir noch das Hintergrundwissen zu einigen grundlegenden Sprachkonstrukten in C und deren Anwendung fehlt - daher muss ich um eure Hilfe bitten. In meinem Buch und im Internet konnte ich leider keine passenden Programmierbeispiele finden, die mir auf die Sprünge geholfen haben.
Und zwar habe ich drei Klassen: eine Main-Klasse, die nur die Methodenaufrufen enthalten soll, eine Header-Klasse und eine Klasse, welche die Prototypenfunktionen aus dem Header "implementieren" muss.
Bisher steht alles in der Main-Klasse (siehe unten) und ich wollte euch fragen, wie ich das ganze Refactoren muss:
- die Struct-Definition aus der Main.c muss in den Header Test.h
- die drei Methoden read, average und print müssen in Test.c
Als Laie möchte man meinen, dass es reicht, diese Methoden und die Struct-Definition einfach zu verschieben, allerdings kommen da Fehler beim compilieren, mit denen ich leider nichts anfangen kann.
Code:
Main.c
#include <stdio.h>
#include <stdlib.h>
#include <Test.h>
typedef struct Test {
int value1;
int value2;
} Test;
Test read() {
int value1, value2;
value1 = -1;
value2 = -1;
printf("Please enter something!\n");
printf ("value1:\n");
scanf ("%d",&value1);
printf ("value2:\n");
scanf ("%d",&value2);
printf ("Values: %02d:%02d\n\n\n", value1, value2);
Test newTest = { value1, value2 };
return newTest;
}
Test average(Test t1, Test t2) {
int test1 = t1.value1 / 2;
int test2 = t2.value2 / 2;
Test averageTestNew = { test1, test2 };
return averageTestNew;
}
void print(Test t1, Test t2, Test t3) {
printf ("Test 1: %02d %02d\n", t1.value1, t1.value2);
printf ("Test 2: %02d %02d\n", t2.value1, t2.value2);
printf ("Average: %02d %02d\n", t3.value1, t3.value2);
}
int main(int argc, char** argv) {
Test t1 = read();
Test t2 = read();
Test t3 = average(t1, t2);
print(t1, t2, t3);
}
Code:
Test.c
#include <Test.h>
//hier müssen die drei Methoden read, average und print rein
Code:
Test.h
#ifndef _TEST_H
#define _TEST_H
#ifdef __cplusplus
extern "C" {
#endif
Test read();
Test average(Test t1, Test t2);
void print(Test t1, Test t2, Test t3);
//in diesen Header muss die Definition des Structs rein
#ifdef __cplusplus
}
#endif
#endif /* _TEST_H */
Vielleicht kann mir ja jemand helfen, das wäre sehr nett. Vielen Dank schonmal im Voraus.
Edit: Includes für stdio und stdlib in die Main und fehlende Semikolons bei den Prototypen eingebaut.
Zuletzt bearbeitet: