C Programm - for Schleife funktioniert nicht

Gast #6863621
Lesenswert?
• ▲
▼
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:
1
#include <stdio.h>
2
#include <math.h>
3
#include <stdlib.h>
4

5
int main(){
6

7
int x = 1;
8
int iNummer = 0;
9
float fWert;
10

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

14
fWert = pow(10, x/12);
15

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

19
}
20
}

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?
#6863630
Lesenswert?
• ▲
▼
Juergen72 schrieb:
> Wo liegt der Fehler? Was habe ich falsch gemacht?

x ist integer. und x ist deine Lauf-Variable.
1/12 = 0   --> 10 hoch 0  = 1
2/12 = 0   --> 10 hoch 0 = 1
..
12/12 = 1  --> 10 hoch 1 gleich 10

Du hast deine Ausgabe zwar als float Zahl, aber die vorherige Berechnung 
macht halt das was du gesagt hast.

somit wird dann aus 1 ein 1.0, und aus 10 ein 10.0 (weil du es so 
ausgaben möchtest mit %8.1f)


Tip: Wenn du durch 12.0 teilst anstelle durch 12, wird das ganze 
"automatisch" zu float berechnet

edit: germel war schneller
#6863768
Lesenswert?
• ▲
▼
Da an der Berechnung nur Integerwerte beteiligt sind, wird die Division 
auch nur als Integerdivision ausgeführt.

Dies gilt auch für Teilausdrücke wie 1.0 + x/12
Wegen Punkt vor Strichrechnung wird zuerst x/12 ausgewertet.
Dabei ist es auch egal, was für einer Variablen das später zugewiesen 
wird.

Wozu iNummer?
Was ist der Unterschied zu x?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.