Peršokti į turinį

C++ uždavinys


elmxd

Recommended Posts

Sveiki, reiktų pagalbos su uždaviniu iš C++. Reikia rasti didžiausią sekos narį, kuris nėra sveiko skaičiaus kvadratas. Jei tokio skaičiaus nėra, išvesti "Nėra". Gal kas galėtų papildyti sprendimą?

image.thumb.png.5735a8ea71ad5b11d2addcf6c48167f8.png

#include <iostream>
#include <fstream>
using namespace std;
int narys(int n, int a[]);
int main()
{
int n, a[10], max;
cin>>n;
 
for (int i = 0; i<n; i++){
cin>>a[i];
}
 
max = narys (n, a);
 
cout<<max<<endl;
 
}
 
int narys(int n, int a[]){
int max = -1000009;
for (int i=0; i<n; i++){
if (a[i] > max)
max = a[i];
return max;
}
Redaguota , nario elmxd
Nuoroda į komentarą
Dalintis per kitą puslapį

#include <cmath>

int calculateData(int data[], int dataSize) {
    int max = -1;
    for (int i = 0; i < dataSize; i++) {
        double result = sqrt(data[i]);
        if (result != (int)result && data[i] > max) {
            max = data[i];
        }
    }
    return max;
}

Štai mano sprendimui funkcija, kaip aš spręsčiau. Tikriausiai yra būdas, kaip nepanaudojus šaknies funkcijos išspręst šitą uždavinį, bet šitas sprendimas irgi puikiai tinka. Šita funkcija grąžina reikšmę -1, jeigu skaičius nebuvo surastas (grąžinam -1 nes minusinių rezultatų grąžinti neįmanoma, nes matematinė šaknis netraukia minusinių skaičių).

BxFSnIN.png

Vertėtų taip pat paminėti, kad jeigu į šaknies funkciją C/C++ įsistatai minusinę reikšmę, C/C++ grąžina į kintamajį NaN (angl. Not An Integer) reikšmę, kurią palyginus su bet kokiu skaičiumi nelygybės ženklais, tau išmes false reikšmę, tai yra viena iš priežasčių, dėl ko netikrinu skaičiaus ar jis minusinis masyve prieš kodą ciklo viduje.

 

Redaguota , nario Dovias
Nuoroda į komentarą
Dalintis per kitą puslapį

2021-11-25 01:01, Dovias parašė:
#include <cmath>

int calculateData(int data[], int dataSize) {
    int max = -1;
    for (int i = 0; i < dataSize; i++) {
        double result = sqrt(data[i]);
        if (result != (int)result && data[i] > max) {
            max = data[i];
        }
    }
    return max;
}

Štai mano sprendimui funkcija, kaip aš spręsčiau. Tikriausiai yra būdas, kaip nepanaudojus šaknies funkcijos išspręst šitą uždavinį, bet šitas sprendimas irgi puikiai tinka. Šita funkcija grąžina reikšmę -1, jeigu skaičius nebuvo surastas (grąžinam -1 nes minusinių rezultatų grąžinti neįmanoma, nes matematinė šaknis netraukia minusinių skaičių).

BxFSnIN.png

Vertėtų taip pat paminėti, kad jeigu į šaknies funkciją C/C++ įsistatai minusinę reikšmę, C/C++ grąžina į kintamajį NaN (angl. Not An Integer) reikšmę, kurią palyginus su bet kokiu skaičiumi nelygybės ženklais, tau išmes false reikšmę, tai yra viena iš priežasčių, dėl ko netikrinu skaičiaus ar jis minusinis masyve prieš kodą ciklo viduje.

 

Gal galėtum patarti kaip padaryti, kad nesuradus skaičiaus funkcija grąžintų "Ne", o ne -1?

Nuoroda į komentarą
Dalintis per kitą puslapį

prieš 3 valandas(-ų), elmxd parašė:

Gal galėtum patarti kaip padaryti, kad nesuradus skaičiaus funkcija grąžintų "Ne", o ne -1?

Tai pridėk vieną if statement.

if(max==-1){
  return "Ne";
}
else{
  return "Taip"
  }

tik reiktų paminėti, kad šitą patikrinimą reikia daryti ne funkcijoje, o pačioje programoje arba kitoje funkcijoje. Jei darysi programoje tai gali vietuj return iškarto spausdinti į konsolę

Redaguota , nario Th3Pijus
Nuoroda į komentarą
Dalintis per kitą puslapį

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti Å¡ioje temoje...

×   Ä®klijuotas tekstas turi teksto formatavimą.   PaÅ¡alinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiÅ¡kai įterpta.   Ä®terpti nuorodą paprastai

×   JÅ«sų ankstesnis praneÅ¡imas buvo atkurtas.   IÅ¡valyti redaktorių

×   JÅ«s negalite įkelti nuotraukas tiesiogiai.Ä®kelkite arba įdėkite nuotraukas iÅ¡ URL.

  • Å iame puslapyje narÅ¡o:   0 nariai

    Nėra registruotų narių peržiūrinčių šį forumą.


×
×
  • Sukurti naują...