Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Dėl C++ programos, kuri išrenka tinkamą arbūzą


Aleksiuxx

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2687 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki, vėl aš čia, norėčiau paprašyti švenčių proga pagalbos ;D:


Turiu tokį uždavinėlį:post-24779-0-03975400-1482506677_thumb.png

Tikrai nebežinau ką jau ir darytį :/:

#include <iomanip>
#include <fstream>
#include <cmath>
#include <iostream>
using namespace std;
const char CDfv[] = "arbuzaid.txt";
const char CRfv[] = "arbuzair.txt";
int CMax=50;
//----------------------------
void Skaityti(int A[], int&n);
void spausdinti(int A[], int n);
int  didziausiasvidurkis (int A[], int n);
int kiekskaiciu(int A[], int n);
//---------------
int main ()
{
    int B[CMax]; int n;
    int max;
    ofstream fr;
    Skaityti (B, n);
    kiekskaiciu(B,n);
    spausdinti (B,n);
    fr.open(CRfv, ios::app);
    max =didziausiasvidurkis(B,n);
    fr.close ();
    return 0;
}
    void Skaityti(int A[], int&n)
{
    ifstream fd(fv);
    fd >>n;
    for (int i=0; i<n; i++)
        fd >> A[i];
    fd.close ();
}
    void spausdinti (int A[], int n)
{


}
int kiekskaiciu(int A[], int n)
{
    int kiek=0;
    for (int i=0; i<n; i++)
        if  (A[i]==0)
            kiek=kiek+1;
    return kiek;
}
 int didziausiasvidurkis(int A[], int n)
 {
     int max =A[0];
     for (int i=1; i<n; i++)
     if (A[i] >max)
     max =A[i];
     return max;
 }

 

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

1 funkcija: apsibrėži du kintamuosius: suma ir vidurkis, suki ciklą per visus narius, suskaičiuoji jų sumą. Tada sumą padalini iš narių skaičiaus ir gauni vidurkį.

2 funkcija: apsibrėži kintamuosius min = abs(pirmas_narys-vidurkis), min_index = 0, suki ciklą per visus narius (pradedant nuo antro) ir tikrini, ar abs(einamasis_narys-vidurkis) < min, jei taip, pakeiti min ir min_index į einamojo nario reikiamas reikšmes. Prasukęs ciklą turi atsakymą. Abs reikalingas tam, kad mažiausiai nuo vidurkio nutolęs narys gali būti arba didesnis už vidurkį, arba mažesnis, todėl reikalingas skirtumo modulis.

 

Pabandyk pasidaryti, jei nesigaus, galėsiu kažką greit sumesti.

  • Teigiamai 1
Nuoroda į komentarą
Dalintis per kitą puslapį

1 funkcija: apsibrėži du kintamuosius: suma ir vidurkis, suki ciklą per visus narius, suskaičiuoji jų sumą. Tada sumą padalini iš narių skaičiaus ir gauni vidurkį.

2 funkcija: apsibrėži kintamuosius min = abs(pirmas_narys-vidurkis), min_index = 0, suki ciklą per visus narius (pradedant nuo antro) ir tikrini, ar abs(einamasis_narys-vidurkis) < min, jei taip, pakeiti min ir min_index į einamojo nario reikiamas reikšmes. Prasukęs ciklą turi atsakymą. Abs reikalingas tam, kad mažiausiai nuo vidurkio nutolęs narys gali būti arba didesnis už vidurkį, arba mažesnis, todėl reikalingas skirtumo modulis.

 

Pabandyk pasidaryti, jei nesigaus, galėsiu kažką greit sumesti.

Apie šita pirma funkcija kalbi?:

 int skaiciavimas(int A[], int n)
 {
    int suma=0;
    int kiek=0;
    for (int i=0; i<n; i++)
        if (A[i]>0)
    {
            suma=suma+A[i];
            kiek=kiek+1;
    }
        if (kiek>0)
            return suma/kiek;
    return 0;
 }
  • Teigiamai 1
Nuoroda į komentarą
Dalintis per kitą puslapį

// ===== Preprocesoriaus direktyvos ===== //

// Include'iname bibliotekas. Jų reikėjo būtent šioje programoje, nes...
// Dirbome su įvesties/išvesties stream'ais (cin/cout).
#include <iostream>

// Dirbome su failais.
#include <fstream>

// Naudojome assert(), kad crash'intume programą, jei failų nėra.
// Juk failų vardai yra hard code'inti.
#include <assert.h>

