Programiranje u C++-u - pitanja i odgovori izdvojena tema

poruka: 7.285
|
čitano: 1.712.377
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Simon_says kaže...

Tako je, u Pythonu je nemoguće(po mojim spoznajama) složit da se ne ubije program u nekom power eventu i čuo sam da je jedino rješenje za to C++ program.

Aha, kužim sada. U biti problem je pythonov interpreter koji automatski prekida izvršavanje kada dobije power event. Pa da, dalo bi se nakucati neki C/C++ stub koji bi automatski ponovno pokrenuo python program nakon što OS izađe iz stand-bya. Pogledat ću malo, moram instalirati python da bih mogao testirati...

What Andy giveth, Bill taketh away.
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pozdrav svima

Na nastavi radimo programiranje u C++(koristimo Borland) ali kompajliranje vrsimo preko cmd-a.

Odnosno program pisemo u notepad-u, a onda idemo na start→run→cmd i dalje znam jedino da treba odrediti tacnu lokaciju ovog programa koji smo napisali u notepad-u, ali ne znam sve korake sta treba pisati redom tako da mi uvijek izbaci neki error.

Pa bih vas zamolio ako nije problem da mi napisete redom korake sta treba napisati da bih kompajlirao program u cmd-u ili ako znate gdje na netu mogu naci

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
eagle05 kaže...

Pozdrav svima

Na nastavi radimo programiranje u C++(koristimo Borland) ali kompajliranje vrsimo preko cmd-a.

Odnosno program pisemo u notepad-u, a onda idemo na start→run→cmd i dalje znam jedino da treba odrediti tacnu lokaciju ovog programa koji smo napisali u notepad-u, ali ne znam sve korake sta treba pisati redom tako da mi uvijek izbaci neki error.

Pa bih vas zamolio ako nije problem da mi napisete redom korake sta treba napisati da bih kompajlirao program u cmd-u ili ako znate gdje na netu mogu naci

Koji borland? Turbo C++? Ili koristite onaj besplatni borlandov C++ kompajler, mislim da je verzija 5.5? To je jako star kompajler, ne nalazim nigdje online dokumentaciju za njega, vjerojatno dolazi s njime. Snalazim se sa watcomom, gcc-om i lcc-om, ali bcc stvarno nikada nisam ni taknuo.

 

Zar vam profesor nije objasnio potrebne argumente komandne linije?

What Andy giveth, Bill taketh away.
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Koristimo 5.5, objasnio je, ali ja nisam uzeo odmah tajd an da ponovim to sto smo radili i zaboravio kako idu koraci

Na youtube nalazim za te sto si ti naveo, ali kad je to drugacije, ne moze mi nikako pomoci

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
eagle05 kaže...

Na youtube nalazim za te sto si ti naveo, ali kad je to drugacije, ne moze mi nikako pomoci

Znam da nalaziš jer su popularniji, i znam da je drugačije.

 

Evo sad sam si intalirao bcc55 i zapravo je jako jednostavno.

 

Recimo da si ga instalirao u "c:\borland\bcc55\" folder, readme kaže da napraviš slijedeće:

 

kreiraš "bcc32.cfg" datoteku u "c:\borland\bcc55\bin\" folderu u koju ćeš staviti:

-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"

 

zatim u istom tom folderu kreiraš "ilink32.cfg" datoteku u koju ćeš staviti:

-L"c:\Borland\Bcc55\lib"

 

Zatim "c:\borland\bcc55\bin" folder dodaš u path (isti je postupak i na WinXP).

 

i na kraju recimo da imaš "program.cpp" source datoteku, nju bi onda kompajlirao sa slijedećom komandom:

bcc32 program.cpp

 

What Andy giveth, Bill taketh away.
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Simon_says kaže...

Tako je, u Pythonu je nemoguće(po mojim spoznajama) složit da se ne ubije program u nekom power eventu i čuo sam da je jedino rješenje za to C++ program. Program mi radi na svim verzijama windowsa, od 95 pa do 8.1, al večinom mi ga koriste win7 i win8 korisnici.

Ukratko nisam ovo uspio reproducirati nikako na WinXP. Ni sa Pythonom 2 ni 3.

 

Ako uzmeš recimo ovaj python 2.7 program:

