» »

Pomoc programiranje - Napisite funkcije

Pomoc programiranje - Napisite funkcije

hurlimannxt ::

Lep pozdrav!

Na forum se obračam, ker rabim pomoč pri programiraju. Sem popolni začetnik nikoli prej se nisem srečal s programiranjem in trenutno znam napisat le najbolj enostavne programe v jeziku c++ s programom DEV C++, kjer se nekaj sešteje, odšteje, volumen, površina s couti in cini.

Tole je trenutno level na katerem se nahajam pa še to rabim dosti časa in primerov za zgled, da to napišem. Ker pa se stvari kr napej nadaljujejo pa smo na faksi že prišli do funkcij. Tu pa sem popolnoma zmrznil.
Navodila, ki smo dobili so naslednja:

Napišite naslednje funkcije:

- bool sodo(int x); // Funkcija vrne ali je podano število sodo
- float abs(float x); // Funkcija vrne absolutno vrednost podanega števila
- ?prostornina4StranaPiramida(int a, int v); // Funkcija vrne prostornino 4-strane piramide V = (a^2*v)/3
- ? prastevilo(int x); // Funkcija vrne ali je podano število praštevilo
- ? izpisiDelitelje(?); // Funkcija izpiše delitelje naravnga števila v padajočem vrstnem redu.
- ? izpisiDvojisko(?); // Funkcija podano število izpiše v dvojiški obliki


V main funkciji omogočite uporabniku vpis vrednosti, ki jih boste uporabili za klic funkcij. Uporabniku na zaslon izpišite rezultate funkcij.

Našel sem en primer funkcije, iz tega se pa zdej žal čist nič ne spoznam, ker mi ni nič podobno kakor sem do zdej imel postopek s couti in cini.

Upam, da mi lahko kdo namigne in nekako razloži, da bi lahko nekak razumel.

dolenc ::

Prvo število deliš z 2 in če je ostanek 0 je sodo. št%2 = 0
Drugo dodaš #include < cmath >, potem pa imaš abs(št), da ti vrne absolutno število
Tretjo imaš že rešeno, pač napišeš funkcijo ki prejme dva parametra potem pa po tisti formuli zračunaš rezultat.
Četrto, število je praštevilo če je deljivo samo z sabo in z 1, slaba rešitev bi bla ena for zanka ki gre čez vsa števila od 2 do št, in če je najden delitelj (torej spet pogledaš ostanek) povečaš nek števec, če je števec 1 potem je praštevilo če je pa števeč večji od 1 potem ima več deliteljev in ni praštevilo.
Peto spet uporabiš %, ko je 0 (torej delitelj) ga izpišeš, for zanko pa vrtiš tako da preverja od tvojega št pa do 0 (torej nazaj, če bi rad tak vrstni red)
Šesto rešiš tko ko bi binarno pretvarjal na papir, deliš število v zanki dokler(while ali for) ne prideš do 0 in izpisuješ ostanke(%). Lahko se tko znajdeš da 0 in 1nke vpisuješ v en string(dodajaš), pa ga potem na koncu obrneš, da dobiš tko kot na papirju, kjer iz tabele prebereš iz spodaj navzgor.

Pri praštevilih lahko dodaš še en if, če je vneseno število negativno, da sporoči da ni praštevilo.

Pa veliko sreče pri reševanju :)

Zgodovina sprememb…

  • spremenil: dolenc ()

FuI2cY ::

ewo tukaj sem ti na hitro napisal za prvo nalogo.

bool sodo(int x){
     if(x % 2 == 0){
                cout<<"Stevilo je sodo!"<<endl;
                return true;
     }
     cout<<"Stevilo je liho!"<<endl;
     return false;
}


jutri zvečer, če še ne boš imel ostalih, ti lahko rešim, zj ne morem, ker grem na RD :)

lp

Zgodovina sprememb…

  • spremenil: FuI2cY ()

technolog ::

bool sodo(int n) {
   return !(n&1);
}

float abs(float n) {
   return n*((n<0)?-1:1);
}

float prostornina4StranaPiramida(int a, int v) {
   return (a*a*v)/3;
}


Tole je za osnovo, ostale so pa tud trivialne. Če res rabiš ti jih bom napisal.

boogie_xlr ::

pretvorba iz integerjev v dvojiška, se zelo lepo reši z rekurzijo(vrstni red):
void dvojisko(int stevilo)
{
	int a = stevilo % 2;
	stevilo /= 2;
	if (stevilo > 0)
	{
		dvojisko(stevilo);
	}
	std::cout << a;
	return;
}

hurlimannxt ::

Pozdravljeni, hvala vsem, ki ste mi odgovoril... funkcije žal ne spravim skupaj

Če bi blo treba kaj takega napisat bi že šlo.
Slike s predogledom ni hotelo sprejet, sem zdej dodal kr povezavo.


Žal bom mogu prosit nekoga, če mi lahko to napiše....ampak s tem bom le to naredil, da sem oddal, znanja pa žal nebom imel, kar se bo tekoj poznalo pri kolokviju, pa še to je, da bom tuje delo oddal kot svojega, kar je plagiat. Problem je, da nimam pa nobenga, da bi mi lahko vrstico za vrstico vse razložil, ker na faksu se to vse tak hitro preleti.

Zgodovina sprememb…

sajko ::

Asistent na faxu? Morda celo profesor? Ne se jih bat, tam so zato da ti pomagajo. Ker če osnov ne boš razumel, ti bo naprej le še težje.

roba87 ::

Če uporabljaš MS Visual studio ti bo VS sam razložil kako pa kaj. Prepiši program, potem pa s pomočjo debuggerja gledaj kako se kaj spreminja, kaj se vrne in kako deluje vse skupaj. Mogoče ti pomaga.

technolog ::

Ne mu debuggerja turit, no :P Že tako je čisto zmeden...

Daj tole skopiraj, potem ti pa mora bit že počas jasno!

#include <iostream>
using namespace std;

float prostornina4StranaPiramida(int a, int v) {
return (a*a*v)/3.0;
}

int main() {
int a, v;
cout << "Vnesi a:" << endl;
cin >> a;
cout << "Vnesi v: " << endl;
cin >> v;

cout << "Prosornina piramide s takimi podatki je: " << prostornina4StranaPiramida(a, v) << endl;
}

Zgodovina sprememb…

dice7 ::

drugače je tvoj problem tole:

a^2*v

znak " ^ " ne pomeni potenca ampak 'bitwise' OR

naredi
a*a*v

Zgodovina sprememb…

  • spremenil: dice7 ()

FuI2cY ::

dvojisko lahko narediš tudi tako:

void dvojisko(int x){
    string izpis = "";

    while(x > 0){
         if(x % 2 == 0){
             izpis = "0" + izpis;
         }
         else{
             izpis = "1" + izpis;
         }
         x /= 2;
    }
    cout<<izpis<<endl;
}


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Python

Oddelek: Programiranje
202932 (1618) d_DJ
»

NUJNO!Algoritmi C++

Oddelek: Pomoč in nasveti
211868 (1130) DOOM_er
»

pra števila.. (strani: 1 2 )

Oddelek: Znanost in tehnologija
788408 (4747) Yacked2
»

Java problemček

Oddelek: Programiranje
51375 (1297) pajac
»

Problemi pri C++ programiranju...

Oddelek: Programiranje
363794 (3269) George

Več podobnih tem