» »

Nemorem rešit ene naloge z c++ (sem začetnik)

Nemorem rešit ene naloge z c++ (sem začetnik)

«
1
2

e8200 ::

Hvala vsem ki so si vzeli čas in pogledali to temo! V šoli sem dobil za vajo, da zapišem en program, navodila se glasijo tako:

Napiši program, ki prebere tromestno celo število in ugotovi, ali je število večkratnik števila 8. Če vneseno število ni tromestno, naj izpiše Vnesi število v pravilnih mejah

Primer:
Vnesi število: 184
Število 184 je večkratnik števila 8

ali


Vnesi število: 1500
Vnesi število v pravilnih mejah

Kot se že zgoraj navedel sem začetnik na tem področju, prosim pomoč.

Hvala že v naprej

Wrop ::

int st;
bool izhod = false;
do
{
printf("Vnesi stevilo: ");
scanf("%d", &st);
if ((st < 999) && (st > 0))
{
if ((st % 8) == 0) printf("\nStevilo %d je veckratnik stevila 8\n", st);
else printf("\nStevilo %d ni veckratnik stevila 8\n", st);
izhod = true;
}
else printf("\nVnesi stevilo v pravilnih mejah\n");
} while (izhod == false);

Mislim da bi moglo delat, nisem probal.
Komentarje nisem dal, upam da si bo koda jasna, drugače vprašaj! Pa probi se čim več sam učit.

Zgodovina sprememb…

  • spremenil: Wrop ()

e8200 ::

Imaš kakšne predloge kako se to naj lažje naučim ker imam takega profesorja, kateri nič ne razloži.
In hvala.

Bojevnik ::

Internert in/ali knjiga, s tem da moraš skoraj obvezno sam narediti ene par programčkov.

20sdfj093f ::

Schildt: Teach Yourself C++

hodor ::

brez trdnega dela in z poskušanjem se nikoli neboš naučil...
Vsako stvar lahko narediš še boljše!

denis19912 ::

int st;
bool izhod = false;
do
{
printf("Vnesi stevilo: ");
scanf("%d", &st);
if ((st < 999) && (st > 0))
{
if ((st % 8) == 0) printf("\nStevilo %d je veckratnik stevila 8\n", st);
else printf("\nStevilo %d ni veckratnik stevila 8\n", st);
izhod = true;
}
else printf("\nVnesi stevilo v pravilnih mejah\n");
} while (izhod == false);


Kaka koda. Neki malga ze mam pojma o C++, ampak to?jaoo nimam pojma LOL. No sem pa tudi zacetnik in bi to nalogo cist drugace reso, ker je ziher njegov profesor ogotovo da to ni on delo. Na sreco pa mamo mi bolsga profesorja od tebe in nam vse lepo obrazlozi.
P.S. a ve gdo za kaki program za programiranje C++ na Pocket PC-ju?

Keki ::

v bistvu bi moglo bit if ((st < 1000) && (st > 99))

ker je reko tromestno število ne največ tromestno število

@denis19912 to je načeloma staro-cjevska koda :D
http://www.alfakan.si/
http://mihajerot.si/

denis19912 ::


@denis19912 to je načeloma staro-cjevska koda :D

aha hvala za informacijo, se namrec zelo znimam za programiranje. Me pa zanima kateri programski jezik se vam zdi najboljsi, da bi se ga lahko naucil? Trenutno se ucim C++, ker upazam, da ga uporablja veliko pogonov za izdelavo iger. Ne zanimajo pa me ravno jezika za spletne stvari. Torej kateri jezik se je zelo uporaben ?
hvala za odgovor

snow ::

python
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Keki ::

python,java,c/c++,c# odvisno od tega kaj rabiš ni ultimativnega jezika
http://www.alfakan.si/
http://mihajerot.si/

darkkk ::


@denis19912 to je načeloma staro-cjevska koda :D

aha hvala za informacijo, se namrec zelo znimam za programiranje. Me pa zanima kateri programski jezik se vam zdi najboljsi, da bi se ga lahko naucil? Trenutno se ucim C++, ker upazam, da ga uporablja veliko pogonov za izdelavo iger. Ne zanimajo pa me ravno jezika za spletne stvari. Torej kateri jezik se je zelo uporaben ?
hvala za odgovor


Ma dejansko je bolj ali manj podobno vse skupi na koncu. Kar se popularnosti tiče C#, java, python. Ma dejansko če ostaneš pri c++ neboš nič falil.

Kar se pa tvoje kode tiče, zgleda bolj C kot c++. Samo nekako odsvetujem učenje C-ja pred C++, ker se boš problemov potem loteval na slab način.

ddeben ::

Malce bi se prislinil:P
Začetnik v c# oz. nasploh začetnik v programiranju.
Imam naslednjo nalogo:
Izdelajte program, ki bo prebral niz znakov in določil kolikokrat se v besedilu ponovi neka črka slovenske abecede. Male in velike črke obravnavajte enako. Program naj na koncu (urejeno po abecedi) izpiše seznam črk, ki se pojavljajo v besedilu in njihovo število ponovitev. Upoštevajte samo črke slovenske abecede.

Mi lahko podaste kakšen namig za reševanje?

Tutankhamun ::

Trenutno nimam c# na računalniku tko da na pamet delam...

string vhodni_niz;
int [] crka_abecede = new char [25];

vhodni_niz = Console.GetLine ();

foreach (char crka_v_nizu in vhodni_niz)
{
    crka_abecede [(int)(crka_v_nizu - 'a')]++;   // upam da v c# lahko tak stavk izvedeš, če ne pa mal predelj.
}


Ampak ta koda, ne upošteva še velikih začetnic to lahk sam nardiš. Pa še na konc izpis kok je katerih črk lahk tut sam nardiš.
AMD Phenom QUAD 9950 Black Edition, 8GB

Zgodovina sprememb…

moowy123 ::

psevdokoda:

preberi niz znakov (uporabiš lahko std::cin)
sprehodi se po nizu znakov in pogledaš vsak znak==character stringa ( njegovo int kodo->poglej si ascii tabelo )
če gledaš samo za določeno črko imaš samo en if stavek ki gleda če je int koda characterja enaka ascii predstavitvi znaka ( veliki in mali črki ), če pa gledaš za vse znake slovenske abecede pa uporabiš lahko recimo ali razrede ( class SlovCharacter, ki vsebuje int kodo za predstavitev ( ki predstavlja ascii char znaka ), tukaj moraš paziti da A in a imata enako predstavitev ( int(A) - konst x je ekvivalentno int(a) ) , ali pa uporabiš std::map(int, int) in se igraš naprej ).

Naloga je preprosta in če boš rabil še kak namig kar vprašaj...

Vidim da so me z "lažjo" rešitvijo že prehiteli. Načinov za reševanje je več in sam se odloči kako boš programiral.

Zgodovina sprememb…

  • spremenilo: moowy123 ()

ddeben ::

Se pravi, nekaj v tem smislu...
1. preberem niz znakom
2. verjetno se s for zanko se sprehodim po nizu znakov
3. vsakega preverim če je med a-ž - tukaj se mi poraja vprašanje->>kako izključiti q,w in druge črke ki niso v slovenski abecedi?
4. potem sledi izpis črk in številka vnesenih črk

Ne smem uporabiti nobenih funkcij ali karkoli podobnega.

Tutankhamun ::

if (crka == 'q' || crka == "w" || crka == 'y' || ...)
{
Console.PrintLine ("najdena ne slovenska crka (" + crka + ")");
continue; // nadaljuje s for zanko...
}
AMD Phenom QUAD 9950 Black Edition, 8GB

krneki0001 ::


P.S. a ve gdo za kaki program za programiranje C++ na Pocket PC-ju?



Si že našel editor in compiler za C++ za dlančnik? Tut jaz bi ga rabil.

ddeben ::

string vhodni_niz;
char[] crka_abecede = new char[25] { 'A', 'B', 'C', 'Č', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'Š', 'T', 'U', 'V', 'Z', 'Ž' };

vhodni_niz = Console.ReadLine();

