RegistrierenRegistrieren   LoginLogin   FAQFAQ    SuchenSuchen   
Programm ausgeben (C) - Widerstände (E12)
 
Neue Frage »
Antworten »
    Foren-Übersicht -> Elektrik
Autor Nachricht
Widerstandsberechner
Gast





Beitrag Widerstandsberechner Verfasst am: 29. Okt 2021 22:42    Titel: Programm ausgeben (C) - Widerstände (E12) Antworten mit Zitat

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:
-
jh8979
Moderator


Anmeldungsdatum: 10.07.2012
Beiträge: 8583

Beitrag jh8979 Verfasst am: 29. Okt 2021 22:51    Titel: Re: Programm ausgeben (C) - Widerstände (E12) Antworten mit Zitat

Widerstandsberechner hat Folgendes geschrieben:

fWert = pow(10, x/12);

Ich würde mal hier gucken...
Widerstandsberechner
Gast





Beitrag Widerstandsberechner Verfasst am: 29. Okt 2021 22:58    Titel: Antworten mit Zitat

Finde da nur keinen Fehler...
jh8979
Moderator


Anmeldungsdatum: 10.07.2012
Beiträge: 8583

Beitrag jh8979 Verfasst am: 29. Okt 2021 23:08    Titel: Antworten mit Zitat

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
Widerstandberechner
Gast





Beitrag Widerstandberechner Verfasst am: 29. Okt 2021 23:11    Titel: Antworten mit Zitat

Ok, einen hab ich auch gefunden:

12.0 statt 12

Den zweite finde ich nicht...
jh8979
Moderator


Anmeldungsdatum: 10.07.2012
Beiträge: 8583

Beitrag jh8979 Verfasst am: 29. Okt 2021 23:13    Titel: Antworten mit Zitat

rechnet pow() nicht ganz andere dinge aus, als du eigentlich willst? da bin ich mir nicht sicher...
schnudl
Moderator


Anmeldungsdatum: 15.11.2005
Beiträge: 6979
Wohnort: Wien

Beitrag schnudl Verfasst am: 30. Okt 2021 08:34    Titel: Antworten mit Zitat

Eine Division zweier int resultiert nicht in float.
Was du jetzt noch hast, wissen wir nicht, du musst den Code zeigen.

_________________
Wenn du eine weise Antwort verlangst, musst du vernünftig fragen (Goethe)
MBastieK



Anmeldungsdatum: 06.10.2012
Beiträge: 951
Wohnort: Berlin-Wedding

Beitrag MBastieK Verfasst am: 06. Nov 2021 15:30    Titel: Antworten mit Zitat

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.
Neue Frage »
Antworten »
    Foren-Übersicht -> Elektrik