www.matheraum.de
Das Matheforum.
Das Matheforum des MatheRaum.

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenSchul-Informatik AlgorithmenDezimal in Binär
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Informatik • Physik • Technik • Biologie • Chemie
Forum "Schul-Informatik Algorithmen" - Dezimal in Binär
Dezimal in Binär < Algorithmen < Schule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Schul-Informatik Algorithmen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Dezimal in Binär: in C
Status: (Frage) beantwortet Status 
Datum: 22:42 Do 23.03.2006
Autor: MonoTon

Aufgabe
Das Programm soll eine Dezimalzahl einlesen und diese Zahl dann Binär wieder ausgeben. Als Erweiterung der normalen Dezimal->Binär-Umrechnung soll noch eine beliebige Basis zur Verfügung stehen und das Programm soll dann nach dem selben Schmema die Dezimalzahl nur eben mit der neuen Basis berechnen. Zwischendurch soll noch die Bitanzahl und als Zwischenschritt die verkehrte bitzahl ausgegeben werden.

Bin schön langsam am verzweifeln [mm] %-\ [/mm]
Mein Lösungsvorschlag, klappt aber leider nicht.

Borland C++ schiebt mir beim Ausführen eine Fehlermeldung die in etwa so aussieht
"Fehler: Access Violation at 0x403fe0: write of address 0x0"

Hier der Programmcode

/* BINÄR-Umrechnung (thu, mar 23th 2006 22:23) */

#include <stdio.h>
#include <conio.h>

void main()
{
char binarray[30];
int dez, r, l, i, imax, k, s, v;

//-----A1-----------------------Hier eine Dezimalzahl und eine Basis eingegeben.

   while(1)
     {

     printf("Basis: ");
     scanf("%c*%",s);
     printf("Bitte eine Dezimalzahl eingeben: ");
     scanf("%c*%",dez);

//-----A2-----Hier wird die Zahl auf die (noch) verkehrte Binärzahl umgewandelt.

        for(dez>0;dez=1;dez=dez/s)
        {
        for(i=0;i<=29;i++)
        {
        k=dez%s;
          if (k==1)
          binarray[i]=1;
          if (k==0)
          binarray[i]=0;
        }
        }

//-----A3----------------------------------------------Berechnung der Bitanzahl:

l=imax-1;
printf("Laenge des Bin-Strings imax = ", l);
printf("Das verkehrte Bitmuster: ", binarray);

//-----A4-------------------Hier wird mithilfe einer Hilfsvariablen v umgedreht.

        r=0;
        for(l=imax-1;l=0;l=l-1)
        {
        v=binarray[l];
          while(l=!0)
          {
            binarray[r]=v;
            r=r+1;
          }
        }

//-----A5-----------------------------------Hier wird die Zahl binär ausgegeben:

        printf(" [mm] \n [/mm] Das Bitmuster: ", binarray);

     }

}

        
Bezug
Dezimal in Binär: Rückfrage.
Status: (Frage) beantwortet Status 
Datum: 23:54 Do 23.03.2006
Autor: Dally

Aufgabe
Aufgabe
Das Programm soll eine Dezimalzahl einlesen und diese Zahl dann Binär wieder ausgeben.  


4 kurze Fragen hätte ich noch dazu.
Wenn klar ist das du eine Dezimalzahl in eine Binärzahl umwandeln willst,
was für eine Basis bzw. warum möchtest du das nochmal eine Basis eingegeben wird?

Und kann es sein das du dich bei einer der For-Schleifen vertan hast?
"for(dez>0;dez=1;dez=dez/s)"
Ich habe zugegebener Maßen schon lange nicht mehr programmiert aber dez>0 klingt mir für eine initialisierung etwas eigenartig.

"while(l=!0) "
Meinst du l ungleich 0?

Was macht folgende Schleife?
for(l=imax-1;l=0;l=l-1)
Wenn ich mich recht erinnere läuft eine For-Schleife bis die Bedingung mit false geprüft wird.
Wenn l=imax-1 eine positive Zahl ist, dann bricht doch die Schleife sofort ab. (Bitte sofort laut schreien wenn ich mich irren sollte!)


          while(l=!0)
          {
            binarray[r]=v;
            r=r+1;
          }
Wenn du den Schleifenzähler in der Schleife nicht veränderst dann läuft die Schleife solange bis du das Programm beendest oder dein Rechner abstürtzt. Außerdem würdest du auf die Art einen größerden Teil des Arrays
mit dem selben Wert(v) vollschreiben.