foreach (char crka in vhodni_niz)
{
if (crka == 'q' || crka == 'w' || crka == 'y' || crka == 'x')
{
Console.WriteLine("Vnesli ste anglesko crko");
break;

}
else
if (crka== "kako se naj tule oblikujem, da mi bo preverilo, ce je crka ena izmed crk v abecedi?"

Genetic ::

using System;
using System.Collections.Generic;
using System.Text;

namespace FrCrk
{
    class Program
    {
        static void Main(string[] args)
        {
            Program p = new Program();
            string niz = "Iz Ježce čez cesto v Stožce je težko pešca sčistiti s cestišča s špohtlom";
            string rezultat = p.ObdelajNiz(niz);
            System.Console.WriteLine(rezultat);
        }

        private int[] frekvCrk = new int[25];
        private static string maleCrke = "abcčdefghijklmnoprsštuvzž";
        private static string velikeCrke = "ABCČDEFGHIJKLMNOPRSŠTUVZŽ";
        private int IndeksCrke(char c)
        {
            int i = -1;
            i = maleCrke.IndexOf(c);
            if (i == -1)
                i = velikeCrke.IndexOf(c);
            return i;
        }
        private void PovecajFrekvenco(char c)
        {
            int ind = IndeksCrke(c);
            if (ind != -1)
            {
                ++frekvCrk[ind];
            }
        }

        public string ObdelajNiz(string niz)
        {
            frekvCrk.Initialize();
            StringBuilder sb = new StringBuilder();
            foreach (char ch in niz)
            {
                PovecajFrekvenco(ch);
            }
            foreach (char ch in velikeCrke)
            {
                int frekv = frekvCrk[IndeksCrke(ch)];
                if (frekv > 0)
                    sb.AppendLine(String.Format("{0}:{1}",ch, frekv));
            }
            return sb.ToString();
        }
    }
}

xgeorgex ::

Napiši program, ki za vsa naravna števila, majnša od poljubnega vnesenega celega števila, izpiše rezultate pri deljenju s 5 - rezultati so v decimalni obliki in v oblikin v obliki ulomka.

 koda

koda



Sem totalen začetnik, šele dva dni se ukvarjam z C++... Zanima me kaj mam narobe???

arjan_t ::

deliš int (poljubno_st) z int (x) kar da kot rezultat int

joze67 ::

... in pa rezultatov nimaš (tudi) v obliki ulomka

technolog ::

Nasleednjič kopiraj kodo sem, ne delat screenshotov.

Tole je za decimanlno:

cout << (double)poljubno_st / x << endl;


Tole pa za ulomek:

cout << poljubno_st <<  "/" << x << endl;


Ulomek bo neokrajšan, če ga hočeš okrajšat rabiš še evklidov algoritem.

xgeorgex ::

Budala jst... ;(( Zato mi je pa pisal rezultate 2,2,1,1,1,1,1,0,0,0,0,0, ko sem vpisal poljubno_st 12...:)
Potem je variable "float = rezultat" brezveze not... A ostalo je OK, ali bi lahko kako drugače napisal-bolj pravilno, krajše??
Za ulomek tudi še nisem slišal, do sedaj sem prebral tutorial samo do funkcij, pa nisem zasledil tega...
A "double" pa mora biti v oklepaju?? Mislim da sem zasledil da ti endl sprazne pomnilnik - ga je dobro uporabljat in kje?
Ne morem pisat kode sem, ker mi javi error... Upam da nisem tečen... Najlepša hvala...
LP

xgeorgex ::

Kakšne pišem... :D Ulomek je poljubno_st pa string / daš zraven pa x... Nisem dobro pogledal preden sem pisal...
LP

System ::

Kateri program uporabljate za C++?

xgeorgex ::

Uporabljam Dev-c++...
LP

amacar ::

CodeBlocks

technolog ::

xgeorgex je izjavil:


Ne morem pisat kode sem, ker mi javi error... Upam da nisem tečen... Najlepša hvala...
LP


Ja, ker morš uporabit gor v meniju za vstavljat kodo.

Pa namest whila uporabi for stavek.

#include <iostream>
using namespace std;

int main() {
	int stevilo;
	cin >> stevilo;
	for (int i=stevilo-1; i>0; i--) {
		cout << "Decimalno: " << (double)stevilo / x << endl;
		cout << "Ulomek: " << stevilo <<  "/" << x << endl;
	}
}

Zgodovina sprememb…

donkihod ::

@xgeorgex,

Dev-C++ sploh ne razvijajo več, poleg tega ma pa še neki hroščev. Predlagam, da prešaltaš na kej novejšiga (CodeBlocks, Eclipse/NetBeans z C++ plugin-om ali pa kakšn Notepad++ + MinGW).

roba87 ::

Ja Dev-C++ je garbage. Predlagam ti vse istalo kaj so ti že drugi in pa Visual studio 2010(express).

System ::

Code::Blocks je res super, vsaj prvi vtisi.

xgeorgex ::

4. Napišite program, ki izbere naključno celo število (uporabite funkcijo
rand()). Izbiro naključnega števila ponavljajte tako dolgo, dokler ne bo
izbrano število trimestno. Na koncu na ekran izpišite, katero število po
vrsti je ustrezalo danemu kriteriju.

#include <iostream>
#include <stdlib.h>
using namespace std;
int main ()
{
int poljubno_st;
for (int i = 1; i++;)
{
    poljubno_st = rand() % 10000 + 1;
    if(poljubno_st > 99 && poljubno_st < 1000)
    {
        cout << i;
        break;
    }
}
cin.ignore();
cin.get();
return 0;
}


Prosil bi za pomoč... Hvala

mr1two ::

Pozanimaj se, kakšno število ti vrne operacija rand(). Se pravi, napiši samo en del na začetku(z zanko)
for(int i=1;i++;i<10)
 print(rand());

//popravi sintakso, ker sem C že mal pozabu
da vidiš, kaj ti to sploh vrača

Kot vem, je operator % pomenil celoštevisko deljenje(znači, odreže proč kar je za decimalno vejico,piko)


Tko, za primerjavo Math.random() iz Jave vrne double vrednost, ki je med 0 in 1, tako da moraš zadevo množit z neko cifro, da dobiš željene vrednosti(npr Math.random()*1000, vrača vrednosti med 0 in 1000(ti dve vrednosti boš sicer dobil zelo zelo poredko ampak si lahko predstavljaš način delovanja))

Si pa blizu rešitve recimo.

jype ::

rand() vrne celo število na intervalu [0,RAND_MAX].

Če uporabiš izraz "rand() % 900 + 100" boš vedno v prvem poskusu zadel tombolo.

Po moje je mišljeno, da kličeš samo rand(), dokler se ne znajde v željenem območju.

Zgodovina sprememb…

  • spremenilo: jype ()

xgeorgex ::

oj...
Vrne mi vedno enake random cifre... 42,8468,6335,6501... Vsakič ko zaženem program enake... A to mora tko delat, al bi mogel vsakič drugačne(random) cifre izpisat...
Ker če more tko delat, potem meni program prav dela, ker vedno isto cifro izpiše...
hvala lp

Steinkauz ::

Poglej srand

hexor ::

če hočeš dinamično spreminjanje uporabi, kot je Steinkauz napisal, torej
srand(time(NULL))+ lib.<time.h>
.

xgeorgex ::

9. Napišite program, ki preko tipkovnice prebere višino trikotnika, program
naj nato za prebrano vrednost izriše ustrezni lik. Višina mora biti
vrednost med 1 in 20. Primer, če je visina = 5:
    
    ¤¤    
   ¤  ¤
  ¤    ¤
 ¤      ¤
¤¤¤¤¤¤¤¤¤¤

#include <iostream>
using namespace std;
int main ()
{
int visina;
cout << "Vnesi visino trikotnika: ";
cin >> visina;
int sirina = visina * 2;
for (visina; visina > 1; visina--)
{
    int levo = 0, desna = sirina;
    for (int zvezdica = sirina; zvezdica > 0; zvezdica--)
    {
        if(levo == visina - 1 || desna == visina)
        {
            cout << "*";
        }
        else
        {
            cout << " ";
        }
        levo++;
        desna--;
    }
    cout << endl;
}
for (int y = sirina; y > 0; y--)
cout << "*";
cin.ignore();
cin.get();
return 0;
}


Zanima me če sem prav zastavil nalogo ali bi jo lahko kako drugače(lažje, krajše) rešil...
Hvala za odgovore, LP

Zgodovina sprememb…

  • spremenil: xgeorgex ()

technolog ::

Dodal sem ti še preverjanje, da je višina med 1 in 20, kar tebi manjka. Za foro sem poskušal skrajšat progeram:

#include <iostream>
#include <string>
using namespace std;

int main() {
	int vis;
	do {
		cout << "Vnesi visino trikotnika: " << endl;
		cin >> vis;
	} while (vis<1 or vis>20);
	for (int i=1; i<vis; ++i) {
		string s(vis*2, ' ');
		s[vis-i]=s[vis+i-1]='#';
		cout << s << endl;
	}
	cout << string(vis*2, '#') << endl;
}

Zgodovina sprememb…

xgeorgex ::

OKi, sam tole je malce bolj napredno ([], string...), jst bom pa šele zdej šel na funkcije...
Delam vse možne naloge ki jih najdem za if stavke, loop-e... A brez teh naprednih stvari je pa ql?
Na preverjanje sem pa pozabil...
Hvala...
LP

technolog ::

V redu je, čeprav gre še krajše, tudi brez "naprednih stvari" :)

#include <iostream>
using namespace std;

int main() {
    int vis; cin >> vis;
    for (int i=1; i<vis; ++i) {
		for (int j=0; j<vis*2; ++j)
			if (j==vis-i or j==vis+i-1)
				cout << '#';
			else
				cout << ' ';
		cout << endl;
    }
    for (int i=0; i<vis*2; ++i) cout << '#';
    cout << endl;
}

MrBrdo ::

offtopic
(1...(n = gets.to_i)).each {|i| puts " "*(n-i)+"#"+" "*(i-1)*2+"#"+" "*(n-i) }
puts "#" * (n*2)

Kok je Ruby zakon :)
MrBrdo

Zgodovina sprememb…

  • spremenilo: MrBrdo ()

technolog ::

Sej ni tok krajš od tegale:
    for (int i=1; i<v; ++i) {
        string s(v*2, ' ');
        s[vis-i]=s[v+i-1]='#';
        cout << s << endl;
    }
    cout << string(v*2, '#') << endl;

MrBrdo ::

ti manjka še "int vis; cin >> vis;".. pol pa je kr krajše. je pa res da se da z tem string kr sprejemljivo narest za C++ :)
MrBrdo

