Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
C-Algorithmus für Hexadezimalzahladdition

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
litschi
Gast





BeitragVerfasst am: 03. Jan 2007 21:17   Titel: C-Algorithmus für Hexadezimalzahladdition

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.
 

ein Gast
Gast





BeitragVerfasst am: 03. Jan 2007 23:55   Titel:

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 Smile

sorry, aber das ist wirklich recht lustig ^^
 

Lateralus
prolinux-forum-admin


Anmeldungsdatum: 05.05.2004
Beiträge: 1238

BeitragVerfasst am: 04. Jan 2007 16:07   Titel:

Vielleicht hilft dir das weiter:

Code:
#include <stdio.h>

int main(int argc, char **argv){
        int i;
        int number;

        for(i=1; i<argc; i++){
                if ( sscanf(argv[i], "0x%x", &number) == 0){
                        printf("Ungueltige Eingabe: %s\n", argv[i]);
                }
                else{
                        printf("%s -> %d\n", argv[i], number);
                }
        }

        return 0;
}


Das sieht dann so aus:

Code:
user@host:~/programming/c/hex$ ./a.out 0xf 0x1 0xf5 43 fd
0xf -> 15
0x1 -> 1
0xf5 -> 245
Ungueltige Eingabe: 43
Ungueltige Eingabe: fd


Schau dir die Handbuchseiten zu sscanf(3) an...
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 04. Jan 2007 16:21   Titel:

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.
 
Benutzer-Profile anzeigen Private Nachricht senden

litschi
Gast





BeitragVerfasst am: 07. Jan 2007 19:28   Titel:

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;
}
[code]

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. Smile
[/code]
 

Lateralus
prolinux-forum-admin


Anmeldungsdatum: 05.05.2004
Beiträge: 1238

BeitragVerfasst am: 07. Jan 2007 23:20   Titel:

Du solltest den Block

Code:
printf("Geben Sie eine Zahl im Hexadezimalsystem ein: ");
scanf("%x", &zahl);


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.
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy