myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Zahlen zählen in c++

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 25.01.11, 14:02   #1
BastiR1991
Anfänger
 
Registriert seit: Mar 2010
Beiträge: 23
Bedankt: 1
BastiR1991 ist noch neu hier! | 0 Respekt Punkte
Standard Zahlen zählen in c++

hi leute,
habe heute ein Programm geschrieben welches mir die Gesamtanzahl der Zahlen und der Anzahl größer 1000 angeben soll. Nur leider habe ich irgendwo einen Fehler. Ich benutze Microsoft Visual Studio. Hoffe es kann mir irgendjemand dabei helfen.

Hier der geschriebene Code:

#include <iostream>

using namespace std;


int CountNumbers (int Number) {

int AllNumbers=0;
bool Break=false;

while (Break == false) {
if (Number != -1)
AllNumbers++;
else
Break == true;
}
return AllNumbers;
}

int CountNumbersOver1000 (int Number) {
int NumbersOver1000 = 0;
bool Break = false;

while (Break == false) {
if (Number != -1) {
if (Number > 1000)
NumbersOver1000++;
}
else
Break == true;
}
return NumbersOver1000;
}


int main () {

int NumIn=0;
cout << "Geben Sie eine Zahl ein: ";
cin >> NumIn;

cout << "Anzahl Zahlen = "<< CountNumbers (NumIn) << endl;
cout << "Anzahl Zahlen Größer 1000 = "<< CountNumbersOver1000 (NumIn) << endl;

}

Vielen Dank schon Mal im Voraus!
BastiR1991 ist offline   Mit Zitat antworten
Ungelesen 25.01.11, 14:34   #2
pokefreak
Süßstoffbehältnis
 
Benutzerbild von pokefreak
 
Registriert seit: Feb 2009
Beiträge: 9
Bedankt: 6
pokefreak ist noch neu hier! | 0 Respekt Punkte
Standard

Ich habe zwar noch nie in C++ programmiert, nur in Java und C, aber ich würde dir gerne helfen, was genau ist der Fehler(Fehlermeldung, Falsche ausgabe) ?
Auserdem verstehe ich nicht was dein Programm bewirken soll du ließt eine Zahl ein und willst überprüfen ob die über oder unter 1000 liegt?
Deine in deiner Beschreibung sagst du ja das er Zahlen(Mehrzahl) zählt.

MfG
Pokefreak
__________________
pokefreak ist offline   Mit Zitat antworten
Ungelesen 25.01.11, 15:19   #3
BastiR1991
Anfänger
 
Registriert seit: Mar 2010
Beiträge: 23
Bedankt: 1
BastiR1991 ist noch neu hier! | 0 Respekt Punkte
Standard

mein Fehler liegt bei der Ausgabe. Es kommt nur: "Geben Sie eine Zahl ein:" und dann passiert nichts mehr.
Zum Programm: Man soll beliebig viele Zahlen eingeben können, bei der Eingabe von -1 erfolgt ein Abbruch. Es wird überprüft, wieviele Zahlen und wieviele Zahlen über 1000 eingegeben wurden.
BastiR1991 ist offline   Mit Zitat antworten
Ungelesen 25.01.11, 15:30   #4
pokefreak
Süßstoffbehältnis
 
Benutzerbild von pokefreak
 
Registriert seit: Feb 2009
Beiträge: 9
Bedankt: 6
pokefreak ist noch neu hier! | 0 Respekt Punkte
Standard

Hier bitte so wie du es haben wolltest.
Code:
#include <iostream>
using namespace std;


int CountNumbers (int Number[], int lang) {

int kleinT=0;
for(int n=0;n<lang;n++)
{
    if (Number[n] >0  &&  Number[n]<1000)
    kleinT++;
}

return kleinT;
}

int main () {
int n=0;
int NumIn[20];
int laenge=0,kleinerT=0;

cout << "Geben Sie  Zahlen ein, abbruch mit -1: ";
while(true)
{
    cin >> NumIn[n];
    if(NumIn[n]==-1)
    break;
    n++;
}


laenge=n;
cout << "Anzahl Zahlen = "<< laenge<< endl;

kleinerT=CountNumbers (NumIn,laenge);
laenge=laenge-kleinerT;

cout << "Anzahl Zahlen Groesser 1000 = "<< laenge << endl;
cout << "Anzahl Zahlen Kleiner 1000 = "<< kleinerT << endl;
}
Dein Programm ist leider vom grundsatz her total Falsch.
Wenn du alles erklärt haben willst, auch warum deins nicht funktionieren können wir uns gerne mal per Skype oder TS unterhalten^^
Juhu, mein erstes c++ Programm