import time

counter = 0

while (1):
    print counter
    counter += 1
    time.sleep(0.5)

 

I pokreneš ga, te nakon toga ubaciš računalo u standby, radi li ti program i dalje nakon izlaska iz standbyja? Meni radi.

 

Ista stvar, python 3:

import time

counter = 0

while (1):
    print(counter)
    counter += 1
    time.sleep(0.5)

 

Da se postavim na trepavice nisam uspio postići da ulazak u standby ubije python. Ili je do operacijskog sustava (ja imam WinXP), ili je do tvoje aplikacije. Bilo kako bilo izbrljao sam neki program koji nakon izlaska iz standbyja provjerava je li određeni proces i dalje pokrenut te ga sam pokrene ako nije, mogu staviti linkove na to ako si zainteresiran.

 

EDIT: u biti WTH. Ne volim stavljati uokolo svoj source da se ne brukam previše, ali hajde ako ništa drugo može nekome poslužiti kao primjer kako se neke stvari ne rade. {#}

 

Prisebnija verzija.

Pokušaj unicode podrške.

What Andy giveth, Bill taketh away.
Poruka je uređivana zadnji put sri 30.10.2013 0:51 (rustweaver).
11 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

evo mene o5

znaci nesto sam shvatio od onih savjeta danih

no i dalje me muci par stvari

kako napraviti polje strukture da mogu dodati vise osoba

te me muce ova polja tj nzm jesam dobro deklariao polje uopce te sto s njim kao jesam

moze neko poblize objasnit

i jel mozda ima koji bolji nacin za ucitavanje podataka iz txt dat

unaprijed hvala

 

#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;
      struct osoba  
      {
       string ime;
       string prezime;
       string adresa;
       string email;
       int telbroj;
      }  ;
     int PrintInformation(osoba sosoba) //ispis podataka o osobi nakon unosa
     {
      using namespace std;
      cout << "IME: " << sosoba.ime << endl;
      cout << "PREZIME: " << sosoba.prezime << endl;
      cout << "ADRESA: " << sosoba.adresa << endl;
      cout<< "EMAIL: " <<sosoba.email<<endl;
      cout<<"TEL. BROJ: "<<sosoba.telbroj<<endl;
    }  
    int spremanje (osoba sosoba)  //spremanje
    {
     ofstream dok;
     dok.open ("podaci.txt");
     dok<<"Ime: "<<sosoba.ime<<endl;
     dok<<"Prezime: "<<sosoba.prezime<<endl;
     dok<<"Adresa: "<<sosoba.adresa<<endl;
     dok<<"Email: "<<sosoba.email<<endl;
     dok<<"Tel. Broj: "<<sosoba.telbroj<<endl;
     dok.close();
  return 0;
  }
 

 
int main(int argc, char *argv[])
{
//Adresar v. 1.0//
//varijabla za opciju 
    int x;
//varijable za unos
    string ime2;
    string prezime2;
    string adresa2;
    string email2;
    int telbroj2;

   

    cout<<"Odaberite opciju:"<<endl;
    cout<<"1. Unesi podatke.\n2. Ucitaj podatke."<<endl;
    cin>>x;
if (x==1) //unos
{
         Ponovan_unos:cout<<"Unesite ime:"<<endl;
         cin>>ime2;
         cout<<"Unesite prezime:"<<endl;
         cin>>prezime2;
         cout<<"Unesite adresu:"<<endl;
         cin>>adresa2;
         cout<<"Unesite email:"<<endl;
         cin>>email2;
         cout<<"Unesite telefonski broj:"<<endl;
         cin>>telbroj2;
         cout<<endl;
       
        osoba sosoba;
              sosoba.ime=ime2;
              sosoba.prezime=prezime2;
              sosoba.adresa=adresa2;
              sosoba.email=email2;
              sosoba.telbroj=telbroj2;
        PrintInformation (sosoba);
        cout<<"Unesite 1 za spremanje podataka.\nUnesite 2 za ponovni unos.\n";
        cin>>x;
        switch (x)
        {
               case 1:
                    spremanje (sosoba);
               break;
               case 2:
                    goto Ponovan_unos;
               break;
        }
}
if (x==2) //ispis
{
         ifstream dok_ucitaj ("podaci.txt");
         string trazeni_ime;
         string trazeni_prezime;
         string line;
         cout<<"Ime osobe koju trazite:\n";
         cin>>trazeni_ime;
         cout<<"Prezime osobe koju trazite:\n";
         cin>>trazeni_prezime;
         string trazeni[2]={trazeni_ime,trazeni_prezime};      
  if (dok_ucitaj.is_open())  //ucitavanje
  {
    while ( getline (dok_ucitaj,line) )
    { 
      cout << line << endl;
    }
  dok_ucitaj.close();
  }
       
}       

        system("PAUSE");
        return EXIT_SUCCESS;
}

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
heraklo kaže...
kako napraviti polje strukture da mogu dodati vise osoba

te me muce ova polja tj nzm jesam dobro deklariao polje uopce te sto s njim kao jesam

moze neko poblize objasnit

Moraš se ozbiljno uhvatiti literature, ja ti mogu malo razjasniti neke stvari i pomoći malo, ali forum doista nije baš mjesto na kojem se opširno i u detalje nešto uči.

 

Polja su jako jednostavan koncept. To su u biti skupine vrijednosti nekog tipa podatka.

 

recimo da imaš

int n;

 

To varijabla cjelobrojnog (integer) tipa. Ona sadrži samo jedan cijeli broj.

 

Polje cijelih brojeva bi napravio ovako:

int n[10];

 

To će stvoriti polje koje sadrži 10 cijelih brojeva. Pojedinim članovima tog polja pristupaš preko brojčanog indeksa (možeš ga zamisliti kao redni broj koji počinje od nule, znači da će prvi član polja imati indeks 0, drugi će imati indeks 1, treći 2...)

 

da bi npr četvrtom članu tog polja dodijelio vrijednost 13 potrebno je napraviti slijedeće:

n[3] = 13;

 

Jako jednostavan koncept koji može biti i dosta kompliciraniji ako treba:

 

char screen[320 * 240] = {0};
screen[320 * y + x] = 145;

(ne moraš znati što ovo znači to je samo primjer)

 

Bitno je skužiti da unutar uglatih zagrada može biti bilo koji izraz koji ti daje brojčanu vrijednost, odnosno bilo kakav broj se može koristiti kao indeks člana polja. Bitno je napomenuti da treba paziti da se ne izađe iz granica polja. Recimo ako imaš polje od 5 članova pazi da ne pokušavaš mijenjati šesti ili neki drugi veći član jer ti se program može srušiti.

 

No da se vratimo na strukture. Ako si pazio napisao sam da su polja skupine vrijednosti nekog tipa podatka. Bilo kojeg tipa, pa tako i strukture. Znači za strukturu bi imali:

 

struct ucenik
{
    string ime;
    string prezime;
    int razred;
};

ucenik ucenici[30];

 

Dakle imamo strukturu 'ucenik', i polje te strukture 'ucenici' koje ima 30 članova.

 

Dodjeljivanje vrijednosti šestom učeniku bi radio ovako:

ucenici[5].ime = "pero";
ucenici[5].prezime = "peric";
ucenici[5].razred = 7;

 

Polja i petlje ti idu zajedno kao lonac i poklopac, pa ako bi recimo za gornji primjer želio upisati svih 30 učenika to jednostavno mogao napraviti bez puno pisanja uz pomoć petlje:

for (int n = 0; n < 30; n++)
{
    cout << "Upisi ime " << n << ". ucenika: ";
    cin >> ucenici[n].ime;

    cout << "Upisi prezime " << n << ". ucenika: ";
    cin >> ucenici[n].prezime;

    cout << "Upisi razred " << n << ". ucenika: ";
    cin >> ucenici[n].razred;
}

 

Gornja for petlja će se ponoviti 30 puta, po jednom za svakoga od 30 učenika i za svakoga će od korisnika zatražiti upis imena, prezimena i razreda.

 

heraklo kaže...
i jel mozda ima koji bolji nacin za ucitavanje podataka iz txt dat

unaprijed hvala

Ovisi što želiš postići, trenutno čitaš liniju po liniju i sve bacaš na ekran.

 

Recimo primijetio sam da pri spremanju podataka u datoteku upisuješ i tekst "IME: ", "PREZIME: ", "ADRESA: ", "EMAIL: ", i "TEL. BROJ: ". Zapitaj se je li to potrebno? Tko će čitati tu datoteku ti ili računalo? Ako računalo čita tada ono već unaprijed zna na kojoj liniji je ime, na kojoj prezime itd...

 

Recimo da imaš u datoteci do 15 osoba, i da su im podatci poredani po linijama: ime, prezime, adresa, email, telefon, ime, prezime, adresa, email, telefon, ime, prezime...

 

Onda bi to čitao otprilike ovako:

osoba osobe[15];
int index = 0;

while (dok_ucitaj.eof != true)
{
    getline(dok_ucitaj, osobe[index].ime);
    getline(dok_ucitaj, osobe[index].prezime);
    getline(dok_ucitaj, osobe[index].adresa);
    getline(dok_ucitaj, osobe[index].email);
    getline(dok_ucitaj, osobe[index].telbroj);

    index++;
}

 

Možeš pretpostaviti da je datoteka pravilno zapisana pa ne treba provjeravati za kraj datoteke nakon baš svake pročitane linije. To jest ono što hoću reći je da ako imaš ime, onda vjerojatno imaš i ostale potrebne linije za tu osobu, osim ako nešto nije prekinulo pisanje u datoteku pa imaš polovičan zapis. Ali čak i ako jest, neće ništa eksplodirati ako pokušaš čitati iz datoteke koja je došla do kraja, samo nećeš dobiti nikakve podatke.

 

Obrati pažnju također i da gornji kod čita koliko god linija ima u datoteci, ali u polju ima mjesta samo za 15 osoba što znači da treba pametnije napisati taj kod da ne prekoračuje granice polja. Ostavio sam ga namjerno tako radi jednostavnosti, da lakše skužiš osnovne korake.

What Andy giveth, Bill taketh away.
Poruka je uređivana zadnji put sri 30.10.2013 3:10 (rustweaver).
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...

 

i na kraju recimo da imaš "program.cpp" source datoteku, nju bi onda kompajlirao sa slijedećom komandom:

bcc32 program.cpp

 

Uradio sam sve ovo sto si ti naveo(instalirao, kreirao ove datoteke, dodao path i to je sve uspjesno zavrseno) i napisao bezveze program samo da ispise broj 10 

 

#include <iostream>

#include < conio.h>

using namespace std;

int main(){

      int a;

      a = 10;

      cout<<"Broj: "<<a<<endl;

      getch ();

}

ali opet mi izbaci error

Poruka je uređivana zadnji put sri 30.10.2013 19:56 (eagle05).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Uzmi code blocks i ne muči se s komandnom linijom. Ionako za to gradivo koje vi radite može poslužiti bilo koji compiler.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
Moj PC  
2 0 hvala 0
11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...
Simon_says kaže...

Tako je, u Pythonu je nemoguće(po mojim spoznajama) složit da se ne ubije program u nekom power eventu i čuo sam da je jedino rješenje za to C++ program. Program mi radi na svim verzijama windowsa, od 95 pa do 8.1, al večinom mi ga koriste win7 i win8 korisnici.

Ukratko nisam ovo uspio reproducirati nikako na WinXP. Ni sa Pythonom 2 ni 3.

 

Ako uzmeš recimo ovaj python 2.7 program:

import time

counter = 0

while (1):
    print counter
    counter += 1
    time.sleep(0.5)

 

I pokreneš ga, te nakon toga ubaciš računalo u standby, radi li ti program i dalje nakon izlaska iz standbyja? Meni radi.

 

Ista stvar, python 3:

import time

counter = 0

while (1):
    print(counter)
    counter += 1
    time.sleep(0.5)

 

Da se postavim na trepavice nisam uspio postići da ulazak u standby ubije python. Ili je do operacijskog sustava (ja imam WinXP), ili je do tvoje aplikacije. Bilo kako bilo izbrljao sam neki program koji nakon izlaska iz standbyja provjerava je li određeni proces i dalje pokrenut te ga sam pokrene ako nije, mogu staviti linkove na to ako si zainteresiran.

 

EDIT: u biti WTH. Ne volim stavljati uokolo svoj source da se ne brukam previše, ali hajde ako ništa drugo može nekome poslužiti kao primjer kako se neke stvari ne rade. {#}

 

Prisebnija verzija.

Pokušaj unicode podrške.

Dakle probao sam, ali ne pokreće mi program nakon što probudim komp iz standby, ali ne znam što da stavim pod ovo "Application arguments" pa sam to ostavio prazno(što da stavim tu točno?), možda zato? Inače hvala što mi pomažeš na ovom.

17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

A da probas zapakirati Python skriptu u exe fajl? Isprobaj neki od ovih alata:

http://effbot.org/zone/exemaker.htm

http://www.pyinstaller.org/

http://py2exe.org/

 

Ne znam s Windowsima pa ti ne mogu nesto konkretnije savjetovati.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Simon_says kaže...

Dakle probao sam, ali ne pokreće mi program nakon što probudim komp iz standby, ali ne znam što da stavim pod ovo "Application arguments" pa sam to ostavio prazno(što da stavim tu točno?), možda zato? Inače hvala što mi pomažeš na ovom.

Pod application executable bi trebao ići executable od programa. Dakle u tom slučaju python interpreter (odnosno puna putanja do python.exe datoteke, recimo: c:\python27\python.exe)

 

Pod application arguments idu svi argumenti s kojima bi htio pozvati izvršnu datoteku. Budući da ti je python interpreter izvršna datoteka, kao argument ćeš mu proslijediti punu putanju do tvog python programa, recimo: c:\blablabla\mojprogram.py)

 

Working directory može ostati prazan, ili bi i njega mogao postaviti na putanju u kojoj se nalazi tvoj python program recimo: c:\blablabla\

 

Program pri dobivanju poruke iz OS-a da računalo izlazi iz standbyja provjerava je li process koji je je program pokrenuo i dalje prisutan, ako nije pokrenut će program nanovo. Razlozi zbog kojih bi to moglo zakazati su: da se na drugim verzijama windowsa WaitForSingleObject ponaša drukčije (malo vjerojatno), da program ne dobiva obavijest o izlasku iz standbyja, ili da CreateProcess funkcionira drukčije. Dakle da ponovim, program pokušava pokrenuti samo programe koje je on pokrenuo, a ne one koji su pokrenuti "izvana".

 

Ono što ja mislim je da bi ti morao je potražiti gdje točno tvoj program krepa kada se računalo budi iz standbyja, jer se u standbyu ništa ne izvršava i standby gotovo sigurno ne ubije python.exe process. Problem je negdje u tvojoj aplikaciji koja naiđe na grešku pri izlasku iz sustava iz standbyja (jer još svi podsutavi nisu dostupni, recimo mrežni) pa se program terminira.

 

Ili ćeš morati implementirati podršku za primanje windows poruka kako bi tvoj program sam mogao detektirati ulazak i izlazak iz standbyja.

 

U biti jako jednostavno možeš provjeriti je li problem u tvom programu ili u pythonu. Ona dva python programčića što sam gore stavio, kad ih pokreneš ući će u beskonačnu petlju i ispisivati brojeve u konzolu, i moraju i dalje raditi nakon izlaska iz standbyja. Ako ne rade problem je u pythonu / OS-u, ako rade problem je u tvojoj aplikaciji.

What Andy giveth, Bill taketh away.
Poruka je uređivana zadnji put sri 30.10.2013 23:23 (rustweaver).
11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Evo sad sam probao nakon što sam dodaj arguments i sve radi super, program se pali nakon što se komp probudi iz standby.

Inače program se pokreće automatski kod startupa, a probao sam dodati u svom programu funckiju za sve power evente ali ne želi mi to uspjet nekako jer mislim da je to zato što moj program radi preko konekcije, a kad komp ode u standby konekcija se ugasi i process je prekinut tako da je ubijen socket koji je spojen sa serverom, a proces sam po sebi ostane radit al bez komunikacije, pa mislim da je to glavni problem u mom programu, al eto ovaj C++ program jako dobro služi da ponovo pokreće process. Hvala na rješenju.

Poruka je uređivana zadnji put sri 30.10.2013 23:52 (Simon_says).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Hvala tebi na feedbacku. Nezgodno je pisati program koji mora raditi i na operacijskom sustavu kojeg nemaš instaliranog :D

Ako bude bilo nekih mušica javi mi (trenutno znam za neke ali sam lijen ispraviti ih jer ne ne čine neku štetu, recimo možeš otvoriti više konfiguracijskih i about dijaloga xD).

 

Može se po potrebi implementirati i podrška da se ubije process pri ulasku u standby.

 

Da, i ja mislim da je vjerojatno problem u socketu kod ulaska u standby.

Pogledaj ovo (pod pretpostavkom da koristiš winsock).

What Andy giveth, Bill taketh away.
Poruka je uređivana zadnji put čet 31.10.2013 0:41 (rustweaver).
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ako generiram 100 različitih brojeva na koji način mogu naći max i min generirani broj bez upotrebe niza, je li se to može uopće napraviti?

 
0 0 hvala 0
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

Help?

 

Zadatak:

Napišite program koji traži od korisnika udaljenost

koju je prešao u kilometrima i benzin koji je potrošio u

litrama i kao izlaz daje potrošnju automobila (broj litara na 100 km).

Podesite izlaz tako da se prikazuju samo 2 decimale.

 

Ja sam stigao da tu, valjda je ok ali neznam kako dalje.

 

#include <iostream>

 

using namespace std;

 

int main()

{

 

   int dist, spent, cons;

   cout << "Unesi predenu udaljenost u km: ";

   cin >> dist;

   cout << "Unesi potrosen benzin u litrama: ";

   cin >> spent;

}

Windows Phone FTW
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Xyloto kaže...

Ako generiram 100 različitih brojeva na koji način mogu naći max i min generirani broj bez upotrebe niza, je li se to može uopće napraviti?

ugrubo, pseudokod (jer pisem napamet a nisam dirao cpp neko vrijeme :) )

 