pizdarija1 ::

Rad bi naredil, da se vprašanje izpisuje dokler se ne vpiše odgovor probleme mi dela enter ker vprašanja ne izpiše ponovno ampak prestavi v novo vrstico.

string askText (string prompt){
	string enterText;
	do {
		cout << prompt;
		cin >> enterText;
	} while(enterText.empty());

	return enterText;
}

c0dehunter ::

Preveriti moraš, če je bila vnešena nova vrstica (\n):
string askText (string prompt){
    string enterText;
    do {
        cout << prompt;
        char first=cin.get();
        if(first=='\n') continue;
        cin >> enterText;
        enterText=first+enterText;
    } while(enterText.empty());

    return enterText;
}


Koda je sice malce akrobatska s tem dodajanjem prve črke..
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

Zgodovina sprememb…

xgeorgex ::

Pozdravljeni...
Mi lahko kdo pove zakaj lahko iIme vpišem samo v prvem objektu??
NALOGA:
Napiši razred Clan, ki hrani podatke o članu športnega kluba. Podatki o članu obsegajo ime,
priimek, letnico vpisa v klub in vpisno številke (seveda je to poenostavljen primer).
Napiši OBJEKTNO metodo Izpis za izpis podatkov o članu
V glavnem programu ustvari dva OBJEKTA tipa Clan: podatek o obeh objektih preberi preko
tipkovnice. Po novi podatke tudi izpiši s pomočjo metdoe Izpis...

