Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 15. Nov 2018 3:41

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 03. Jan 2007 21:17 
Hallo,

ich soll ein Programm in C89 schreiben, welches Hexadetimalzahlen addiert. Ich habe keine Ahnung, wie ich das Problem löse.

Ein Programm für die Rechnung von Dezimalzahlen sind kein Problem, das kann ich.

Für ein paar Zeilen Code wäre ich sehr dankbar.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 03. Jan 2007 23:55 
Zitat:
Ich habe keine Ahnung, wie ich das Problem löse.
Schön, dann hast du ja jetzt eine Aufgabe mit welcher du das lernen kannst :-)

sorry, aber das ist wirklich recht lustig ^^


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 04. Jan 2007 16:07 
Offline
prolinux-forum-admin
Benutzeravatar

Registriert: 05. Mai 2004 7:35
Beiträge: 1238
Vielleicht hilft dir das weiter:
Code:
#include <stdio.h>

int main&#40;int argc, char **argv&#41;&#123;
        int i;
        int number;

        for&#40;i=1; i<argc; i++&#41;&#123;
                if &#40; sscanf&#40;argv&#91;i&#93;, "0x%x", &number&#41; == 0&#41;&#123;
                        printf&#40;"Ungueltige Eingabe&#58; %s\n", argv&#91;i&#93;&#41;;
                &#125;
                else&#123;
                        printf&#40;"%s -> %d\n", argv&#91;i&#93;, number&#41;;
                &#125;
        &#125;

        return 0;
&#125;
Das sieht dann so aus:
Code:
user@host&#58;~/programming/c/hex$ ./a.out 0xf 0x1 0xf5 43 fd
0xf -> 15
0x1 -> 1
0xf5 -> 245
Ungueltige Eingabe&#58; 43
Ungueltige Eingabe&#58; fd
Schau dir die Handbuchseiten zu sscanf(3) an...


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 04. Jan 2007 16:21 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
scanf kann auch Hexadezimalzahlen einlesen, printf kann auch Hexadezimalzahlen ausgeben.

$ man scanf
$ man printf

Janka

_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 07. Jan 2007 19:28 
Danke für die Hilfe erstmal.

Jetzt habe ich ein funktionsfähiges Programm erstellt:
Code:
// Hexaddierer
#include <stdio.h>

int main()
{

        int zahl;
        int zahl2;
        int summe;

 	printf("\t hallo.\n");
		fflush(stdout);
    printf("Geben Sie eine Zahl im Hexadezimalsystem ein: ");
    	scanf("%x", &zahl);
    
    
    printf("Geben Sie eine zweite Zahl im Hexadezimalsystem ein: ");
    	scanf("%x", &zahl2);
    printf("Zahl1: %x (hex) = %d (dez)\n", zahl, zahl);
    printf("Zahl2: %x (hex) = %d (dez)\n", zahl2, zahl2);
    printf("Rechnung im Hex-format: %x + %x = %x \n", zahl, zahl2, summe=zahl+zahl2);
		fflush(stdout);
	
	printf("ende.\n");

        return 0;
} 
&#91;code&#93;

Ich bekomme es aber nicht fehlerfrei hin, die Eingabeüberprüfung wie oben korrekt zu integrieren. Grund hierfür ist, dass die Zahlen erst nach Aufforderung eingegeben werden sollen.

Wie geht das?
Danke schonmal im Voraus. :-)
&#91;/code&#93;


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 07. Jan 2007 23:20 
Offline
prolinux-forum-admin
Benutzeravatar

Registriert: 05. Mai 2004 7:35
Beiträge: 1238
Du solltest den Block
Code:
printf&#40;"Geben Sie eine Zahl im Hexadezimalsystem ein&#58; "&#41;;
scanf&#40;"%x", &zahl&#41;;
in eine while-Schleife packen, die den Return-Wert überprüft - scanf gibt die Anzahl der gültigen Zeichen zurück. Du musst dabei allerdings beachten, dass bei "%x" sowohl "0x(hex)", "0X(hex)" "(hex)" gültige Eingaben sind - Bei meinem obigen Beispiel habe ich "0x(hex)" erzwungen.


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de