Programiranje u C-u - od svega pomalo izdvojena tema

poruka: 1.661
|
čitano: 386.995
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo
Molio bi pomoć sa sljedeća 3 zadatka.
Ako možete i napisati koji komentar kako šta radi i to da mogu bolje razumjet.
Hvala!
   
1. Ako je ulazni parametar 3,što je rezultat izvođenja funkcije?
char result[255];
int f(int input, char *month)
{
char months*[12]=
{"january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"};
int i;
for (i=0;i<12;i++)
  
  {
  if (i%input==0)
     {
     printf("%s\n", months[i]);
     strcpy(result,months[i]);
     return 0;
     }
  }
return -1;
}
2. Što je rezultat izvođenja funkcije za ulazni parametar 7?
double fun(int x)
{
  double g=9,81;
  for(int i=0; i<x; i++)
    
   {
     g+=i
    }
   return (int) g;
}
3. Napisati program koji učitava stringove sa tipkovnice sve dok se ne upiše string "FINITO" ili dok se ne unese 10. string.
Nakon toga ispisati sve stringove čija je duljina paran broj.
(Napomena: Za usporedbu 2 stringa koristi se funkcija Int strcmp(const char *s1, const char *s2) koja vraća 0 ako su stringovi isti.
Za duljinu stringa koristi se funkcija Int strlen(const char *s); koja vraća broj karaktera u stringu ne uključujući '\0'.
Obje funkcije su deklarirane u biblioteci <string.h>
 
0 1 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
pacak.rock kaže...
1. Ako je ulazni parametar 3,što je rezultat izvođenja funkcije?
2. Što je rezultat izvođenja funkcije za ulazni parametar 7?

Pa oba si mogao kompajlirati i vidjeti rezultat ako ti je tako teško. Za oba zadatka dovoljno ti je samo znati petlje, polja i što radi modulo operator. Priznaj da nisi ni pokušao odvrtiti petlje u glavi...

 

pacak.rock kaže...
3. Napisati program koji učitava stringove sa tipkovnice sve dok se ne upiše string "FINITO" ili dok se ne unese 10. string.

FINITO? Zbilja? {#}

 

#include <stdio.h>
#include <string.h>

int main()
{
    char stringovi[10][255]={0};
    int i, n;

    for (i=0; i<10; i++)
    {
        gets(stringovi[i]);
        if (strcmp(stringovi[i], "FINITO")==0)
            break;
    }

    for (n=0; n<i; n++)
        if (strlen(stringovi[n])%2==0)
            printf ("%s\n", stringovi[n]);

    return 0;
}

 

Pazi da FINITO napišeš velikim slovima, jer nisam radio konverzije u mala slova budući da si i ti naveo tu riječ pisanu velikim slovima.

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
13 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

U prva dva uzmi ovako:
input: 3
i=0
  0%3!=0
i=1
  1%3!=0
i=2
  2%3!=0

i=3

  3%3==0

Ispiše se "april"!
U polje result se upisuje "april".


Drugi
x: 7
Sedam puta će se varijabla g uvećati, prvi put za 0, zatim za 1, pa za 2, pa za 3 ... do 6. Odnosno uvećati će se šest puta jer iako uvećaš sa 0, šta si dobio, opet taj broj.

13 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Pozdrav! Početnik sam u C-u i zanima me kako bi se ovo riješilo.

 

Znači, trebam ispisati brojeve od 0 do 100 ali po 3 (nije problem).

 

for(a=0;a<=100;a+=3)
  {
    printf("\n %d",a);
  }

 

Ali, sada kada je to ispisano, zanima me jeli moguce prebrojati te brojeve.

 

Kada ih izlista, poslje da pise npr. Brojeva od 0 do 100 po 3 ima: __ .

 

Hvala.

 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Možeš dodati pomoćnu varijablu koja će ti služiti kao brojač. Recimo:


int pom=0;

for(a=0;a<=100;a+=3)
 {

    pom++;
    printf("\n %d",a);
 }

printd("Brojeva od 0 do 100 ima %d", pom);

13 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
royalhero kaže...

Možeš dodati pomoćnu varijablu koja će ti služiti kao brojač. Recimo:


int pom=0;

for(a=0;a<=100;a+=3)
 {

    pom++;
    printf("\n %d",a);
 }

printd("Brojeva od 0 do 100 ima %d", pom);

E puno hvala, mislim da sam shvatio.

17 godina
offline
Programiranje u C-u - od svega pomalo

Možeš iskoristiti i brojač petlje za dobiti broj brojeva jer je broj brojeva jednak broju iteracija petlje.

Ono gore se zove postavljanje zastavice, a varijabla pom zastavica i uobičajena je procedura, ponekad se može bez nje, ponekad ne.

 

#include<stdio.h>


int main()
{
    int i;
    for(i=0; i<=100; i+=3)
       printf("%d ", i);
    printf("\n%d", i/3);
    return 0;
}

Poruka je uređivana zadnji put uto 4.9.2012 21:02 (Floki).
 
2 0 hvala 0
16 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
DaRkYY3 kaže...
royalhero kaže...

Možeš dodati pomoćnu varijablu koja će ti služiti kao brojač. Recimo:


int pom=0;

for(a=0;a<=100;a+=3)
 {

    pom++;
    printf("\n %d",a);
 }

printd("Brojeva od 0 do 100 ima %d", pom);

E puno hvala, mislim da sam shvatio.

....vidim vidim da su prve godine faksa počele ali i neke škole ...bude još ovakvih zadataka :)

 

Private
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Može li mi netko dati neki dobar C tutorial ? Može i na hrvatskom i na engleskom jeziku.

Moj PC  
0 0 hvala 0
15 godina
online
Re: Programiranje u C-u - od svega pomalo
patch123 kaže...

Može li mi netko dati neki dobar C tutorial ? Može i na hrvatskom i na engleskom jeziku.

http://www.cprogramming.com/tutorial/c/lesson1.html

I would love to change the world, but they won't give me the source code
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
captain_soap_McTawish kaže...
patch123 kaže...

Može li mi netko dati neki dobar C tutorial ? Može i na hrvatskom i na engleskom jeziku.

http://www.cprogramming.com/tutorial/c/lesson1.html

Na toga sam i ja naišao.Čini se ok. Je li iz iskustva/znanja govoriš da je dobar ?
Mislim treba bi neki tutorial koji je u jednu ruku razumljiv ali opet i detaljan,zato i pitam ovdje ako mi netko može preporučiti. 

14 godina
offline
Programiranje u C-u - od svega pomalo

Radimo u C-u na faksu, i moram reči da me PHP razmazio što se tiče rada sa stringovima. Razlika nebo i zemlja.

WordPress ❤
 
0 0 hvala 0
15 godina
online
Re: Programiranje u C-u - od svega pomalo
patch123 kaže...

Na toga sam i ja naišao.Čini se ok. Je li iz iskustva/znanja govoriš da je dobar ?
Mislim treba bi neki tutorial koji je u jednu ruku razumljiv ali opet i detaljan,zato i pitam ovdje ako mi netko može preporučiti. 

Koliko sam uspio preletiti po njemu, cini mi se dosta dobrim za tutorial. Mislim da bi trebao biti razumljiv svakome.

I would love to change the world, but they won't give me the source code
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
captain_soap_McTawish kaže...
patch123 kaže...

Na toga sam i ja naišao.Čini se ok. Je li iz iskustva/znanja govoriš da je dobar ?
Mislim treba bi neki tutorial koji je u jednu ruku razumljiv ali opet i detaljan,zato i pitam ovdje ako mi netko može preporučiti. 

Koliko sam uspio preletiti po njemu, cini mi se dosta dobrim za tutorial. Mislim da bi trebao biti razumljiv svakome.

Hvala. Onda ću radit po njemu. Ako netko zna neki bolji nek stavi link.

Poruka je uređivana zadnji put čet 8.11.2012 21:37 (patch123).
16 godina
offline
Programiranje u C-u - od svega pomalo

Napisite rekurzivnu funk. koja provjerava je li zadna rijec ili recenica obrtaljka(palindrom). U ulaznom nizu zanemarite razmak, sve znakove interpunk. i razliku izmedu velikih i malih slova.... pls help! 

može i pseudo kod, bio bi poželjan zapravo :D

Poruka je uređivana zadnji put pet 9.11.2012 8:25 (Blade18).
Moj PC  
0 0 hvala 0
14 godina
offline
Re: Programiranje u C-u - od svega pomalo

Ne kužim zašto bi se to trbalo riješiti rekurzivnom funkcijom kad ti treba samo jedan upit, osim ako moraš tražiti upis dokle god nije upisan palindrom.

 

Po meni bi pseudo kod bio:

 

traži upis

spremi upis u neki string

filtriraj string da ti ostanu samo slova

obrni string i spremi ga u drugu varijablu

usporedi te dvije varijable

ako su jednake, true, inače false

 

ispiši rezultat

 

E sad, ja to znam napraviti u PHP-u bez pol frke, a rad sa stringovima u C-u mi je -.-

 

Možda bi se rekurzivnost mogla primjeniti kod filtriranja funkcije, pošto je u C-u string zapravo array charactera, vjerojatno bi se mogla raditi rekurzija dok se ne dođe do kraja array-a (ili ti polja).

 

Možda pričam gluposti pa neka ti netko od ekipe koja radi u C-u to bolje napiše.

WordPress ❤
12 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Evo ti niti vodilje: palindrom je

a) riječ koja se sastoji od jednog ili nijednog slova

