Programavimas. Klausimai del užduočių, kurių nesuprantu C++.
leunicornsea (+17)
valdas3Ar tikrai tik toks uždavinys? Nėra taip, kad pvz. įveda kiek skaičių taip reikia sudėti? Nes dabar paprasčiausiai galima parašyti viena priskyrimo sakinį: y = 1/x + 1/2/x + 1/3/x + 1/4/x; Bet kaip suprantu, tai dar yra kažkokių reikalavimų? Ką norėjai pasakyti kalbėdamas apie trupmenas? Manau geriau būtų tiesiog parašyti visą uždavinio formuluotę.
j) 1. reikia padaryti su paprograme :)
valdas3 (+1276)
Na tai tiesiog parašyk funkciją, kuri gražina tai ką parašiau prieš tai. Jei kažkodėl labai nori ciklą naudoti (nors man atrodo, kad ši užduotis labiau skirta išmokti rašyti reiškinius, o ne ciklus), tai jis atrodytų taip:
double y = 0; for (int i = 1; i <= 4; i++){ y += 1 / i / x; }
matrix (+104)
Gal yra suprantančių masyvus? Gal kas padėtų išspręsti viena uzdavini?
Uždavinys: Duoti du masyvai A(n) ir B(t). Masyvo A teigiamų elementų aritmetinį vidurkį užrašyti Masyvo B gale, o masyvo B teigiamų elementų aritmetinį vidurkį užrašyti masyvo A gale. Spausdinti masyvus prieš ir po veiksmų.
Mano rašliava: #include <fcntl.h> #include <io.h> #include <iostream> #include <locale> #include <fstream> const char fs[]= "duom.txt"; const char fr[]= "rez.txt"; const int Cmax = 100; void Skaityti(const char fs[], int A[], int B[], int &n, int &t); void Rasyti(const char fr[], int A[], int B[], int n, int t);
using namespace std; int main()
{ int n; int A[Cmax]; int B[Cmax]; Skaityti(fs, A, B, n, t); Rasyti(fr, A, B, n, t);
return 0; } void Skaityti(const char fs[], int A[], int B[], int &n); { ifstream sk(fs); sk >> n; for (int i=0; i < n; i++) sk>>A[i];
sk >> t; for (int i=0; i < n; i++) sk>>B[i]; sk.close(); }
void Rasyti(const char fr[], int A[], int B[], int n, int t);
pakeista prieš 12 m
Mantis3728 (+366)
Na, manau jei bent butum pabandes vidurkius rasti ar pns, butu galima dar pabandyti padeti ir paaiskinti ir taip tau padeti pataisyti programa.Taciau kadangi programos pas tave kaip ir nera, tai bandyk nagrineti pavyzdi(jeigu supratau ko nori ta uzduotis), jei kas neaisku - rasyk.
#include <fcntl.h> #include <io.h> #include <iostream> #include <locale> #include <fstream> const char fs[]= "duom.txt"; const char fr[]= "rez.txt"; const int Cmax = 100; void Skaityti(const char fs[], int A[], int B[], int &n, int &t); void Rasyti(const char fr[], int A[], int B[], int n, int t);
using namespace std; int main()
{ int n, t; int A[Cmax]; int B[Cmax]; Skaityti(fs, A, B, n, t); Rasyti(fr, A, B, n, t);
return 0; } void Skaityti(const char fs[], int A[], int B[], int &n, int &t) { ifstream sk(fs); sk >> n; for (int i=0; i < n; i++) sk>>A[i];
sk >> t; for (int i=0; i < n; i++) sk>>B[i];
//Dabar galima rasti aritmetini vidurki int suma(0), skaicius(0), temp; for(int i = 0; i < n; i++) { if(A[i] > 0) { suma += A[i]; skaicius++; } } temp = suma / skaicius; suma = 0; skaicius = 0;
void Rasyti(const char fr[], int A[], int B[], int n, int t) { ofstream kk(fr); for(int i = 0; i < n; i++) kk << A[i] << " ";
kk << '\n';
for(int i = 0; i < t; i++) kk << B[i] << " "; }
matrix (+104)
Tik šiais mokslo metais pradejau mokintis C++ ir dar savarankiskai, tai išvis sunku. Ypač masyvu tik truputi suprantu, ne daugiau. Ir kaip man per šiuos metus C++ visa kursa ismokti, zodziu, neimanoma misija... Gal galetum man pataisyti sio uzdavinio sprendima?
valdas3 (+1276)
matrixTik šiais mokslo metais pradejau mokintis C++ ir dar savarankiskai, tai išvis sunku. Ypač masyvu tik truputi suprantu, ne daugiau. Ir kaip man per šiuos metus C++ visa kursa ismokti, zodziu, neimanoma misija...
O kaip tu mokaisi? Klausiu, nes atrodo, jog tai darytum blogai. Kam spręsti uždavinius su masyvais, jei beveik neturi jokio suvokimo kas tai yra? Nebūtų protingiau prieš tai susirasti kokioje knygoje skyrių apie masyvus ir jį visą perskaityti? Ar tutorialą internete? O misija yra labai įmanoma, pats panašioje situacijoje buvau. Tereikia mokytis.
Mantis3728 (+366)
As sakyciau labiau reikia programuoti, o ne mokytis.As pats per daug teorijos neskaiciau, bet programuoti tikrai sugebu, egzamino uzduotys kaip sakant vanduo.Nesunkiai ikandu ir olimpiadianius.
Beto tai ka papaisiau is esmes kaip ir yra pataisyta tavo programa, nes as lyg ir nieko neistryniau, tik pridejau.Aisku gal tai yra neteisinga, gal suklydau, nes skubedamas padariau, net netikrinau?Patikrink
Bet zinoma, kaip sake Valdas, reiktu pasiskaityti apie masyvus, nors pacia esme.
Jei tik ko nesuprasi, rasyk cia
pakeista prieš 12 m
matrix (+104)
Mantis3728As sakyciau labiau reikia programuoti, o ne mokytis.As pats per daug teorijos neskaiciau, bet programuoti tikrai sugebu, egzamino uzduotys kaip sakant vanduo.Nesunkiai ikandu ir olimpiadianius.
Beto tai ka papaisiau is esmes kaip ir yra pataisyta tavo programa, nes as lyg ir nieko neistryniau, tik pridejau.Aisku gal tai yra neteisinga, gal suklydau, nes skubedamas padariau, net netikrinau?Patikrink
Bet zinoma, kaip sake Valdas, reiktu pasiskaityti apie masyvus, nors pacia esme.
Jei tik ko nesuprasi, rasyk cia
Masyvą aš suprantu, kaip atmintį, kurioje laikomi visos elementų reikšmės.
Tokie dalykai "void Skaityti" ar "void Rasyti" yra funkcijos, ar ne? Kurios suskaido uzdavini i kelias dalis, bet kaip suprantu ju galima ir netaikyti sprendziant masyvus. Tik va nesuprantu, vieno dalyko kam tas ženklas prirašomas "&"? void Skaityti(const char fs[], int A[], int B[], int n, int &t) Tipo jis reiskia, kaip nuoroda ar kaip?
Dabar grįžtant prie pačio uždavinio. Uždavinys: Duoti du masyvai A(n) ir B(t). Masyvo A teigiamų elementų aritmetinį vidurkį užrašyti Masyvo B gale, o masyvo B teigiamų elementų aritmetinį vidurkį užrašyti masyvo A gale. Spausdinti masyvus prieš ir po veiksmų.
matrix (+104)
Uždavinio sprendimas: #include <fcntl.h> #include <io.h> #include <iostream> #include <locale> #include <fstream> const char fs[]= "duom.txt"; const char fr[]= "rez.txt"; const int Cmax = 100; void Skaityti(const char fs[], int A[], int B[], int &n, int &t); void Rasyti(const char fr[], int A[], int B[], int n, int t);
using namespace std; int main()
{ int n, t; int A[Cmax]; int B[Cmax]; Skaityti(fs, A, B, n, t); Rasyti(fr, A, B, n, t);
return 0; } void Skaityti(const char fs[], int A[], int B[], int &n, int &t) { ifstream sk(fs); sk >> n; for (int i=0; i < n; i++) sk>>A[i];
sk >> t; for (int i=0; i < n; i++) sk>>B[i];
//Dabar galima rasti aritmetini vidurki int suma(0), skaicius(0), temp; for(int i = 0; i < n; i++) { if(A[i] > 0) { suma += A[i]; skaicius++; } } temp = suma / skaicius; suma = 0; skaicius = 0;