int min;

int max;

int random;

for (int i = 0; i<100; i++){

     random = rand(); //generiramo nasumicni broj

     if (i==0){  //ako je prvi prolaz postavimo inicijalne vrijednosti min, max

          min = random;

          max = random;

     } else { //ako nije prvi prolaz provjeri novu vrijednost randoma.

          if (min > random) min = random //ako je novi broj manji od minimuma pridajemo minimumu novu vrijednost

          if (max < random) max = random // ako je novi broj veci od maximuma isto kao gore :P

     }

}

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

@Dommy:

Podijeli količinu potrošenog goriva sa prijeđenim putem u kilometrima i dobit ćeš potrošnju po kilometru, nakon toga preostaje ti samo množenje sa 100 kako bi dobio potrošnju na 100 prijeđenih kilometara. Koristi floating point varijable (ili castaj) za takva računanja.

 

Za podešavanje količine znamenki iza decimalne točke koristi setprecision.

What Andy giveth, Bill taketh away.
Poruka je uređivana zadnji put sub 2.11.2013 0:12 (rustweaver).
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Xyloto kaže...

Ako generiram 100 različitih brojeva na koji način mogu naći max i min generirani broj bez upotrebe niza, je li se to može uopće napraviti?

Ovdje bi bio grijeh i koristiti niz, jer to bez razloga povećava prostornu složenost.

