Webstatt.org - Community seit 2006 - 2012 (2024?)

C - Type Conflict

Avatar user-271
12.01.2007 02:14

Also...ich krebs mich immo so ein bisschen mit C rum...an sich ist es nicht schwer...nur hab ich immo einen FEhler auf den komm ich einfach nicht.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
double a = atof(argv[1]);

if (a < 0.0) {
printf("sqrt(%.2f) = i * %.12f\n",wurzel(-a));
} else {
double result = wurzel(a);
printf("sqrt(%.2f) = %.12f\n",a,result);
}
}


double wurzel(double a) {
double s_alt = 1.0;
double s_neu;
double delta;

do {
s_neu = 0.5*(s_alt+a/s_alt);
delta = (s_alt-s_neu<0 ? s_neu-s_alt : s_alt-s_neu);
s_alt = s_neu;
} while(delta > 1.0E-12);

return(s_neu);
}


der Fehler tritt bei der wurzel funktion auf:
marvin@pavlo:~/dev/c$ gcc wurzel.c -o wurzel
wurzel.c:16: error: conflicting types for ‘wurzel’
wurzel.c:8: error: previous implicit declaration of ‘wurzel’ was here



warum hat der einen type conflict?

#!/bin/bash
traurig){ neutral:& };:
user-157
12.01.2007 12:43

Ich hab zwar keinen Peil von C, aber wurzel wird doch da als Funktion definiert, wenn ich mich nicht täusche. Setz den Code vielleicht mal nach oben zwinkern

asdf!
user-303
12.01.2007 13:11

du musst die funktion ja definieren, bevor du sie aufrufst (aus sicht des compilers)
also das funktioniert bei mir:

#include <stdio.h>
#include <stdlib.h>

double wurzel(double a);

int main(int argc, char **argv) {
double a = atof(argv[1]);
if (a < 0.0) {
printf("sqrt(%.2f) = i * %.12f\n",wurzel(-a));
} else {
double result = wurzel(a);
printf("sqrt(%.2f) = %.12f\n",a,result);
}
return 0;
}


double wurzel(double a) {
double s_alt = 1.0;
double s_neu;
double delta;

do {
s_neu = 0.5*(s_alt+a/s_alt);
delta = (s_alt-s_neu<0 ? s_neu-s_alt : s_alt-s_neu);
s_alt = s_neu;
} while(delta > 1.0E-12);

return(s_neu);
}

user-157
12.01.2007 13:22

Öhm user-303? Du hast doch gar nichts verändert?! oO

asdf!
user-303
12.01.2007 13:35

mach deine augen auf

user-157
12.01.2007 14:08

Ah ok! hab mich verguckt Fettes Grinsen

asdf!
Avatar user-271
12.01.2007 20:25

arg bin ich blöd....ja stimmt.....hatte ich voll vergessen *g*

Vielen dank snake...probiers gleihc ma bei mir

#!/bin/bash
traurig){ neutral:& };: