Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Dringend, schnelle Hilfe benötigt

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 < [ 3 ] [ 4 ]
010
16.11.2009, 00:21 Uhr
Bruder Leif
dances with systems
(Operator)


Jetzt pruefst Du gar nicht mehr, ob die Ziffer 7 enthalten ist. Die Funktion ist zwar da, wird aber nirgends aufgerufen. Wenn Du die Zeile

C++:
        if (x%7==0){


in

C++:
        if (x%7==0 || enthaeltSieben(x)){


aenderst, sollte alles klappen.

Und wenn alles funktioniert, gib es trotzdem noch ab, in der Regel lassen die Assis mit sich reden, wenn man von Kommilitonen im Regen stehen gelassen wird, besonders wenn man es dann trotzdem noch versucht. Naechstes mal aber etwas frueher drum kuemmern, was die Partner so treiben
--
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
011
16.11.2009, 00:25 Uhr
Bruder Leif
dances with systems
(Operator)


...und nicht vergessen, die Funktion enthaeltSieben natuerlich VOR main einfuegen, sonst meckert der Compiler, weil eine Funktion aufgerufen werden soll, die er (noch) nicht kennt. Google mal nach Vorwaertsreferenzen bzw. Unterschied "Definition" vs. "Deklaration", das wird vermutlich eines Eurer naechsten Themen...
--
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
012
16.11.2009, 00:25 Uhr
0xdeadbeef
Gott
(Operator)


So finge ich das an:

C++:
#include <iostream>

bool contains_digit(unsigned haystack, unsigned needle) {
  while(haystack != 0) {
    if(haystack % 10 == needle) {
      return true;
    }
    haystack /= 10;
  }

  return false;
}

bool skippable(unsigned x) {
  return x % 7 == 0 || contains_digit(x, 7);
}

int main() {
  unsigned x;

  std::cout << "Bitte geben Sie eine Zahl ein: " << std::flush;
  std::cin >> x;

  std::cout << "Die Zahl " << x << " muss "
            << (skippable(x) ? "" : "nicht ") << "übersprungen werden."
            << std::endl;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
16.11.2009, 00:27 Uhr
Pamina



ähm was sind denn das für striche ??? I I

wenn ich das so eingebe kommt fehler

error C3861: "enthaeltSieben": Bezeichner wurde nicht gefunden

und jetzt noch abgeben geht nicht, weil das ne online abgabe war , die seite zum hochladen ist zu.

ja klar nächstes mal mach ich es gleich alleine, warum kann man sich eigenltich nur auf sich selbst verlassen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
16.11.2009, 00:27 Uhr
Bruder Leif
dances with systems
(Operator)



Zitat von 0xdeadbeef:
So finge ich das an:


Da erkennt man den C++-Liebhaber Bei mir in C runtergeschraubt:


C++:
#include <stdio.h>

int enthaeltSieben(int number)
{
    while (number != 0) {
        if (number % 10 == 7) return 1; /* 7 gefunden! */
        number /= 10; /* Restliche Ziffern pruefen */
    }
    return 0;
}

int main()
{
    int number;

    printf("Bitte Zahl eingeben: ");
    scanf("%d", &number);

    if (number % 7 == 0) {
        printf("%d ist durch 7 teilbar und wird uebersprungen.\n", number);
        return 0;
    }

    if (enthaeltSieben(number)) {
        printf("%d enthaelt die Ziffer 7 und wird uebersprungen.\n", number);
        return 0;
    }

    printf("%d ist weder durch 7 teilbar noch enthaelt es eine 7.\n", number);
    return 0;
}


--
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
015
16.11.2009, 00:31 Uhr
Bruder Leif
dances with systems
(Operator)



Zitat von Pamina:
ähm was sind denn das für striche ??? I I


OK, das war dann wohl doch etwas zu weit ins Voraus geschossen. Die beiden "Pipes" stehen fuer ein "logisches oder", d.h. es wird geprueft, ob entweder der Teil links davon oder rechts davon ungleich 0 ist.
Der Compilerfehler kommt von der "zu spaet" deklarierten Funktion, s. Post 011 weiter oben.


Zitat von Pamina:
und jetzt noch abgeben geht nicht, weil das ne online abgabe war , die seite zum hochladen ist zu.


Drat. Das ging bei mir damals noch per eMail an den Assi...


Zitat von Pamina:

ja klar nächstes mal mach ich es gleich alleine, warum kann man sich eigenltich nur auf sich selbst verlassen...


...eines der vielen *scheinbar* fachfremden Dinge, die man im Studium lernt
--
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
016
16.11.2009, 00:33 Uhr
Bruder Leif
dances with systems
(Operator)


...jetzt haben wir sogar schon Beefy in den Thread gelockt Sag mal, bist Du mit Kibo verwandt?
--
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
017
16.11.2009, 00:36 Uhr
Pamina



mh bei deinem kommt bei mir ne warnung mit



Code:
1>c:\dokumente und einstellungen\pamina\eigene dateien\visual studio 2008\projects\ha1 5\1ha5\5aufg.cpp(17) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\programme\microsoft visual studio 9.0\vc\include\stdio.h(306): Siehe Deklaration von 'scanf'






oh man ist das kompliziert, ich mein wenn mans kann macht programmieren bestimmt spaß aber so....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
16.11.2009, 00:48 Uhr
Bruder Leif
dances with systems
(Operator)



Zitat von Pamina:
mh bei deinem kommt bei mir ne warnung


Jepp, das ist das neue Microsoft'sche "wir halten jetzt mal die armen Programmierer am Haendchen". Hilfe, ein Pointer, da koennte ja was kaputt gehen. Mal im Ernst: scanf wird gerne falsch eingesetzt und ist in professioneller Software nicht empfehlenswert, aber ein direktes Auslesen von std::cin in eine int-Variable ist auch nicht viel besser. scanf fuer Strings ist ein absolutes no-no, bei Zahlen bin ich da schon toleranter.


Zitat von Pamina:
oh man ist das kompliziert, ich mein wenn mans kann macht programmieren bestimmt spaß aber so....


Definitiv Ich wuerde C++ nicht gerade als Sprache fuer Anfaenger empfehlen (und fuer Fortgeschrittene auch nicht, siehe manch andere Posts von mir), da gibt es geeignetere Sprachen. Wenn man gerade erst mit dem Programmieren anfaengt, will man schnell was tolles sehen, und schnelle Erfolgserlebnisse gibt es bei anderen Sprachen eher.

Mal am Rande: Echte Freaks wie auch Beefy erkennt man daran, dass noch so (fuer uns) einfache Probleme korrekt umgesetzt werden. contains_digit sucht nicht starr nach der 7, wie bei mir, sondern ist konfigurierbar. ABER: Tsk tsk, keine Templates? /scnr

Das gleiche Programm mal zum Vergleich in anderen Sprachen (bin gerade gut drauf):

Haskell

Code:
import IO

bewertung number
    | (read number) `mod` 7 == 0 = "Durch 7 teilbar!"
    | [] /= (dropWhile ('7'/=) number) = "Enthaelt die Ziffer 7!"
    | otherwise = "Keine Affinitaet zur 7 festgestellt."

main = hSetBuffering stdout LineBuffering
    >> putStrLn "Bitte Zahl eingeben: "
    >> getLine
    >>= putStrLn . bewertung



Perl

Code:
print "Bitte Zahl eingeben: ";
$number = <>;
chomp $number;
print "$number wird " . ($number % 7 == 0 || $number =~ /7/ ? '' : 'nicht ') . "uebersprungen.\n";



Tcl:

Code:
puts "Bitte Zahl eingeben: "
gets stdin number

if {$number % 7 == 0} {
    puts "$number ist durch 7 teilbar und wird uebersprungen."
    exit 0
}

if {[regexp 7 $number]} {
    puts "$number enthaelt die Ziffer 7 und wird uebersprungen."
    exit 0
}

puts "$number ist weder durch 7 teilbar noch enthaelt es eine 7."



Gerade Tcl wuerde ich Einsteigern empfehlen, weil recht leicht zu lernen, lesbar, schnelle Erfolgserlebnisse. Aber wenn's halt C++ sein muss
--
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
019
16.11.2009, 00:55 Uhr
Pamina



oh das sieht wirklich einfacher aus,
tja ich konnts mir nicht wirklich aussuchen welche sprache ich lerne muss den kurs machen....
versteh prinzipiell sowieso nicht warum ich denn kurs für biotechnologie machen muss...

nochmal ne frage (also nur falls ich dich nicht zu sehr nerve)

wenn ich nach dem debuggen dein programm starte, dann kommt "geben sie eine zahl ein" die geb ich ein und dann beendet sich das programm ohne was weiteres auszugeben,
woran liegt das jetzt schon wieder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ]     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


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: