Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » probleme beim ausführen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
23.11.2004, 17:14 Uhr
~versucher
Gast


habe versucht ein programm zu erstellen jedoch sind da sehr viele fehler.auf die ich nicht komme.da ich das programm auch nicht ausführen konnte habe ich auch sicher in den funkionen etwas programmiert was ich nicht wollte. kann sich das vielleicht jemand anschauen und mir helfen

bei der eingabe soll es nur eine positive zahl einlesen
bei der berechnung soll es die zahl in felder speichern
bei der ausgabe soll es die zahl umdrehen und die 0 überspringen und die zahl dann ausgeben


C++:
#include <stdio.h>
#include <stdlib.h>

#define len 20

long read_pos();
long dec2_digit(long n, long digits[], long len);
void print_digits(long digits[], long len);

int main()
{
  long zahl, berechnung, ausgabe;
  char c;
  
  
  do
  {

  zahl= read_pos();
  berechnung= dec2_digit(n, digits[], len);
  ausgabe= print_digits(long digits[], long len);
  
  printf("soll das ganze nocheinmal durchgeführt werden");
  scanf("%c",&c);
  getchar();

  }while (c=='y' || c=='Y');
  system("PAUSE");    
  return 0;
}

long read_pos() //Eingabe
{
    long n;
    printf("geben sie eine zahl n>=0 ein:   ");
    scanf("%ld", &n);
    printf("\n");
    while (n<0)
    {
        printf("zahl ist ungueltig\n");
        printf("geben sie eine zahl n>=0 ein:   ");
        scanf("%ld", &n);
        printf("\n");
    }
    return n;
}

long dec2_digit(long n, long digits[], long len) //Berechnung
{
    long i;
    for (i=0; i<(len-1) && (n!=0); i++)
    {
        digits[i]=n%10;
        n=n/10;
    }
}

void print_digits(long digits[], long len) // Ausgabe
{  
   while (digits[len-1]==0)
   {
       len=len-1
   }    
   while (len==0)
   {
   printf("%1ld",digits[len]);
   len=len-1
   }
              
}



danke


Bearbeitung von typecast:
cpp-Tags gesetzt

Dieser Post wurde am 23.11.2004 um 17:31 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.11.2004, 17:44 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Es ist unklar, was Du mit "len" meinst: Mal ist es eine lokale Variable (Parameter), mal ein #define...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.11.2004, 17:50 Uhr
~versucher
Gast


len soll die maximale länge der felder sein.es sind zwanzig.die zahl muß ja verkehrt ausgelesen werden bei der ausgabe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.11.2004, 19:31 Uhr
~versucher
Gast


auf einige fehler bin ich gekommen. es sind zwar weniger aber trotzdem funktioniert es noch nicht. dieser code ist in c geschrieben.

C++:
#include <stdio.h>
#include <stdlib.h>

#define len 20

long read_pos();
long dec2_digit(long n, long digits[]);
void print_digits(long digits[]);

int main()
{
  long zahl, berechnung, ausgabe;
  char c;
  
  
  do
  {

  zahl= read_pos();
  berechnung= dec2_digit(n, digits[]);
  ausgabe= print_digits(digits[]);
  
  printf("soll das ganze nocheinmal durchgeführt werden");
  scanf("%c",&c);
  getchar();

  }while (c=='y' || c=='Y');
  system("PAUSE");    
  return 0;
}


long read_pos() //Eingabe
{
    long n;
    printf("geben sie eine zahl n>=0 ein:   ");
    scanf("%ld", &n);
    printf("\n");
    while (n<0)
    {
        printf("zahl ist ungueltig\n");
        printf("geben sie eine zahl n>=0 ein:   ");
        scanf("%ld", &n);
        printf("\n");
    }
    return n;
}

long dec2_digit(long n, long digits[]) //Berechnung
{
    long i;
    for (i=0; (i<(len-1)) && (n!=0); i++)
    {
        digits[i]=n%10;
        n=n/10;
    }
}

void print_digits(long digits[]) // Ausgabe
{  
   while (digits[len-1]==0)
   {
       len=len-1;
   }    
   while (len==0)
   {
   printf("%1ld",digits[len]);
   len=len-1;
   }
              
}




Bearbeitung von Windalf:

Bitte cpp-tags verwenden


Dieser Post wurde am 23.11.2004 um 19:39 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.11.2004, 19:41 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


gehe ich richtig in der annahme das du einfach nur die einzelnen bits der intern dargestellten zahl ausgeben willst?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.11.2004, 19:55 Uhr
~versucher
Gast


ich glaube dass du richtig liegst. aufjedenfall wenn man eine dezimalzahl eingibt sollte auch dieselbe dezimalzahl rauskommen.ob es mit hex funktioniert habe ich mir noch nicht überlegt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.11.2004, 20:53 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von ~versucher:
.

C++:


#define len 20

....


void print_digits(long digits[]) // Ausgabe
{  
   while (digits[len-1]==0)
   {
       len=len-1;
   }    
   while (len==0)
   {
   printf("%1ld",digits[len]);
   len=len-1;
   }
              
}






len = len -1 ist Nonsens.Da meckert der Compiler doch sicherlich dass er nen l-Wert haben möchte.
Wenn der Präprozessor deine len Konstante ersetzt hat,steht da 20 = 20-1......

while (len==0) wird zu while (20==0) usw. usw.

Und weiter oben:

C++:
berechnung= dec2_digit(n, digits[], len);


Wo zauberst du denn n her?
Was der "Parameter" digits[] darstellen soll kann ich nicht nachvollziehen .

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.11.2004, 21:15 Uhr
~versucher
Gast


die codes kann man sehr schwer lesen. kann man das irgendwie verdeutlichen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.11.2004, 21:29 Uhr
~versucher
Gast


n ist in der funktion eingabe definiert.
die formel lautet n=a+ a*10^1+a*10^2 usw. und digits soll die a herausfiltern bzw in digits sind halt die werte gespeichert. und dass es dann die richtige zahl ausgibt mussen die felder verkehrt ausgegeben werden. die nullen die dann vorne stehen sollen gelöscht werden.
ich habe jetzt len mit 20 definiert aber wie kann ich das programmieren dass es immer um ein feld zurückzählt sodaß die nullen nicht angezeigt werden
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
23.11.2004, 23:45 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

ich glaube dass du richtig liegst. aufjedenfall wenn man eine dezimalzahl eingibt sollte auch dieselbe dezimalzahl rauskommen.ob es mit hex funktioniert habe ich mir noch nicht überlegt


vielleicht hilft dir dann das hier
www.fun-soft.de/showtopic.php?threadid=9264
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: