Programiranje

Programiranje u C-u - od svega pomalo

Dex.pwn ned 21.10.2018 22:39

#include <stdio.h>
int main()
{
 int brojevi[10];
 for (byte i = 0; i < sizeof(brojevi); i++) sscanf("%d", &brojevi[i]);
 
 for (byte i = 0; i < sizeof(brojevi); i++)
 {
  if (brojevi[i] != 0 && i == sizeof(brojevi) - 1) printf("%c ", brojevi[i] + 64); // ZADNJE SLOVO
  else if (i != sizeof(brojevi) - 1) printf("%c ", brojevi[i] + 65); // SLOVO U REDU
  else printf("Kraj poruke");
 }
}

Equi pon 22.10.2018 08:39

Zanima me kako kad petlja krene vrtiti broj 1, kako da mu pridružim broj koji upišem. npr 5.

 

I jel ovaj zadatak uopće treba s  forpetljom, pošto mi petlja sama izbacije input, a ja bi trebao napisati svoje brojeve.

 

Riješio sam to s if i else if

Equi pon 29.10.2018 10:34

Pozdrav opet

 

Zadatak je upisati decimalne brojeve, pretvoriti ih u binarne i onda pobrojati broj jedinica (1). Ne znam sad kako da u sve to ubacim da prepoznaje jedinice i broji ih.

 

Za sad sam ovo uspio:

 

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int broj,b,broj2, b2,br1=0,br2=0, i, ostatak, binarni1=0, binarni2=0, jedinica1=1, jedinica2=1;

    broj2=b2;
    scanf("%d %d", &b, &b2);


    broj=b;
   while (b>0)
   {
       ostatak= b%2;
       binarni1= binarni1+ostatak*jedinica1;
       jedinica1=jedinica1*10;
       b= b/2;



   }
   broj2=b2;
   while (b2>0)
   {
        ostatak= b2%2;
       binarni2= binarni2+ostatak*jedinica2;
       jedinica2=jedinica2*10;
       b2= b2/2;



   }




    printf("%d %d", binarni1, binarni2);



    return 0;
}

Dex.pwn pon 29.10.2018 14:15

Evo ti u C++u pa prepravi kod u C(sscanf i te šeme).

Funkcija za dec2bin je pokupljena s neta.

 

 

#include <conio.h>
#include <iostream>

using namespace std;

void countOnes(int x, int &ones)
{
 do
 {
  if (x % 10 == 1) ones++;
  x /= 10;
 }
 while (x != 0);
}

long long convertDecimalToBinary(int n)
{
    long long binaryNumber = 0;
    int remainder, i = 1, step = 1;

    while (n!=0)
    {
        remainder = n%2;
        cout << "Step " << step++ << ": " << n << "/2, Remainder = " << remainder << ", Quotient = " << n/2 << endl;
        n /= 2;
        binaryNumber += remainder*i;
        i *= 10;
    }
    return binaryNumber;
}

int main()
{
 int x, ones = 0;

 cout << "Upisi broj: ";
 cin >> x;

 x = convertDecimalToBinary(x);

 countOnes(x, ones);
 cout << endl << ones;

 getch();
 return 0;
}

Radi provjereno
Equi pon 29.10.2018 15:52
Dex.pwn kaže...

Evo ti u C++u pa prepravi kod u C(sscanf i te šeme).

Funkcija za dec2bin je pokupljena s neta.

 

 

#include <conio.h>
#include <iostream>

using namespace std;

void countOnes(int x, int &ones)
{
 do
 {
  if (x % 10 == 1) ones++;
  x /= 10;
 }
 while (x != 0);
}

long long convertDecimalToBinary(int n)
{
    long long binaryNumber = 0;
    int remainder, i = 1, step = 1;

    while (n!=0)
    {
        remainder = n%2;
        cout << "Step " << step++ << ": " << n << "/2, Remainder = " << remainder << ", Quotient = " << n/2 << endl;
        n /= 2;
        binaryNumber += remainder*i;
        i *= 10;
    }
    return binaryNumber;
}

int main()
{
 int x, ones = 0;

 cout << "Upisi broj: ";
 cin >> x;

 x = convertDecimalToBinary(x);

 countOnes(x, ones);
 cout << endl << ones;

 getch();
 return 0;
}

Radi provjereno

 Hvala, probat cu to konvertirati s obzirom da sam tek krenuo s C programiranjem

lukaspy pet 2.11.2018 09:51

Poz, imam zadatak:

 

"Strašni Bundy voli kucati na vrata susjedima. Većinom susjedi baš ne reagiraju na to dobro - neki su već navikli pa znaju da on kuca otprilike oko 16 sati popodne, drugi se možda u to vrijeme ne nalaze doma ali vide masne otiske od kucanja u gornjem lijevom kutu vrata. Ostali koji su kod kuće su ga već na nekoliko načina pokušali uhvatiti i kazniti ali nije im uspjelo iz raznih raloga - neki se poskliznu na izlazu iz stana od masnih otisaka Bundy-evih cipela na svakodnevno svježe opranom podu hodnika, drugi su prestari da bi ga uhvatili ili je Bundy jednostavno prebrz. No ono što svi zajedno čekaju je poznati praznik Halloween (koji se inače na taj način ne slavi u Hrvata još od stoljeća sedmog), ali naš Bundy ga svejedno slavi. Jedini.

To što jedini slavi Halloween i jedini u kvartu ide maskiran kucati po vratima se može činiti kao pomalo neobična ideja - no Bundy osim potrebe da zvoni i kuca susjedima, ima i potrebu proučavati matematiku. Posbeno mu je zanimljiv problem Hodge Conjecture, ali i bez poznavanja rješenja tog problema lako je zaključiti da ako se minimizira broj suučesnika u događaju s obzirom na konačan broj bombona i slatkiša u susjedstvu, na taj način se maksimizira količina dobivenih slatkiša za Bundya."
Primjer ulaza 1:
4 2
5 11 5 6
Primjer izlaza 1:
17
Primjer ulaza 2:
7 4
9 9 9 2 2 2 5
Primjer izlaza 2:
32
Iskreno, nakon definiranja varijabli ne znam kako, i gdje da krenem. Ako neko ima neki prijedlog, smjernicu ili nesto, super, bilo kakva pomoc je dobrodosla. Hvala :)
Equi sub 3.11.2018 21:28

Pozdrav,

 

naišo sam na jedan problem.

 

"Napisati program koji će na temelju unosa datuma i godine rođenja za jednu osobu ispisati koji je ona horoskopski znak prema zodijaku i kojem elementu pripada. Nakon toga u program se može unijeti N osoba za koje se radi izračun kompatibilnosti s prvom osobom. Znakovi se slažu najbolje (razina kompatibilnosti) ukoliko pripadaju istom elementu."

 

Kako napraviti dio sa unosom N osoba i da npr. napišem 2 osobe i onda ide unos datuma tih osoba.

Equi ned 4.11.2018 21:53

Evo mene opet, zapeo sam kod krivog unosa.

 

Naime trebam učitati npr. dan koji je u intervalu od 1 do 31.

 

Ako je krivi, kako da ga opet učitam:

 

scanf ("%d", &dan);

 

if (dan < 0 || dan >31)

   printf ("Krivi unos");

   e sad da li ovdje ide opet scanf pa da prođe opet kroz if petlju (msm ne znam ovaj dio)

Equi sri 7.11.2018 13:33
Dex.pwn kaže...
UNOS: sscanf(...)
if(uvjet)
{
Krivi unos
goto UNOS;
}


na mobitelu sam

 ma riješio sam bilo je

uvijet
pa printf "Krivi unos";

scanf ("%d", &dan ili mjesec ili godina);

al hvala

Equi sri 14.11.2018 10:53

Pozdrav,

 

može li mi netko reći kako ovo funkcionira:

 

#include <stdio.h>
#include <stdlib.h>

int main()
{
int niz[8] = {-1};
int i = 0;

 for(i = 7; i >= 0; i--)
    {
         niz[i] += niz[7-i] * i;
     }
 printf("%d", niz[i]);

    return 0;
}

 

znam da je niz -1 0 0 0 0 0 0 -7.


Znam zašto je -1, ali ne razumijem ostatak kako se izvršava dalje kod.

 

 

 

SHVATIH

Equi uto 27.11.2018 13:16

#include <stdio.h>
#include <stdlib.h>
#define MAXR 10
#define MAXS 10
int main()
{
        int i,j, sx=1, sy=1;
        /** V= Vrata, TOCKE= su mjesta*/
        enum vrata {V=35};
        enum {TOCKE=46};
        char mat[MAXR][MAXS];

        mat[0][0]= V;
        mat [MAXR-1][0]= V;
        mat [0][MAXS-1]= V;
        mat [MAXR-1][MAXS-1]= V;

       for (i=1;i<MAXR-1; i++){
            mat [i][0]= mat [i][MAXS-1]=V;
                for (j=1; j<MAXS-1;j++){
                   mat [0][j]=mat [MAXR-1][j]=V;
       }
       }


        for(i = 1; i < MAXR-1; i++){
            for(j = 1; j < MAXS-1; j++){
                     mat[i][j] = TOCKE;
            }
        }


        return 0;
}

Pozdrav, kako da ovo dobro printf-am ?

Keklja sub 1.12.2018 10:26

pozz svima. Poceo sam uciti C programiranje i jako je zanimljivo ali jedno ne mogu razumjeti. Radi se o void funkciji. Svuda pise da ona ne vraca vrijednost. Sto znaci "vracanje vrijednosti" i sto je vrijednost? Ako stavim naredbu printf("nesto"); to mi se ispise na terminalu da li je to vracanje vrijednosti? I gdje je u biti vraca?
Hvala unaprijed

Top Bugovac sub 1.12.2018 14:17
Keklja kaže...
pozz svima. Poceo sam uciti C programiranje i jako je zanimljivo ali jedno ne mogu razumjeti. Radi se o void funkciji. Svuda pise da ona ne vraca vrijednost. Sto znaci "vracanje vrijednosti" i sto je vrijednost? Ako stavim naredbu printf("nesto"); to mi se ispise na terminalu da li je to vracanje vrijednosti? I gdje je u biti vraca?
Hvala unaprijed

 Vraca vrijednost na mjesto gdje si pozvao funkciju

 

npr., 

Neka funkcija faktorijel vraca int koji je faktorijel broja kojeg primi

 

a = faktorijel(3)

 

u varijablu a ce se spremiti rezultat funkcije (u ovom slucaju 6)

 

Void funkcije ne vracaju vrijednost pa bi poziv:
a = neka_funkc_koja_vraca_void()

bio neispravan jer u varijablu a ne bi imao sto spremiti

madagaskar123 sub 22.6.2019 12:57

Da li netko može ovo riješiti?

 

 

  1. 1. Kreirati dvodimenzionalno cjelobrojno polje koje predstavlja pravokutnu matricu i omogućiti korisniku unos dimenzije tako da je n x m (4<= n <= 10 i 5 <=m<=  13).

Popuniti dvodimenzionalno polje pseudo-slučajnim vrijednostima [-25, 30]. Pronaći najmanji element svakog stupca, te ispisati na ekran sumu svakog stupca pomnoženu najmanjim elementom tog stupca.

 

  1. 2. Napisati funkciju koja određuje i vraća koliko ima elemenata u predanom joj polju cijelih brojeva koje počinju sa znamenkom 2. U svrhu testiranja u main() funkciji učitati n elemenata s tipkovnice u cjelobrojno polje te pozvati napisanu funkciju i ispisati njenu povratnu vrijednost na ekran.

 

  1. 3. Napisati funkciju koja računa i vraća produkt svih vrijednosti elemenata polja koji su strogo veći od srednje vrijednosti svih elemenata polja i strogo manji od najveće vrijednosti u polju. Funkcija treba raditi i sa poljima različite duljine. U main() funkciji deklarirati jedno polje duljine 25, te popuniti s pseudo-slučajnim brojevima [-10, 30]. U main() funkciji pozvati napisanu funkciju i ispisati povratnu vrijednost.

 

  1. 4. Napisati funkciju koja u predanom joj stringu pronalazi i vraća koliko puta se ponavlja slog ''ka''. U main() funkciji dinamički zauzeti polje od 100 elemenata tipa char, unijeti string s tipkovnice i predati funkciji te ispisati povratnu vrijednost funkcije.
Hazar pet 7.8.2020 17:06

Pozdrav ljudi,

 

Evo na jesen upisujem TVZ računarstvo,  a kako nemam nekog baš predzanja s programiranjem odlučio sam krenuti sad da bude lakše dok krene faks. Gledam CS50 tutorijal na YouTubeu i rješavam zadatke usput. Evo recimo ovaj zadatak mogu riješiti: "Napišite program koji u unosu prvo prima koliko će se brojeva unijeti, a potom se unosi toliko brojeva. Prebrojite i ispišite koliko unijetih brojeva je neparno. Maksimalno se smije unijeti 20 brojeva, a unijeti brojevi moraju biti cijeli, pozitivni i manji od 100." Ali sad nešto kompleksnije bi već bio malo problem. https://www.znanje.org/knjige/computer/c/c_mm/nizovi.htm Ovo isto sam ajmo reć sve pohvatao.

 

Da li da samo nastavim pratiti CS50 CS50 pa ću preko tog tutorijala polako moći rješavati kompleksnije zadatke ili imate neki drugi prijedlog. Gdje bih još mogao naći zadatke koji bi bili po mojoj mjeri?

 

Hvala unaprijed.

PzKpfw pon 10.8.2020 11:44

 

@Hazar

 

Probaj po nekoj knjizi rokati frendač. Možeš i video, ali bitno da shvatiš teoriju. Za zadatka imaš na Internetu koliko god toga želiš. Kreni sa nekim materijalima koji se rade na fakultetu. Upišeš u Google "zbirka zadataka programiranje", te će naći zadatke, ali možeš krenuti i sa zadacima sa sajtova kao što su:codewars.com, edabit.com, hackernoon.com,code signal.....samo gluglaj pojmove koji te zanimaju.

 

Mali koracima ćeš uspjeti stvoriti sebi programersku apstrakciju, te ćeš svaki novi prijeđenim izazovom postajati sve bolji i bolji.

 

Ili pak kreni raditi neki mini-projektiće kaj ćeš gledati kaj ekipa radi na YT.

 

Suerte!

 

Hazar pon 10.8.2020 18:25
PzKpfw kaže...

 

@Hazar

 

Probaj po nekoj knjizi rokati frendač. Možeš i video, ali bitno da shvatiš teoriju. Za zadatka imaš na Internetu koliko god toga želiš. Kreni sa nekim materijalima koji se rade na fakultetu. Upišeš u Google "zbirka zadataka programiranje", te će naći zadatke, ali možeš krenuti i sa zadacima sa sajtova kao što su:codewars.com, edabit.com, hackernoon.com,code signal.....samo gluglaj pojmove koji te zanimaju.

 

Mali koracima ćeš uspjeti stvoriti sebi programersku apstrakciju, te ćeš svaki novi prijeđenim izazovom postajati sve bolji i bolji.

 

Ili pak kreni raditi neki mini-projektiće kaj ćeš gledati kaj ekipa radi na YT.

 

Suerte!

 

 Hvala, a tako najbolje da, korak po korak. Skužio sam da mi je dobro proučavati programe gdje mi je većina već poznata i razumljiva, ali jedan dio koda nije pa onda njega pohvatam, primjerice igrica papir škare dijamant.

 

 

PzKpfw uto 11.8.2020 18:43

 

@Hazar

 

Ono što si pitao za svoj zadatak za kontrolu unosa raspona brojeva (uzeo sam raspon od 1-5, radi lakšeg debugiranja):

 

#include <stdio.h>

int main()

 

{

int i=0;
int lista[5];

printf("Unesi 5 brojeva izmedu 1 i 5\n");

do
{


printf("Unesi %d. broj: ", i + 1);
scanf("%d", &lista[i]);

//kontrola unosa - dal' broj odgovara rasponu
if (lista[i] > 5 || lista[i] < 1) {
printf("Pogresan unos, unesite broj u rasponu od 1 do 5 \n");
continue;
}

i++;
} while (i < 5);

printf("\n");

//ispis sadrzaja polja
for(int j=0; j<5;j++)
printf("%d ", lista[j]);

 

printf("\n");
system("pause");


return 0;
}

Hazar čet 13.8.2020 08:03

Začudo sam čak uspio sam, samo nisam baš bio zadovoljan izgledom rješenja, htio sam da bude malo elegantnije :D. I čak sam stavio tu kod, ali rekoh ma dobro neću zamarat i izbrisao taj dio posta, ali kolega je odgovorio i hvala. Ma bit će pitanja, ne tražim da mi netko drugi rješava, od tog ništa nema.