#include <iostream>

using namespace std;

class Clan
{
    private:
        char cIme[20];
        char cPriimek[20];
        int iLetnica_vpisa;
        int iVpisna_stevilka;
    public:
        Clan()
        {
            cout << "Vnesi ime: ";
            cin.getline(cIme, 20);
            cout << "Vnesi priimek: ";
            cin.getline(cPriimek, 20);
            cout << "Vnesi letnico vpisa: ";
            cin >> iLetnica_vpisa;
            cout << "Vnesi vpisno stevilko: ";
            cin >> iVpisna_stevilka;
        }
        void izpis()
        {
            cout << "Podatki o clanu: " << endl;
            cout << cIme << endl << cPriimek << endl << iLetnica_vpisa << endl << iVpisna_stevilka << endl;
        }
};
int main()
{
    Clan clan1;
    clan1.izpis();
    Clan clan2;
    clan2.izpis();
    Clan clan3;
    clan3.izpis();
    return 0;
};


Hvala...

Vesoljc ::

pa ne v konstruktorju delat vpisa...

tisto kodo premakni v funkcijo vpisi()

Clan c1;
c1.vpisi();
c1.izpisi();


ce pa ze iostream uporabljas pa poglej se tole:
http://www.java2s.com/Tutorial/Cpp/0200...
Abnormal behavior of abnormal brain makes me normal...
«
1
2


Vredno ogleda ...

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

Pomoč pri programiranju z javo

Oddelek: Programiranje
203322 (2249) milc
»

[C#] Operacija IN in ALI med dvema int številoma

Oddelek: Programiranje
111074 (887) LeQuack
»

[C#] Input string was not in a correct format.

Oddelek: Programiranje
6927 (864) Cvenemir
»

Pomoč pri programčkih

Oddelek: Programiranje
152699 (2349) Mitja Bonča
»

[C] Narascajoce sortiranje linearnega seznama

Oddelek: Programiranje
71757 (1646) Jebiveter

Več podobnih tem