Inicijaliziramo varijablu max na 0 i min na RAND_MAX (najveći broj koji generator može vratiti) i kroz petlju generiramo brojeve istovremeno varijablama max i min mijenjamo vrijednosti ukoliko je to potrebno.

 

 

#include <iostream>
#include<cstdlib>
#include<ctime>
using namespace std;


int main()
{
    int max = 0, min = RAND_MAX, broj;
    srand(time(NULL));
    for(int i = 0; i < 100; i++)
    {
       broj = rand();
       if(broj > max) max = broj;
       if(broj < min) min = broj;
    }
    cout<< max << " " << min << endl;
    return 0;
}


 

 

A ako želimo smanjiti broj provjera na minimum, onda napravimo nešto slično što je doktor napravio, prvi rand dodamo objema varijablama, ali izvan petlje, da bi u petji vršili drugu provjeru samo ako je prva false, odnosno tekući random nije veći od tekućeg maksimuma. Ovdje je još moguće smanjiti broj provjera komparacijom >= u prvom uvjetu, ali nisam siguran da je pridruživanje brže od logičke provjere, pa nisam to napravio, mada nema logike provjeravati je li random manji od minimuma ako je jednak maximumu, tako da je logički ispravnije koristiti operator >= u prvom uvjetu.

 

#include <iostream>
#include<cstdlib>
#include<ctime>
using namespace std;