Edit: es gibt auch einen weg ohne Arrays, denke das wäre einfacher für dich, bei bedarf kann ich diesen auch noch benutzen
__________________
pokefreak ist offline   Mit Zitat antworten
Ungelesen 25.01.11, 15:33   #5
Zeodos
Mitglied
 
Registriert seit: May 2010
Beiträge: 426
Bedankt: 224
Zeodos ist noch neu hier! | 0 Respekt Punkte
Standard

ich kenn mich mit c++ auch nicht so toll aus... trotzdem versuch ichs mal...

wozu benutzt du die while-schleife? die bringt dich in diesem fall doch sicher in eine endlosschleife und dein programm rennt sich tot.

du übergibst der funktion ja ein integer. wenn dieser wert aber != -1 ist, fängt deine schleife an deine zählvariable hochzuzählen.. und zwar bis der wert der der funktion übergeben wird =-1 ist. das passiert aber nicht, weil du dir funktion ja nicht mit -1 aufgerufen hast.

deine funktion müsste in etwa so aussehen:

int i=0;
int i1k=0;

public void count(int nummer)
{
if(nummer >= 1000) i1k++;
i++;
}

als ausgebe in deinem text, gibst du nicht die funktion zurück, sondern kannst direkt die variablen i bzw i1k benutzen.

die schreife musst du dann um die eingabeaufforderung der nummer legen, damit das programm nicht nach der ersten eingegebenen zahl beendet wird.

der code oben benutzt übrings die java-syntax, da ich die c++ nicht mehr genau kenne
Zeodos ist offline   Mit Zitat antworten
Ungelesen 25.01.11, 15:39   #6
Zeodos
Mitglied
 
Registriert seit: May 2010
Beiträge: 426
Bedankt: 224
Zeodos ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von pokefreak Beitrag anzeigen
Hier bitte so wie du es haben wolltest.

Dein Programm ist leider vom grundsatz her total Falsch.
Wenn du alles erklärt haben willst, auch warum deins nicht funktionieren können wir uns gerne mal per Skype oder TS unterhalten^^
Juhu, mein erstes c++ Programm
das problem bei deinem code ist aber, dass du bereits vorher wissen musst, wie viele zahlen maximal eingegeben werden, weil du ja den array vorher eine länge zuweisen musst
Zeodos ist offline   Mit Zitat antworten
Ungelesen 25.01.11, 15:54   #7
pokefreak
Süßstoffbehältnis
 
Benutzerbild von pokefreak
 
Registriert seit: Feb 2009
Beiträge: 9
Bedankt: 6
pokefreak ist noch neu hier! | 0 Respekt Punkte
Standard

Ja, Stimmt aber da er die Zahlen per hand eingibt und nicht Speichert, nach beendigung des Programms,
dachte ich das 255 reichen^^
Auserdem is das nur eine Lösung, es geht auch ohne Arrays, wie gesagt.

MfG
Pokefreak
__________________
pokefreak ist offline   Mit Zitat antworten
Ungelesen 25.01.11, 17:05   #8
BastiR1991
Anfänger
 
Registriert seit: Mar 2010
Beiträge: 23
Bedankt: 1
BastiR1991 ist noch neu hier! | 0 Respekt Punkte
Standard

okay, danke, das reicht mir schon. Ich habe Felder bereits öfters verwendet.
BastiR1991 ist offline   Mit Zitat antworten
Ungelesen 25.01.11, 19:52   #9
wmosebach
Ist öfter hier
 
Registriert seit: Jan 2010
Beiträge: 189
Bedankt: 117
wmosebach ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von BastiR1991 Beitrag anzeigen
Code:
#include <iostream>

using namespace std;