Ich weiß leider nicht mehr genau wie das mit der konvertierung von Datentypen war. Probleme könntest du wenn du Pech hast in dem Fall auch dadurch bekommen, das du int Werte in ein char Array schreibst und char Werte in eine int Variable.


        

Bezug
                
Bezug
Dezimal in Binär: Antwort
Status: (Antwort) fertig Status 
Datum: 06:32 Fr 24.03.2006
Autor: mathiash

Hallo und guten Morgen zusammen,


> Und kann es sein das du dich bei einer der For-Schleifen
> vertan hast?

Ja, genau, da müsste mindestens

for (dez=1; dez >0; dez=dez/s)

stehen. Ob das inhaltlich Sinn macht, sei damit noch nicht gesagt.

>  "for(dez>0;dez=1;dez=dez/s)"
>  Ich habe zugegebener Maßen schon lange nicht mehr
> programmiert aber dez>0 klingt mir für eine initialisierung
> etwas eigenartig.
>  "while(l=!0) "
>  Meinst du l ungleich 0?
>  
> Was macht folgende Schleife?
>  for(l=imax-1;l=0;l=l-1)

Die Schleife bricht wohl tatsächlich sofort ab, aber aus einem anderen Grund.

Du hättest zum Nulltest den Vergleichsoperator  == nehmen sollen:

for (l=imax -1;l==0;l=l-1)

oder halt, wenn die Schleife laufen soll, bis l == 0 ist:

for (l=imax-1;l != 0; l=l-1)

> Wenn ich mich recht erinnere läuft eine For-Schleife bis
> die Bedingung mit false geprüft wird.
>  Wenn l=imax-1 eine positive Zahl ist, dann bricht doch die
> Schleife sofort ab. (Bitte sofort laut schreien wenn ich
> mich irren sollte!)
>  
>

Jetzt kommt die Endlos-Whileschleife, in der das array binarray ueberschrieben wird:

> while(l=!0)
> {
> binarray[r]=v;
> r=r+1;
> }

Genau da passiert das, was den Programmabbruch mit besagter Fehlermeldung hervorruft.

> Wenn du den Schleifenzähler in der Schleife nicht
> veränderst dann läuft die Schleife solange bis du das
> Programm beendest oder dein Rechner abstürtzt. Außerdem
> würdest du auf die Art einen größerden Teil des Arrays
>  mit dem selben Wert(v) vollschreiben.
>  
>
> Ich weiß leider nicht mehr genau wie das mit der
> konvertierung von Datentypen war. Probleme könntest du wenn
> du Pech hast in dem Fall auch dadurch bekommen, das du int
> Werte in ein char Array schreibst und char Werte in eine
> int Variable.
>  
>
>
>  


Viele Grüße,

Mathias





Bezug
        
Bezug
Dezimal in Binär: Antwort
Status: (Antwort) fertig Status 
Datum: 06:33 Fr 24.03.2006
Autor: mathiash

Hallo und guten Morgen,

zur Antwort lies bitte die Antwort auf die Rückfrage von Dally.

Gruss,

Mathias

Bezug
                
Bezug
Dezimal in Binär: ok, aber...
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 20:42 Sa 25.03.2006
Autor: MonoTon

Aufgabe

Es sei ein Programm zu schreiben dass eine Dezimalzahl in eine Binärzahl umwandelt.
Des weiteren soll eine beliebige Basis für das dezimal-binär Umrechnungsschema verwendet werden.

Danke erstmal an Dally & Mathias für die Hilfe!

ich hab das soweit verstanden und mir dabei öfters auf die zunge gebissen...
das waren zeimlich blöde fehler, habe alles(?) ausgebessert und den umkehrschleifen-salat
soweit in ordnung gebracht dass man leichter sagen kann was da drin passiert...
aber, zu allem überfluss möchte dass programm immernoch nicht funktionieren.
ich bekomme noch immer den selben fehler!

ausgebessert hab ich:
-)dass charactervariablen nicht mit int-variablen gemischt werden.
-)die (unabsichtliche) endlosschleife, welche scheinbar den absturz ausgelöst hat, entfernt.
-)unnötig komplizierte for-schleifen durch while-schleifen ersetzt, damit das ganze überschaubarer wird.


/* BINÄR-Umrechnung (sa, mar 25th 2006 19:54) */

#include <stdio.h>
#include <conio.h>