// Reikėjo naudoti funkciją abs(), kuri randa skaičiaus modulį.
#include <cmath>

// Reikėjo naudoti funkciją setprecision(), kad realieji skaičiai būtų išvesti tam tikru tikslumu.
#include <iomanip>

// Define'iname maksimalų masyvo elementų skaičių.
#define ARR_MAX 50

// =====                           =====  //


// Naudojame standartinį std namespace'ą.
// Be jo reikėtų rašyti std::cout, std::cin, std::endl ir pnš.
using namespace std;

// Hard code'inti failų vardai. Tai statiniai konstantiniai string'ai (char'ų masyvai):
static const char CDFV[] = "arbuzaid.txt";
static const char CRFV[] = "arbuzair.txt";

// Funkcija, kuri į failą įrašys rezultatą, kurį apskaičiavo algoritmas.
void rasykRezultata(int tinkamasArbuzas, double arbuzuMases[]) {
    ofstream fout(CRFV);

    // Jei tokio failo nėra, tada crash'iname programą.
    assert(fout.is_open());

    // Naudojame fixed, kad po kablelio VISADA (net jeigu ir sk. yra sveikojo sk. formos) būtų tam tikras skaičius skaitmenų.
    // Naudojame setprecision(2), kad po kablelio būtų išvedami du skaitmenys.
    fout << tinkamasArbuzas + 1 << " " << fixed << setprecision(2) << arbuzuMases[tinkamasArbuzas] << endl;
    fout.close();
}

// Funkcija, kuri skaičiuoja, kuris arbūzas yra tinkamas.
// Ši funkcija grąžina tinkamo arbūzo numerį masyve.
int gaukTinkamaArbuza(int n, double arbuzuMases[]) {
    // Inicializuotas arbūzų masių sumos kintamasis.
    double arbuzuMasiuSuma = 0;
    // Inicializuotas arbūzų masių sumos vidurkio kintamasis.
    double arbuzuMasiuVidurkis = 0;
    // Inicializuojame arbūzo masės kintamąjį, priskirdami, kad...
    // Iš pradžių tinkamo arbūzo masė yra pirmasis arbūzas.
    double tinkamoArbuzoMase = arbuzuMases[0];
    // Inicializuotas tinkamo arbūzo numerio masyve kintamasis.
    int tinkamasArbuzas = 0;

    for (int i = 0; i < n; i++) {
        arbuzuMasiuSuma = arbuzuMasiuSuma + arbuzuMases[i];
    }
    arbuzuMasiuVidurkis = arbuzuMasiuSuma / n;

    for (int i = 0; i < n; i++) {
        if (abs(arbuzuMases[i] - arbuzuMasiuVidurkis) < abs(tinkamoArbuzoMase - arbuzuMasiuVidurkis)) {
            tinkamoArbuzoMase = arbuzuMases[i];
            tinkamasArbuzas = i;
        }
    }

    return tinkamasArbuzas;
}

// Funkcija, kuri nuskaito duomenis iš failo.
void skaitykDuomenis(int &n, double arbuzuMases[]) {
    ifstream fin(CDFV);

    // Jei tokio failo nėra, tada crash'iname programą.
    assert(fin.is_open());

    fin >> n;
    for (int i = 0; i < n; i++) {
        fin >> arbuzuMases[i];
    }
}

int main(int argc, char** argv) {
    // Arbūzų skaičiaus kintamasis.
    int n;
    // Arbūzų masių (realių skaičių) masyvas, kurio dydis yra ARR_MAX (define'inome preprocesoriui).
    double arbuzuMases[ARR_MAX];
    // Tinkamo arbūzo numerio masyve kintamasis.
    int tinkamasArbuzas;

    // Nustatome lietuvišką lokalę.
    setlocale(LC_ALL, "Lithuanian");

    skaitykDuomenis(n, arbuzuMases);
    tinkamasArbuzas = gaukTinkamaArbuza(n, arbuzuMases);
    rasykRezultata(tinkamasArbuzas, arbuzuMases);

    return 0;
}

Tikiuosi, kad pravers :beers:.

Redaguota , nario Tautedorus
  • Teigiamai 3
Nuoroda į komentarą
Dalintis per kitą puslapį

(redaguota)
On 12/23/2016 at 19:19, Tautedorus parašė:

// ===== Preprocesoriaus direktyvos ===== //

// Include'iname bibliotekas. Jų reikėjo būtent šioje programoje, nes...
// Dirbome su įvesties/išvesties stream'ais (cin/cout).
#include <iostream>