int main()
{
    int max, min, broj;
    srand(time(NULL));
    max = rand();
    min = max;
    for(int i = 1; i < 100; i++)
    {
       broj = rand();
       if(broj > max) max = broj;
       else if(broj < min) min = broj;
    }
    cout<< max << " " << min << endl;
    return 0;
}


 

Poruka je uređivana zadnji put sub 2.11.2013 14:36 (Floki).
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...

@Dommy:

Podijeli količinu potrošenog goriva sa prijeđenim putem u kilometrima i dobit ćeš potrošnju po kilometru, nakon toga preostaje ti samo množenje sa 100 kako bi dobio potrošnju na 100 prijeđenih kilometara. Koristi floating point varijable (ili castaj) za takva računanja.

 

Za podešavanje količine znamenki iza decimalne točke koristi setprecision.

Uspio sam sada, hvala, ali imam jednu primjedbu, sta ako korisnik unese predenu udaljenost koja je veca od 100km? onda mi ne ispisuje tocan rezultat, kako mogu to rjesiti?

Ovo sam napisao za sada:

      float predeno, litre, potrosnja1km, potr100km;

   cout << "Unesi predenu udaljenost u km: ";

   cin >> predeno;

   cout << "Unesi potrosen benzin u litrama: ";

   cin >> litre;

   potrosnja1km = litre / predeno;

   potr100km = potrosnja1km * 100;

   cout << "Potrosnja na 100km je: " <<setprecision(3)<< potr100km << endl;

   return 0;

