Programavimas. Klausimai del užduočių, kurių nesuprantu C++.
valdas3 (+1276)
Patarčiau pasiimti vadovėlį ar paieškoti kokio paaiškinimo apie funkcijas(turbūt paprasčiau paimti ir nuo pradžių mokytis, daug laiko neužims) internete, nes manau, kad nelabai įsivaizduoji ką darai. O čia rašyti pamokos apie funkcijas nėra prasmės, nes 1) tai jau yra padaryta kitur, 2) jis nebūtų išbaigtas ir po to vėl darytum panašias klaidas. Tad susirask laiko ir normaliai pasimokyk. Beje, kas dėl pačios programos idėjos(algoritmo), tai ji nėra gera. Kas bus, jei n=123? n=4513? Niekur neparašyta, kad n<100.
laimonas1367 (+7)
leunicornseaDangoraižis. Naujajame dangoraižyje yra n kabinetų, sunumeruotų nuo 1 iki n. Prie kiekvieno kabineto durų reikia prikalti lenteles su to kabineto numeriu. Ant vienos lentelės užrašytas tik vienas skaitmuo. Jei kabineto numeris nevienaženklis skaičius, tai prie durų kalamos kelios lentelės. Parenkite programą, kuri apskaičiuotų, kiek reikės lentelių, norint prikalti numerius prie visų dangoraižio kabinetų durų. Pradinių duomenų faile įrašyta, kiek kabinetų yra dangoraižyje. Rezultatų faile turi būti įrašytas lentelių skaičius. Pradinis duomuo Rezultatas 16 23 Galit padėti? Jau valandą sėdžiu. Man reikia padaryti per funkcijos varda ir nesigauna, o jei paprastai darau išeina. using namespace std; int dangoraiziai(int nr, int n) {
int SK=0; SK+=1; if (SK>=9) SK+=2; return nr; } int main() { int n, nr, SK, num; ifstream fd("duom.txt"); ofstream fr("rez.txt"); fd >>n; for( int i=1; i<=n; i++) { num=dangoraiziai(nr,n); } fr <<num <<endl;
fd.close(); fr.close(); return 0; } Čia paskutinis mano bandymas buvo
#include <iostream> #include <cstdlib> using namespace std; int Skaiciuok (int n, int nr, int & rez); int main () { system ("chcp 1257"); int n; int nr; int rez = 0; cout << "Iveskite kabinetu skaitciu "; cin >> n; Skaiciuok (n, nr, rez); cout << rez << " lentelës" <<endl; return 0; }
int Skaiciuok (int n, int nr, int & rez) { for (int i = 1; i <= n; i++) { nr = i; while (nr > 0){ nr = nr / 10; rez++; } } return rez; }
sprendimas cia duomenu nuskaityma pasidarysi pats :D
valdas3 (+1276)
Kodėl funkcija gražina rezultatą du kartus?
laimonas1367 (+7)
valdas3Kodėl funkcija gražina rezultatą du kartus?
pasitvarkyk main funkcija.
valdas3 (+1276)
Kalbu apie tai, kad funkcija gražina rezultatą per parametrus ir per return.
leunicornsea (+17)
Galit kas padėti? Turiu užduotį: Polindromais vadinami teigiami sveik.skaičiai, kurie iš kairės ir dešinės skaitomi vienodai. duom.txt faile įrašyti du skaičiai - intervalo pradžia ir pabaiga. Rez.txt faile irašomi visi polindromai. duom.txt 200 250 rez.txt 202 212 222 232 242
#include <fstream> #include<iomanip> using namespace std; int main () { int a,b,x,y,z,n; ifstream fd("duom.txt"); ofstream fr("rez.txt"); fd >>a>>b; while(a<=b) { x=a/100; y=a/10%10; z=a%10; n=z*100+y*10+x; if(x=z) fr<<n; else a++; } fd.close(); fr.close(); return 0; }
Prašau labai nepykit, jei mano sprendimas visiškai klaidingas ir kvailas, tiesiog stengiuosi ir mokausi iš savo klaidų.
DEMO +1000
Tavo sprendimas būtų beveik teisingas, jei sąlygoje būtų pasakyta, kad pradiniai duomenys- tik triženkliai skaičiai. Tau reikia sukurti funkciją, kuri rastų atbulą bet kokio ilgio skaičių. Ir dar kelios klaidos: 1. reikia rašyt ne if (x = z), o if (a == n); 2. reikia spausdinti ne atbulą skaičių n, o paprastą a. Be to, jei rašysi fr << a, tau visus skaičius rezultatų faile surašys vienoje eilutėje. Reikia rašyti fr << a << endl; 3. else šakos nereikia, nes skaičius a turi padidėti kiekvieną ciklo prasukimą, ne vien tada, kai randamas palindromas.
pakeista prieš 12 m
leunicornsea (+17)
lukasmTavo sprendimas būtų beveik teisingas, jei sąlygoje būtų pasakyta, kad pradiniai duomenys- tik triženkliai skaičiai. Tau reikia sukurti funkciją, kuri rastų atbulą bet kokio ilgio skaičių. Ir dar kelios klaidos: 1. reikia rašyt ne if (x = z), o if (a == n); 2. reikia spausdinti ne atbulą skaičių n, o paprastą a. Be to, jei rašysi fr << a, tau visus skaičius rezultatų faile surašys vienoje eilutėje. Reikia rašyti fr << a << endl; 3. else šakos nereikia, nes skaičius a turi padidėti kiekvieną ciklo prasukimą, ne vien tada, kai randamas palindromas.
Labai labai ačiū už pagalbą :) dabar bandysiu kurti tą atbulą skaičių!
leunicornsea (+17)
Sveiki, vėl grįžau su klausimu :) Turiu užduotį: Apskaič.reikšmę pagal formulę: y=1/x+1/2x+1/3x+1+4x Bėda ta, kad nežinau, kaip reikia rašyti, kad man skaičius sudėtų kaip trupmenas, o ne 1/x dalintų. Reikia padaryti su paprograme, tai paprogramės ciklas toks turėtų būti? for (int i=1; i<=4; i++) ? Ačiū :))
valdas3 (+1276)
Ar 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ę.