b) riječ koja se dobije kad se palindromu doda isto slovo na početak i kraj

16 godina
offline
Programiranje u C-u - od svega pomalo

hvala dečki na pomoći! to je bio test zadatak za rekurziju, tak da je morala biti rekurzija... 

Moj PC  
0 0 hvala 0
17 godina
offline
Programiranje u C-u - od svega pomalo

Ova rekurzija koristi aritmetiku pokazivača i rad sa ascii vrijednostima char znakova, sa stoga skida razliku ascii vrijednosti na kontra stranama, ako sveukupan zbroj bude različit, odnosno veći od 0 - nije palindrom.

Abs je stavljen da ne bi bilo skrivenih iznenađenja, a "čišćenje" char niza napravljeno sa isalpha i tolower funkcijama.

 

#include<cstdio>
#include<cstring>
#include<cctype>
#include<cstdlib>

int RekurzijaPalindrom(char* recenica, int duljina)
{
    if(duljina <= 1) return 0;
    return abs(recenica[duljina-1]-recenica[0]) + RekurzijaPalindrom(recenica+1, duljina-2);
}
int main()
{
    char recenica[100];
    char recenica1[100];
    int brojac = 0;
    gets(recenica);
    for (int i = 0; i < strlen(recenica); i++)
    {
       if(isalpha(recenica[i]))
       {
          recenica1[brojac++] = tolower(recenica[i]);
       }
    }
    recenica1[brojac] = '\0';
    if(RekurzijaPalindrom(recenica1, strlen(recenica1)) == 0)
       printf("Palindrom\n");
    else
       printf("Nije palindrom\n");
    return 0;
}

Poruka je uređivana zadnji put sub 10.11.2012 17:57 (Floki).
 
0 0 hvala 1
13 godina
offline
Programiranje u C-u - od svega pomalo

Nešto me zeza ovaj zadatak:

"Tražite od korisnika unos jednog po jednog znaka, te za svako unešeno slovo ispišite je li to suglasnik ili samoglasnik, a za svaku unešenu znamenku ispišite je li ona parna ili nije.

Unos prekinite kada korisnik unese znak koji nije ni slovo ni znamenka."

 

Kod sličnih zadataka mi je isto ovako nešto bilo - možda ima veze s charom?

 

#include <stdio.h>

int main()
{
    char znak;
    do
    {
    printf("Unesite slovo ili znamenku: ");
    scanf("%c", &znak);
    if(((znak >= 'a') && (znak <= 'z')) || ((znak >= 'A') && (znak <= 'Z')))
    {
       switch(znak)
       {
          case 'a':
          case 'A':
          case 'e':
          case 'E':
          case 'i':
          case 'I':
          case 'o':
          case 'O':
          case 'u':
          case 'U':
             printf("%c je samoglasnik.\n", znak);
          default:
             printf("%c je suglasnik.\n", znak);
       }
    }
    else if((znak >= '0') && (znak <= '9'))
    {
       if(znak % 2 == 0)
          printf("%c je paran.\n", znak);
       else
          printf("%c je neparan.\n", znak);
    }
    else
    {
       printf("%c nije ni slovo ni znamenka.\n", znak);
       break;
    }
    }
    while(znak);
    return 0;
}

 

Ovako izgleda kada se unese neki znak. Ovako izgleda kada se unese neki znak.
0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
pr0n_addict kaže...

Nešto me zeza ovaj zadatak:

"Tražite od korisnika unos jednog po jednog znaka, te za svako unešeno slovo ispišite je li to suglasnik ili samoglasnik, a za svaku unešenu znamenku ispišite je li ona parna ili nije.

Unos prekinite kada korisnik unese znak koji nije ni slovo ni znamenka."

 

Kod sličnih zadataka mi je isto ovako nešto bilo - možda ima veze s charom?

Problem je što čitaš samo jedan znak a u input bufferu se nalazi i newline znak. Trebaš očistiti input buffer odmah nakon čitanja znaka, za to imaš nekoliko rješenja:

 

-najjednostavnije (i veoma neportabilno jer spada u undefined behaviour) jednostavno flushati stdin:

char znak;
scanf("%c", &znak);
fflush(stdin);

 

-pročitati sve sa inputa u nekakvo polje i nakon toga uzeti samo ono što nas zanima (prvi znak polja):

char znak, buffer[32];
fgets(buffer, 32, stdin);
znak=buffer[0];

 

-očistiti stdin pomoču petlje sa getchar():

char znak, c;
scanf("%c", &znak);
while ((c=getchar())!='\n' && c!=EOF);

 

0xBADC0DE
Poruka je uređivana zadnji put sri 14.11.2012 23:06 (rustweaver).
13 godina
offline
Programiranje u C-u - od svega pomalo

Hvala puno, još mi je samo nedostajao break u switchu prije defaulta.

Btw, rasturaš ovo.

0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
Poruka je uređivana zadnji put sri 14.11.2012 22:19 (pr0n_addict).
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Zadatak nije direktno vezan za C ali vjerujem da ga znate riješiti.

 

Kako je broj 15 (dekadski) zapisan u računalu (8-bita). Znači jedno mjesto zauzima predznak,3 mjesta eksponent te 4 mjesta decimalni dio (broj iza 1,).

 

Znam to uraditi kada dobijem decimalni broj,npr. 101,1001 ali šta ako dobijem broj 1111 (15 u dekadskom) ?

 

Znači kako zapisati dekadski broj 15 (binarni 1111) u računalo (sustav s 8 bita) ?

 

Po mojoj logici to je 00001111. Prva 0 je predznak (broj je pozitivan) a ovo ostalo je broj 1111 a dodao sam tri nule ispred jer mora biti 8 znamenaka. Da li je to točno ? 

 

HVALA

