You are not logged in.

  • Login

1

Monday, December 11th 2006, 3:32pm

Float -> int problem (noob-frage <<)

hi leutz
bin neu hier, und kenn mich auch noch net so wirklich mit C(++) aus
und jetzt hab ich gedacht, weil wir gerade parabeln und der gleichen zeug in der schule machen, mach ich mal nen simples prog, das mir ne parabel zeigt (ohne grafik)

C Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
 
int main()
{
	int step;
	cin >> step;
	int a,b,c;
	float i,j;
	int x[21][21];
	for(i=0;i<=19;i=i+step)
	{
		for(j=-10;j<=9;j=j+step)
		{
			x[int(i)][int(j+10)] = 0;
			if(i == j*j)
			{
				x[int(i)][int(j+10)] = 1;
			}
		}
	}
	for(i=0;i<=19;i++)
	{
		for(j=0;j<=19;j++)
		{
			if(x[int(i)][int(j)] == 1)
			{
				cout << " #";
			}
			else
			{
				cout << " .";
			}
		}
		cout << endl;
	} 
}


mit dem wert am anfang (step, also die schrittgrüße, nach die der suchen soll) = 1 gehtz wunderbar...

wenn ich jetzt aber z.B 2 eingeb kommen wirre zahlen raus...
bei 0.5 wiederum seh ich gar nix mehr...

ich weiß, das es iwo nen ganz simpler fehler is...
nur ich komm nich drauf ><

schonmal danke, fals mir jmd helfen "will" x3

-pocky-[/coderwiki]

2

Monday, December 11th 2006, 5:08pm

Ich habs mal ausprobiert...
Also bei mir gibts mit der 2 keine Probleme... ergebnis stimmt ^^

Wenn du step = 0.5 setzt wird 0.5 in einen Integer gecastet und somit fällt die Kommastelle weg. Also haste im Endeffekt step = 0 geschreiben und damit ne Endlosschleife gebaut.

3

Monday, December 11th 2006, 9:06pm

moment...
*denk*
also heißt das wenn ich int(var) nich nur die abgerundete variable ausgegeben wird, sondern das die ganze variable gerundet wird?!
*angst*

4

Monday, December 11th 2006, 10:31pm

also ich hab die variable step anstat int als float declariert - aber des hat auch nix gebracht... bei 1 gabs ne schöne normalparabel - aber bei 2 sowas wieschiffe versenken ^^ lauter # :D

aber die idee is gut - wollt sowas auch schonmal machen aber mir hat die zeit gefehlt...

wär auch happy wenn jemand da n bug findet un weiß wie man den fixxt


mfg JeSt

5

Wednesday, December 13th 2006, 6:20pm

Quoted from ""pocky""

moment...
*denk*
also heißt das wenn ich int(var) nich nur die abgerundete variable ausgegeben wird, sondern das die ganze variable gerundet wird?!
*angst*


Nein.
Da step vom Typ int ist, wird beim Einlesen, wenn du 0.5 eintippst, kurzerhand alles hinterm Punkt weggeschmissen und step ist nun 0.

Und zum "Schiffe versenken" ^^:
Bei mir sahs wunderbar aus, weil Visual Studio offenbar das x-Array mit lauter Nullen initialisiert. Klar macht das net jeder Compiler. Der Fehler bei dir ist, dass du nur bei den Feldern entscheidest, ob 0 oder 1 rein soll, die du auch wirklich abtastest. Wenn du step = 2 setzt gibt es also Felder in deinem array, die du nie berührst. Die bleiben dann eben auf dem Wert stehen, mit dem sie ürsprünglich initialisiert wurden. Und was das für Werte sind ist mehr oder weniger zufällig ;)

Füge einfach folgende Zeile nach int x[21][21]; ein

C Quellcode

1
for (i=0; i<441; i++) x[0][i]=0;

6

Wednesday, December 13th 2006, 7:20pm

ich hab auch eiun parabel prog geschrieben - von dir inspiriert ^^
aber meins geht leider noch net gescheit... macht mir aber i-wie mehr sinn als deins - des hab ich i-wie nicht gecheckt...

kannst ja mal nach meinem gucken

JeSt

7

Wednesday, December 13th 2006, 9:30pm

Quoted from ""die_hoernse""


Füge einfach folgende Zeile nach int x[21][21]; ein

C Quellcode

1
for (i=0; i<441; i++) x[0][i]=0;


habsch gemacht, und jetzt gehtz bei 1 und 2...
aber beim rest net *gar nix mehr check* :oops:

8

Thursday, December 14th 2006, 12:14pm

Logisch, weil:
Nehmen wir z.b. step=3...

er beginnt bei i=0
testet
j=-10 -> i == j*j -> falsch
j=-7 -> i == j*j -> falsch
...
j=-1 ...
j=2 ...
...

da er nie j=0 testet, wird für i=0 nix gefunden...
dann kommen i=3, i=6 -> keine quadratzahlen

für i=9 müsste an j=3 ein # gemacht werden. da j aner nur die werte -10, -7, -4, -1, 2, 5, 8 annimmt wird j=3 net getestet...

usw ^^

9

Saturday, December 16th 2006, 1:10pm

ok, sry ich hab die frage vllt etwas blöde gestellt ^^"""
eigtlich wollte ich den wert NUR kleiner machen, weil ich erhofft hatten, das ich dann mehr # sehe...

ich hoffe ihr wisst, wie ichs mein...
weil im mom sind ja ziemlich groß lücken dazwischen...

Similar threads

Social bookmarks