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

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.