//diese Funktion wird immer 1 zurückgeben (Ausnahme bei -1), AllNumbers muss global definiert sein, oder in die Funktion übergeben werden
int CountNumbers (int Number) {

	int AllNumbers=0;
	bool Break=false; 

	while (Break == false) {
		if (Number != -1)
			AllNumbers++;
		else 
			Break == true;
	}
	return AllNumbers;
}
//gleiches Problem wie bei der Funktion davor
int CountNumbersOver1000 (int Number) {
	int NumbersOver1000 = 0;
	bool Break = false;

	while (Break == false) {
		if (Number != -1) {
			if (Number > 1000) 
				NumbersOver1000++;
		}
		else
			Break == true;
	}
	return NumbersOver1000;
}


int main () {

	int NumIn=0;
	cout << "Geben Sie eine Zahl ein: ";
	cin >> NumIn;
		
	cout << "Anzahl Zahlen = "<< CountNumbers (NumIn) << endl;
	cout << "Anzahl Zahlen Größer 1000 = "<< CountNumbersOver1000 (NumIn) << endl;

}
Kommentare im Code.

Wieso nutzt du eigentlich While-Schleifen, wenn du sowieso nur eine Zahl kontrolierst?
-Counter in der main definieren und an die Funktionen übergeben.
-whileschleien löschen

Spaß haben



Zitat:
Zitat von pokefreak Beitrag anzeigen
Dein Programm ist leider vom grundsatz her total Falsch.
Wenn du alles erklärt haben willst, auch warum deins nicht funktionieren können wir uns gerne mal per Skype oder TS unterhalten^^
Juhu, mein erstes c++ Programm

Edit: es gibt auch einen weg ohne Arrays, denke das wäre einfacher für dich, bei bedarf kann ich diesen auch noch benutzen
Das Programm ist nicht grundsätzlich falsch, nur ein paar Fehler sind halt drin...
Problem bei deinem Ansatz:
Fehlermeldung wegen Bad memory access. (Feld wird auf 20 Stellen begrenzt, werden 21 eingegeben --> buff)
Lösung:
Dynamisches anpassen des Arrays wenn es droht "überzulaufen"
__________________
Make the world a prettier place - get a bikini wax!
wmosebach ist offline   Mit Zitat antworten
Ungelesen 26.01.11, 20:23   #10
rinnocka
Anfänger
 
Registriert seit: Nov 2010
Beiträge: 1
Bedankt: 0
rinnocka ist noch neu hier! | 0 Respekt Punkte
Standard

#include <iostream>

using namespace std;
int AllNumbers=0;
int NumbersOver1000 = 0;

void CountNumbers (int Number) {

if (Number != -1)
AllNumbers++;


}
void CountNumbersOver1000 (int Number) {
if (Number != -1) {
if (Number > 1000)
NumbersOver1000++;
}

}


int main () {


int NumIn=0;
while(NumIn!=-1){
cout << "Geben Sie eine Zahl ein: (-1 bricht das Programm ab)";
cin >> NumIn;
CountNumbers (NumIn);
CountNumbersOver1000 (NumIn);
}
cout << "Anzahl Zahlen = "<< AllNumbers << endl;
cout << "Anzahl Zahlen Größer 1000 = "<< NumbersOver1000<< endl;

}

Das ist eine Lösung, ohne Array zu verwenden
rinnocka ist offline   Mit Zitat antworten
Ungelesen 27.01.11, 19:44   #11
lolhund123
Anfänger
 
Registriert seit: Jan 2011
Beiträge: 1
Bedankt: 0
lolhund123 ist noch neu hier! | 0 Respekt Punkte
Standard

Mhh..
C++ ist meine schwäche sorry.
C# aber profi.
lolhund123 ist offline   Mit Zitat antworten
Ungelesen 29.01.11, 08:45   #12
IsiPrimax
Anfänger
 
Registriert seit: Apr 2009
Beiträge: 4
Bedankt: 2
IsiPrimax ist noch neu hier! | 0 Respekt Punkte
Standard

Wenn du C# Profi bist, solltest du dich mit Arrays, Schleifen usw... auch auskennen, das ist dort auch vorhanden.
IsiPrimax ist offline   Mit Zitat antworten
Ungelesen 31.01.11, 09:18   #13
flex83
Anfänger
 