Poruka je uređivana zadnji put pet 16.11.2012 21:25 (patch123).
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
patch123 kaže...
Znači kako zapisati dekadski broj 15 (binarni 1111) u računalo (sustav s 8 bita) ?

 

HVALA

Ha? Pojasni.

0xBADC0DE
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
rustweaver kaže...
patch123 kaže...
Znači kako zapisati dekadski broj 15 (binarni 1111) u računalo (sustav s 8 bita) ?

 

HVALA

Ha? Pojasni.

Pogledaj sliku,možda će ti biti jasnije što tražim.

Samo ovo je prikaz u 32 bita,ja tražim u 8. I tražim cijeli broj a ne realan.

 

Po mojoj logici broj 15 bih trebao zapisati kao 00001111 (prva 0 je predznak a ostatak 0001111 je broj 15 zapisan binarno).

Je li to točno ?

Poruka je uređivana zadnji put pet 16.11.2012 21:33 (patch123).
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
patch123 kaže...

Pogledaj sliku,možda će ti biti jasnije što tražim.

Samo ovo je prikaz u 32 bita,ja tražim u 8. I tražim cijeli broj a ne realan.

 

Po mojoj logici broj 15 bih trebao zapisati kao 00001111 (prva 0 je predznak a ostatak 0001111 je broj 15 zapisan binarno).

Je li to točno ?

Integer (cijeli broj) i floating point (racionalni broj) se ne zapisuju isto u memoriji računala. 11112 jest 1510 zapisan kao cjeloviti broj. Nisam se nikada bavio floating point brojevima na toj razini pa ti ne mogu biti previše od koristi.

0xBADC0DE
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
rustweaver kaže...
patch123 kaže...

Pogledaj sliku,možda će ti biti jasnije što tražim.

Samo ovo je prikaz u 32 bita,ja tražim u 8. I tražim cijeli broj a ne realan.

 

Po mojoj logici broj 15 bih trebao zapisati kao 00001111 (prva 0 je predznak a ostatak 0001111 je broj 15 zapisan binarno).

Je li to točno ?

Integer (cijeli broj) i floating point (racionalni broj) se ne zapisuju isto u memoriji računala. 11112 jest 1510 zapisan kao cjeloviti broj. Nisam se nikada bavio floating point brojevima na toj razini pa ti ne mogu biti previše od koristi.

Racionalne brojeve znam zapisat. Baš zato me i zanima da li se broj 15 (1111) onda zapiše samo tako da dodamo još 4 nule ili ima neka druga caka ?

15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
patch123 kaže...

Racionalne brojeve znam zapisat. Baš zato me i zanima da li se broj 15 (1111) onda zapiše samo tako da dodamo još 4 nule ili ima neka druga caka ?

Pa te nule ispred 1111 možeš i preskočiti (isto kao što bi mogao i preskočiti nule u broju 0002341, jer je u tom slučaju to i dalje broj 2341).

Naravno ako koristiš cjelobrojni zapis, racionalni zapis nije tako jednostavan.

0xBADC0DE
Poruka je uređivana zadnji put pet 16.11.2012 21:52 (rustweaver).
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
rustweaver kaže...
patch123 kaže...

Racionalne brojeve znam zapisat. Baš zato me i zanima da li se broj 15 (1111) onda zapiše samo tako da dodamo još 4 nule ili ima neka druga caka ?

Pa te nule ispred 1111 možeš i preskočiti (isto kao što bi mogao i preskočiti nule u broju 0002341, jer je u tom slučaju to i dalje broj 2341).

Naravno ako koristiš cjelobrojni zapis, racionalni zapis nije tako jednostavan.

Znam da ih mogu preskočiti ali mislim da ih u ovom slučaju MORAM zapisati. Zašto ? Radi se o 8-bita ( moram zapisat 8 znamenki) tako da dodam te 4 nule ispred 1111 tek tako da popunim mjesto.

Nova poruka
E-mail:
Lozinka:
 
vrh stranice