Windows Phone FTW
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
DommY kaže...

Uspio sam sada, hvala, ali imam jednu primjedbu, sta ako korisnik unese predenu udaljenost koja je veca od 100km? onda mi ne ispisuje tocan rezultat, kako mogu to rjesiti?

Kako to misliš ne ispisuje ti točan rezultat? Objasni kakve inpute imaš i kakav output dobiješ, a kakav output očekuješ.

What Andy giveth, Bill taketh away.
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

Ma evo pišem ti podatke sada i kuzim da program ipak radi točno, neznam šta sam prije mislio, zbunio se valjda {#}

 

Windows Phone FTW
Moj PC  
0 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
DommY kaže...

Ma evo pišem ti podatke sada i kuzim da program ipak radi točno, neznam šta sam prije mislio, zbunio se valjda {#}

 

 

Samo pogledaj formulu:

 

 

litaraPoKilometru = litara / kilometara;

 

 

litaraZaStoPedesetKilometara = litaraPoKilometru * 150 kilometara - kad množiš u mjerama kratiš kilometar i ostaje litar, mjerna jedinica koja ti treba

 

 

kilometaraPoLitri = kilometara / litara;

 

kilometaraZaPedesetLitara = kilometaraPoLitri * 50 litara - kad množiš kratiš u mjerama litar i ostaje kilometar, mjerna jedinica koja ti treba

Poruka je uređivana zadnji put sub 2.11.2013 16:30 (Floki).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Program mi ne radi kada mu dodam naredbu za  pohranu u .txt

dali moram kod svih izlaznih funkcija dodat slovo f  ili samo kod onih koje zelim ispisat u txt

 

#include<stdio.h>

int main()
{
   int n;
   int niz[31];
   int najveci=0;
   int najmanji=1;
   
   FILE  *fp;

   fp=fopen("C:\\NIZ.txt","w");

   // UNOS n BROJA
   do
   {
   fprintf("\n\tUNESI BROJ 0<n<=30 \n");
   fscanf("%i",&n);
   if(n>0 && n<=30) break;
   fprintf("\n POGRESAN UNOS ");
   }
   while(!(n>0 && n<=30));
   fprintf(" \n \t NIZ BROJEVA \n ");
   // ISPIS NA EKRAN NIZA OD N BROJEVA - TRAZENJE NAJVECEG I NAJMANJEG BROJA
   for(n=n;n>=1;n--)
   {
      niz[n]=n;
      if(niz[n]>najveci)
         najveci=niz[n];
      
      if(niz[n]<najmanji)
         najmanji=niz[n];
      fprintf(" \n \t %i \n ",niz[n]);
   }
   // ISPIS NAJMANJEG I NAJVECEG BROJA
   fprintf(" \n NAJVECI BROJ U NIZU %i \n \n ",najveci);
   fprintf(" \n NAJMANJI BROJ U NIZU %i \n \n ",najmanji);
   if(niz[10]==10)
      fprintf(" ADRESA 10 POHRANILA JE BROJ %i \n",niz[10]);

   fclose(fp);

   return 0;
}

 

U BILDU MI IZBACUJE

 

1>------ Build started: Project: A2 sdio.h, Configuration: Debug Win32 ------
1>  vj5.-3.cpp
1>c:\users\marko\desktop\fax\a2 sdio.h\a2 sdio.h\vj5.-3.cpp(13): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\stdio.h(218) : see declaration of 'fopen'
1>c:\users\marko\desktop\fax\a2 sdio.h\a2 sdio.h\vj5.-3.cpp(19): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\stdio.h(290) : see declaration of 'scanf'
1>c:\users\marko\desktop\fax\a2 sdio.h\a2 sdio.h\vj5.-3.cpp(34): error C2664: 'fprintf' : cannot convert parameter 1 from 'const char [11]' to 'FILE *'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\marko\desktop\fax\a2 sdio.h\a2 sdio.h\vj5.-3.cpp(37): error C2664: 'fprintf' : cannot convert parameter 1 from 'const char [31]' to 'FILE *'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\marko\desktop\fax\a2 sdio.h\a2 sdio.h\vj5.-3.cpp(38): error C2664: 'fprintf' : cannot convert parameter 1 from 'const char [32]' to 'FILE *'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

 

 

 

Hvala

 

 

 

Poruka je uređivana zadnji put ned 3.11.2013 16:16 (Zodiak).
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Mislim da ti bas ne shvacas kako koristiti fprintf i fscanf funkcije, pogledaj ovdje:

http://www.cplusplus.com/reference/cstdio/fprintf/

 

Koje argumente prima funkcija, koliko argumenata i kojim redoslijedom, to si pogledaj, a dolje onda imas i primjer koristenja.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Ocito je da ne shvacam zato si mi mogao objasnit ,a ne mi dati link da citam

da sam htio trazit po netu odgovor napravio bi to ,a ne postao tu

 

Svejedno hvala!

17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Zodiak kaže...

Ocito je da ne shvacam zato si mi mogao objasnit ,a ne mi dati link da citam

da sam htio trazit po netu odgovor napravio bi to ,a ne postao tu

 

Svejedno hvala!

 

Nisi se ni ti baš potrudio objasniti što hoćeš postići sa programom, pa se mora dešifrirati namjera iz koda. 

Traženje najvećeg i najmanjeg preko niza, čemu to.

Poruka je uređivana zadnji put ned 3.11.2013 18:51 (Floki).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

program je samo vjezba ,a ono sta me zanima je kako ispisat ga u txt

te zasto dolazi do greska kada dodam FILE *fp i ostalo sta ide uz to jer program bez toga i  f-ova uz printf i scanf radi ono sto treba

program uzima najveci broj iz niza i najmanji makar ce 1 uvjek biti najmanj ali dobro nije u tome stvar

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Zodiak kaže...

Ocito je da ne shvacam zato si mi mogao objasnit ,a ne mi dati link da citam

da sam htio trazit po netu odgovor napravio bi to ,a ne postao tu

Bez čitanja nema programiranja... Ne znam koliko se jednostavnije može objasniti fprintf od linka koji ti je domagoj stavio. Uostalom i brže je, umjesto da na forumu 20 minuta čekaš odgovor za nešto tako trivijalno.

 

fprintf se koristi za ispis u datoteku, fscanf se koristi za čitanje iz datoteke. Odakle si dobio ideju koristiti fprintf i fscanf umjesto printf i scanf?

What Andy giveth, Bill taketh away.
Poruka je uređivana zadnji put ned 3.11.2013 19:15 (rustweaver).
E-mail:
Lozinka:
 
vrh stranice