Kezdőoldal » Számítástechnika » Programozás » Jól működik ez a legkisebb...

Jól működik ez a legkisebb közös többszörös kiszámítóprogram és hogyha statikusan deklarálom azt a bool változót akkor az azt jelenti, hogy nem fog megszűnni a forciklus befejezte után?

Figyelt kérdés

És azt is jelenti,hogy nem fog újrainicializálódni amikor megint rákerül a sor?


//main.cpp

#include<iostream>

using std::cout;

using std::cin;

using std::endl;

typedef unsigned short ushort;

typedef unsigned long ulong;


int main(void){

ushort const maxNumber = 11000;

ulong number1[maxNumber], number2[maxNumber], legkissebbKozosTobbszoros;

cout << "number1: ";

cin >> *number1;

cout << "number2: ";

cin >> *number2;


for(ushort i = 1, temp1 = *number1, temp2 = *number2; i < maxNumber; ++i){

temp1 = number1[i] = *number1 + temp1;

temp2 = number2[i] = *number2 + temp2;


for(ushort j = 0; j <= i; ++j){

static bool x = false;

for(ushort k = 0; k <= i; ++k)

if(number1[k] == number2[j]){

legkissebbKozosTobbszoros = number1[k];

x = true;

break;

}

if(x)

break;

}

}


cout << "[" << *number1 << "][" << *number2 << "]: " << legkissebbKozosTobbszoros;


return 0;

}


2012. nov. 28. 23:32
1 2
 1/11 A kérdező kommentje:
És csinálok benne valami butaságot?
2012. nov. 28. 23:33
 2/11 _Jessy_ ***** válasza:
89%
Anyám borogass! Sok butaságot csinálsz benne!
2012. nov. 28. 23:58
Hasznos számodra ez a válasz?
 3/11 A kérdező kommentje:

Azért megmondhatnád hogy mit.

Mert az azért nagyon idegesítő,hogy valaki megmondja,hogy butaságot csinálok benne aztán meg cseszik segíteni.

Legalább arra a bool típusos kérdésre válaszolhatnál.

2012. nov. 29. 00:03
 4/11 _Jessy_ ***** válasza:

Ha lefut és kiszámolja, akkor jól működik, de ennek ellenére eléggé rossz a megközelítésed. Ez sem szép, C#-ban van, de tanulmányozd kicsit, aztán rájössz, hogy mik a hibák

long a, b, c, lkk = 0;

Console.WriteLine("LKK meghatározása.\nAdja meg az első, majd második számot!");

if (!long.TryParse(Console.ReadLine(), out a) || a <= 0 || !long.TryParse(Console.ReadLine(), out b) || b <= 0)

{

Console.WriteLine("Rossz adat!");

return;

}

if (a < b)

{

c = a;

a = b;

b = c;

}

for (int i = 1; lkk == 0; ++i)

{

if ((c = a * i) < 0)

{

Console.WriteLine("lkk nem hgatározható meg!");

return;

}

if (c % b == 0)

{

lkk = c;

}

}

Console.WriteLine("A legkisebb közös többszörös: {0}", lkk);

Console.ReadKey();

2012. nov. 29. 00:13
Hasznos számodra ez a válasz?
 5/11 _Jessy_ ***** válasza:
A 'static'-ra visszatérve. Nem! Nem azt jelenti. A program befejezésével minden általa lefoglalt memória felszabadul.
2012. nov. 29. 00:19
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:

Tudom a program befejeztével még szép,hogy felszabadul.

Én a ciklusról beszéltem a forciklusban definiált adattagok lokálisak ami azt jelenti,hogyha véget ér a ciklus folyamat akkor a benne levő lokálisok megszűnnek létezni.

A statikus adattagok is megszűnnek benne létezni?

Azt tudom,hogy függvényben nem.Ezért megszámlálható vele,hogy hányszor lett pl meghívva.


És ha a forciklus teljesen lefutott akkor a statikus életben marad benne?És ugye a statikusok nem definiálódnak újra.Igaz ez?

2012. nov. 29. 00:32
 7/11 anonim ***** válasza:

Lehet ilyet "cin >> *number1;"?

Hogy írsz be klaviatúráról tömböt?

Ez mi a halál "temp1 = number1[i] = *number1 + temp1;"?


Valaki mondja meg, mióta divat for ciklusban mondjuk i++ helyett ++i-t írni és főként mi az értelme ennek?

2012. nov. 29. 01:16
Hasznos számodra ez a válasz?
 8/11 A kérdező kommentje:

"Lehet ilyet "cin >> *number1;"?

Hogy írsz be klaviatúráról tömböt?"


itt:cin >> *number1;

A tömb első elemét amin jelenleg egy memóriaszemét tárolódik felülírom azt egy saját magam kiválasztott értékkel.

-----------

"Ez mi a halál "temp1 = number1[i] = *number1 + temp1;"?"

A jobb oldalon levő kifejezés eredménynét megkapja a number1[i] tömbelem és a temp1 változó.

------------

"Valaki mondja meg, mióta divat for ciklusban mondjuk i++ helyett ++i-t írni és főként mi az értelme ennek?"


Ebben az esetben teljesen mindegy hogy hogyan írod.Egyébként az ++i prefix ez pedig i++ utó.

2012. nov. 29. 01:32
 9/11 A kérdező kommentje:

Előző vagyok:

s = ++i prefix először megnöveli az i értéket és utánna i-t hozzárendeli s hez.Így az s és az i értéke is ugyanaz lesz.


s = i++;

Ebben az esetben pedig először hozzárendeljük i értékét az s hez és csak utána növeljük meg az i értékét.

2012. nov. 29. 02:48
 10/11 iostream ***** válasza:
#7 Annyira bírom, amikor olyan okosít bele, aki a kérdezőnél is kevésbé van tisztában a dolgokkal. Tényleg, zseniális. A kérdező nagyon jól megválaszolta a dolgokat, szóval én már ki sem oktatlak, csak annyi, hogy a ++i sokkal jobb, mint az i++, gondolkodj rajta, hogy miért.
2012. nov. 29. 09:41
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!