Autor Nachricht
MBastieK
BeitragVerfasst am: 06. Nov 2021 15:30    Titel:

schnudl hat Recht.
Sie müssen
fWert = pow(10, ((float)x)/12);
schreiben.

Es kommt immer 1.0 raus, weil potenziert mit 0 unendliche Wurzel bedeutet und "immer" zu 1 führt.
Und x/12 integer-weise immer 0 rauskommt bei x innerhalb [1,11], d.h. zwischen 1 und 11. Dementsprechend müsste immer 1.0 rauskommen ausser beim letzten, wo 10.0 rauskommt.

Zusatz: Oh, habe jetzt erst gesehen, dass Sie schon von selbst die 12 über 12.0F in ein float-Register gepackt haben bzw. eher so jetzt die float-Division nutzen.
schnudl
BeitragVerfasst am: 30. Okt 2021 08:34    Titel:

Eine Division zweier int resultiert nicht in float.
Was du jetzt noch hast, wissen wir nicht, du musst den Code zeigen.
jh8979
BeitragVerfasst am: 29. Okt 2021 23:13    Titel:

rechnet pow() nicht ganz andere dinge aus, als du eigentlich willst? da bin ich mir nicht sicher...
Widerstandberechner
BeitragVerfasst am: 29. Okt 2021 23:11    Titel:

Ok, einen hab ich auch gefunden:

12.0 statt 12

Den zweite finde ich nicht...
jh8979
BeitragVerfasst am: 29. Okt 2021 23:08    Titel:

Ich finde zwei, wenn ich verstehe, was Du machen willst. Ziemlich sicher, dass Du hier über einen was lernst:
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/division_c
Widerstandsberechner
BeitragVerfasst am: 29. Okt 2021 22:58    Titel:

Finde da nur keinen Fehler...
jh8979
BeitragVerfasst am: 29. Okt 2021 22:51    Titel: Re: Programm ausgeben (C) - Widerstände (E12)

Widerstandsberechner hat Folgendes geschrieben:

fWert = pow(10, x/12);

Ich würde mal hier gucken...
Widerstandsberechner
BeitragVerfasst am: 29. Okt 2021 22:42    Titel: Programm ausgeben (C) - Widerstände (E12)

Meine Frage:
Hallo, ich will gerne die Widerstandsdekaden der E12-Reihe in C ausgeben. Diese sollen tabellarisch ausgegeben werden und mit einer Feldweite von 8 sowie einer Nachkommastelle.

Mein Code sieht folgendermaßen aus:

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

int main(){

int x = 1;
int iNummer = 0;
float fWert;



for(x=1; x<=12; x++)
{


fWert = pow(10, x/12);

iNummer++;
printf("\n\tNr: %d\t Widerstand:\t %8.1f", iNummer, fWert);

}
}

Der Code wird auch ausgeführt, nur zeigt er bei jedem Widerstand den Wert 1.0 an. Wie komme ich darauf, dass er 1.2, 1.5,.... etc... ausgibt?
Wo liegt der Fehler? Was habe ich falsch gemacht?

Meine Ideen:
-

Powered by phpBB © 2001, 2005 phpBB Group