Registriert seit: Aug 2010
Beiträge: 10
Bedankt: 3
flex83 ist noch neu hier! | 0 Respekt Punkte
Standard

Hallo! Könnt ihr mir bitte bei der Aufgabe helfen. Habe morgen Prüfung, bin aber nicht gut in Programmierung. Danke.

Die Kreiszahl pi soll mit einem Programmnach dem Monte-Carlo-Verfahren
abgeschätzt werden. Hierzu werden 1000 zufällige Punkte (x,y) mit x und
y-Werten zwischen 0 und 1 erzeugt. Die Kreiszahl pi ergibt sich aus der
Anzahl n der Punkte innerhalb des Einheitskreises nach der Formel
pi=4*n/1000
Schreiben Sie ein C++-Programm, das die Zahl pi nach diesem Verfahren
berechnet und auf dem Bildschirmausgibt.
Hinweise:
- x=(double)rand()/(double)RAND_MAX erzeugt einen double-Zufallswert x zwischen 0 und 1.
- Binden Sie für rand() und RAND_MAX die Header-Datei stdlib.h ein.
- Ein Punkt (x,y) liegt innerhalb des Einheitskreises, wenn x^2 +y^2 < 1 gilt.

Habe da schon was zusammengebastelt :-) Grausam.

#include <cstdlib>
#include <iostream>
#include <stdlib.h>
#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{
srand(time(0));

double x,y,p,z,pi,n;
for (int i=1; i<=1000; i++){
x=(double)rand()/(double)RAND_MAX;
y=(double)rand()/(double)RAND_MAX;
z=pow(x,2)+pow(y,2);
if (z<1){
p=ceil(z);

//cout << z << " "<< p << endl;
}
}
pi=4*n/100;
cout << pi << endl;

}

system("PAUSE");
return EXIT_SUCCESS;
}
flex83 ist offline   Mit Zitat antworten
Ungelesen 31.01.11, 09:23   #14
flex83
Anfänger
 
Registriert seit: Aug 2010
Beiträge: 10
Bedankt: 3
flex83 ist noch neu hier! | 0 Respekt Punkte
Standard

^
^
^
Wie komm ich auf die richtige Anzahl von x^2+y^2<0 ?
flex83 ist offline   Mit Zitat antworten
Ungelesen 31.01.11, 13:02   #15
flex83
Anfänger
 
Registriert seit: Aug 2010
Beiträge: 10
Bedankt: 3
flex83 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von flex83 Beitrag anzeigen
Hallo! Könnt ihr mir bitte bei der Aufgabe helfen. Habe morgen Prüfung, bin aber nicht gut in Programmierung. Danke.

Die Kreiszahl pi soll mit einem Programmnach dem Monte-Carlo-Verfahren
abgeschätzt werden. Hierzu werden 1000 zufällige Punkte (x,y) mit x und
y-Werten zwischen 0 und 1 erzeugt. Die Kreiszahl pi ergibt sich aus der
Anzahl n der Punkte innerhalb des Einheitskreises nach der Formel
pi=4*n/1000
Schreiben Sie ein C++-Programm, das die Zahl pi nach diesem Verfahren
berechnet und auf dem Bildschirmausgibt.
Hinweise:
- x=(double)rand()/(double)RAND_MAX erzeugt einen double-Zufallswert x zwischen 0 und 1.
- Binden Sie für rand() und RAND_MAX die Header-Datei stdlib.h ein.
- Ein Punkt (x,y) liegt innerhalb des Einheitskreises, wenn x^2 +y^2 < 1 gilt.

Habe da schon was zusammengebastelt :-) Grausam.

#include <cstdlib>
#include <iostream>
#include <stdlib.h>
#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{
srand(time(0));

double x,y,p,z,pi,n;
for (int i=1; i<=1000; i++){
x=(double)rand()/(double)RAND_MAX;
y=(double)rand()/(double)RAND_MAX;
z=pow(x,2)+pow(y,2);
if (z<1){
p=ceil(z);

//cout << z << " "<< p << endl;
}
}
pi=4*n/100;
cout << pi << endl;

}

system("PAUSE");
return EXIT_SUCCESS;
}
Hat sich erledigt. Danke.
flex83 ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 Uhr.


Sitemap

().