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?
É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;
}
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.
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();
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?
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?
"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ó.
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!