// Dirbome su failais.
#include <fstream>

// Naudojome assert(), kad crash'intume programą, jei failų nėra.
// Juk failų vardai yra hard code'inti.
#include <assert.h>

// Reikėjo naudoti funkciją abs(), kuri randa skaičiaus modulį.
#include <cmath>

// Reikėjo naudoti funkciją setprecision(), kad realieji skaičiai būtų išvesti tam tikru tikslumu.
#include <iomanip>

// Define'iname maksimalų masyvo elementų skaičių.
#define ARR_MAX 50

// =====                           =====  //


// Naudojame standartinį std namespace'ą.
// Be jo reikėtų rašyti std::cout, std::cin, std::endl ir pnš.
using namespace std;

// Hard code'inti failų vardai. Tai statiniai konstantiniai string'ai (char'ų masyvai):
static const char CDFV[] = "arbuzaid.txt";
static const char CRFV[] = "arbuzair.txt";

// Funkcija, kuri į failą įrašys rezultatą, kurį apskaičiavo algoritmas.
void rasykRezultata(int tinkamasArbuzas, double arbuzuMases[]) {
    ofstream fout(CRFV);

    // Jei tokio failo nėra, tada crash'iname programą.
    assert(fout.is_open());

    // Naudojame fixed, kad po kablelio VISADA (net jeigu ir sk. yra sveikojo sk. formos) būtų tam tikras skaičius skaitmenų.
    // Naudojame setprecision(2), kad po kablelio būtų išvedami du skaitmenys.
    fout << tinkamasArbuzas + 1 << " " << fixed << setprecision(2) << arbuzuMases[tinkamasArbuzas] << endl;
    fout.close();
}

// Funkcija, kuri skaičiuoja, kuris arbūzas yra tinkamas.
// Ši funkcija grąžina tinkamo arbūzo numerį masyve.
int gaukTinkamaArbuza(int n, double arbuzuMases[]) {
    // Inicializuotas arbūzų masių sumos kintamasis.
    double arbuzuMasiuSuma = 0;
    // Inicializuotas arbūzų masių sumos vidurkio kintamasis.
    double arbuzuMasiuVidurkis = 0;
    // Inicializuojame arbūzo masės kintamąjį, priskirdami, kad...
    // Iš pradžių tinkamo arbūzo masė yra pirmasis arbūzas.
    double tinkamoArbuzoMase = arbuzuMases[0];
    // Inicializuotas tinkamo arbūzo numerio masyve kintamasis.
    int tinkamasArbuzas = 0;

    for (int i = 0; i < n; i++) {
        arbuzuMasiuSuma = arbuzuMasiuSuma + arbuzuMases[i];
    }
    arbuzuMasiuVidurkis = arbuzuMasiuSuma / n;

    for (int i = 0; i < n; i++) {
        if (abs(arbuzuMases[i] - arbuzuMasiuVidurkis) < abs(tinkamoArbuzoMase - arbuzuMasiuVidurkis)) {
            tinkamoArbuzoMase = arbuzuMases[i];
            tinkamasArbuzas = i;
        }
    }

    return tinkamasArbuzas;
}

// Funkcija, kuri nuskaito duomenis iš failo.
void skaitykDuomenis(int &n, double arbuzuMases[]) {
    ifstream fin(CDFV);

    // Jei tokio failo nėra, tada crash'iname programą.
    assert(fin.is_open());

    fin >> n;
    for (int i = 0; i < n; i++) {
        fin >> arbuzuMases[i];
    }
}

int main(int argc, char** argv) {
    // Arbūzų skaičiaus kintamasis.
    int n;
    // Arbūzų masių (realių skaičių) masyvas, kurio dydis yra ARR_MAX (define'inome preprocesoriui).
    double arbuzuMases[ARR_MAX];
    // Tinkamo arbūzo numerio masyve kintamasis.
    int tinkamasArbuzas;

    // Nustatome lietuvišką lokalę.
    setlocale(LC_ALL, "Lithuanian");

    skaitykDuomenis(n, arbuzuMases);
    tinkamasArbuzas = gaukTinkamaArbuza(n, arbuzuMases);
    rasykRezultata(tinkamasArbuzas, arbuzuMases);

    return 0;
}

Tikiuosi, kad pravers :beers:.

Va čia tai kalėdinė dovana :o !!! DĖKUIIIIIIIII  :nice:  :beers:

Redaguota , nario Tautedorus
  • Teigiamai 3
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2687 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.

Skelbimai


×
×
  • Sukurti naują...