void main()
{
char binarray[30],v;
int dez, r, l, i, imax, k, s;

//-----A1-----------------------Hier eine Dezimalzahl und eine Basis eingegeben.

   while(1)
     {

     printf("Basis: ");
     scanf("%c*%",s);
     printf("Bitte eine Dezimalzahl eingeben: ");
     scanf("%c*%",dez);

//-----A2-----Hier wird die Zahl auf die (noch) verkehrte Binärzahl umgewandelt.

     i=0;
        while(dez>=1)
        {
        dez=dez/s;
        for(i=0;i<=29;i++)
        {
        k=dez%s;
          if (k==1)
          binarray[i]=1;
          if (k==0)
          binarray[i]=0;
        }
        }

//-----A3-------------------------------------------------Ausgabe der Bitanzahl:
//---------------Der i-Wert wird aus der vorangegangen for-Schleife herangezogen
//----------------------------------------------und gibt den maximalen Index an.

imax=i;
printf("Laenge des Bin-Strings imax = ", imax);
printf("Das verkehrte Bitmuster: ", binarray);

//-----A4-------------------Hier wird mithilfe einer Hilfsvariablen v umgedreht.

        r=0;
        l=imax;
        while(l>=1)
        {
        l=l-1;
        v=binarray[l];
        binarray[r]=v;
        r=r+1;
        }

//-----A5-----------------------------------Hier wird die Zahl binär ausgegeben:

        [mm] printf("\nDas [/mm] Bitmuster: ", binarray);

     }

}

Bezug
                        
Bezug
Dezimal in Binär: was denn?
Status: (Antwort) fertig Status 
Datum: 21:21 So 26.03.2006
Autor: informix

Hallo MonoTon,

was willst du uns jetzt mit diesem neuen Beitrag sagen/fragen?

Liefert das Programm jetzt die gewünschten Ergebnisse?

Gruß informix


Bezug
                                
Bezug
Dezimal in Binär: funkt nicht
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 08:07 Do 30.03.2006
Autor: MonoTon

hi,

also ich wollte sagen dass das programm immer noch nicht funktioniert und ich den fehler nicht finde...
kann nicht bitte nochmal irgendwer einen blick drauf werfen?

mfG
mono

Bezug
                                        
Bezug
Dezimal in Binär: Rückfrage
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:39 Do 30.03.2006
Autor: Dally

Na ja,

erklähr mal etwas genauer wie du dir das Programm überhaupt vorstellst.
Du willst eine Dezimalzahl in eine Binärzahl umwandeln.
Dezimal zur Basis 10 und Binär zur Basis 2.
Was machst du genau mit der Basis die der Bewnutzer noch eingeben muss?

Mfg

Dally

Bezug
                                                
Bezug
Dezimal in Binär: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:11 Do 30.03.2006
Autor: MonoTon

ich hab ganz oben im zweig die aufgabenstellung editiert...
damit nicht leute die den beitrag ansehen erst mittendrin die vollständige aufgabenstellung zu lesen bekommen.

sorry dass ich das nicht gleich so hingetipselt hab!

10x
monoton

Bezug
                        
Bezug
Dezimal in Binär: Tipp
Status: (Antwort) fertig Status 
Datum: 14:28 Do 30.03.2006
Autor: Dally

Wenn ich die Aufgabenstellung richtig verstanden habe sollst du erst eine Dezimalzahl einlesen, diese dann Binär ausgeben und zusätzlich die eigegebene Dezimalzahl noch in ein anderes Stellewertsystem umrechnen, dessen Basis der Benutzer eingibt.
In dem Fall darst du die Basis die der Benutzer eingibt, z.B. 8 (Oktal) aber nicht für die Binärumrechnung benutzen.

Mfg

Dally

Bezug
                                
Bezug
Dezimal in Binär: stimmt!
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:10 Do 30.03.2006
Autor: MonoTon

für oktal würde die umrechnung auf diese weise doch auch noch funktionieren, bei hex aber würde es aber nicht mehr klappen da man ja dann für 10-16 a-f augeben muss. ich müsste den code hierfür dann noch ensprechend ändern! aber für basen von 1-9 müsste es doch eigentlich funktionieren, wenn nicht dieser blöde fehler ständig auftauchen würde...

wie dem auch sei, ich werd mich nächste woche wieder genauer damit auseinandersetzen weil ich nun für ein paar tests lernen muss..
zb für die morgige mathe schularbeit... sollte ich bald mal zum lernen anfangen.. :)

danke jedenfalls mal für die hilfe!
bis dann, adieu einstweilen!

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Schul-Informatik Algorithmen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheforum.net
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]