C Programmierung verbessern,vereinfachen

Gast #2163002
Lesenswert?

Hallo

Ich habe mal eine Frage zur einer C Programmierung.

Ich habe folgendes Programm geschrieben: Siehe Anhang

Dazu diese Fragen:

1. Gibt es irgendeine andere Möglichkeit ohne if die Ausgabe bei 
bestimmten  Werten zu ermöglichen?

2. Wie bekomme ich das gebacken das immer nur ein Wert angezeigt wird?

Zur Zeit überlagern sich alle Ausgaben auf einem LCD.

Wie bekomme ich dies hier in C geschrieben?
z.b. Wert <= 255 aber >230 dann Ausgabe 0 Lux
     Wert <= 230 aber >205 dann Ausgabe 10-20 Lux

So habe ich es bei der If Anweisung probiert aber ohne Erfolg.

Für Ratschläge und Hilfen bedanke ich mich schoneinmal im vorraus.

Mfg Kai
Angehängte Dateien:
Gast #2163027
Lesenswert?

Kai schrieb:

> 1. Gibt es irgendeine andere Möglichkeit ohne if die Ausgabe bei
> bestimmten  Werten zu ermöglichen?

Irgendeine schon, aber if duerfte die Sinnvollste sein.

Besser saehe das aus, wenn du Tabellen fuer die Grenzwerte und die 
passenden Strings verwendest.

> 2. Wie bekomme ich das gebacken das immer nur ein Wert angezeigt wird?

Mit dem kleinsten Wert anfangen und else verwenden.

if (AnalogWert <=26)
{
      printlcd ("über 1000 Lux   ",2);  // Ausgabe an Zeile 1 des LCDs
}
else if (AnalogWert <=51)
{
      printlcd ("360-1000 Lux    ",2);  // Ausgabe an Zeile 1 des LCDs
}

> Wie bekomme ich dies hier in C geschrieben?
> z.b. Wert <= 255 aber >230 dann Ausgabe 0 Lux
>      Wert <= 230 aber >205 dann Ausgabe 10-20 Lux

if ((AnalogWert <=255) && (AnalogWert >230))

> So habe ich es bei der If Anweisung probiert aber ohne Erfolg.

Du solltest deine Versuche zeigen, dann kann man dir sagen, warum du 
damit keinen Erfolg hattest.

> Für Ratschläge und Hilfen bedanke ich mich schoneinmal im vorraus.

Die wichtigste Hilfe fuer C ist ein gelesenes C-Buch.
Gast #2163028
Lesenswert?

Kai schrieb:
> Wie bekomme ich dies hier in C geschrieben?
> z.b. Wert <= 255 aber >230 dann Ausgabe 0 Lux
>      Wert <= 230 aber >205 dann Ausgabe 10-20 Lux
>
> So habe ich es bei der If Anweisung probiert aber ohne Erfolg.
Problem 2 würde ich so lösen:
1
if((Wert <= 255)&&(Wert > 230)){
2
   ...
3
}else if((Wert <= 230)&&(Wert > 205)){
4
   ...
5
}
Gast #2163217
Lesenswert?

codehamster schrieb:
> Problem 2 würde ich so lösen:
> if((Wert <= 255)&&(Wert > 230)){
>    ...
> }else if((Wert <= 230)&&(Wert > 205)){
>    ...
> }

Das sind viel zu viel Vergleiche. Die Hälfte reicht doch völlig:
1
if(Wert > 230) {
2
   ...
3
} else if(Wert > 205) {
4
   ...
5
} else ...
Bis auf die Tatsache, dass hier mit dem größten Wert begonnen wird, ist 
das aber genau die von Peter bereits gepostete Lösung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren