evo opet ja nesto nerazumijem
javi mi error odmah na if(case 4 && b=0)
if (case 4 && b=0)
{
printf("\n Djeljenje sa nulom nije moguce!!");
}
else
{
x=a/b;
printf("\n Rezultat je %f", x);
break;
}
evo opet ja nesto nerazumijem
javi mi error odmah na if(case 4 && b=0)
if (case 4 && b=0)
{
printf("\n Djeljenje sa nulom nije moguce!!");
}
else
{
x=a/b;
printf("\n Rezultat je %f", x);
break;
}
To sto si ti napisao nema apsolutno nikakvoga smisla. Ne moze tako rastavljati case naredbu.
Da, hajde pročitaj tu naredbu?, pa ako ima smisla - svaka ti čast.
"Ako case 4 i b je 0"
ili ovakav (ako koristis argumente iz komandne linije):
int main(int argc, char **argv)
{
return 0;
}
Može li mi netko navest primjer kad se to koristi, u knjizi iz koje sam učio C to je objašnjeno na 1/2 strane.
Može li mi netko navest primjer kad se to koristi, u knjizi iz koje sam učio C to je objašnjeno na 1/2 strane.
Kada radiš o komandoj liniji(power shell,terminal,cmd...) vrlo često koristiš neke programe tako što im prosljeđuješ argumente. Primjer. Treba ti program koji će naći sumu određenih brojeva.
Obično se to izvede ovako:
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
int suma=0;
for(i=0;i<n;i++){
int temp;
cin>>temp;
suma+=temp;
}
cout<<suma<<endl;
return 0;
}
Ovaj nacin ispravno radi no on je jednostavno prespor za rad. Program se prvo mora pokrenuti pa onda prvo moras upisivati broj brojeva koji ces unijeti, pa onda brojeve. To je vrlo nepkraticno i sporo za rad u komandnoj liniji. Zato se programu/skripti obicno odmah pri njezinu pokretanju salju brojevi koje cu zbrajati npr.
c:/>zbroj.exe 1 2 3 4
10
c:/>
...
Kao sto vidis ja sam odmah poslije imena programa napisao brojeve koje cu zbrajati i onda je OS proslijedio te argumente programu. U programu ti tim argumentima prisupas preko argumentima i definiciji main funkcije. I to agrc znaci broj argumenata koje je okolina proslijedila programu, a argv je polje koje sadrzi argumente proslijedene programu u obliku cstringa(zato je argv dvostruki pokazivac).
int main(int argc,char **argv){
int suma=0;
for(int i=0;i<argc;i++)
suma+=atoi(argvi[i]);
cout<<suma<<endl;
return 0;
Gore koristim funkciju atoi koja se nalazi u biblioteci cstdlib, a ona pretvara cstring u int.
Kod komandolinijskih alata, ovakve se stvari vrlo cesto koriste. Obicno se programu proslijeduju ordeni parametri koji odreduju rad programa. Naravno u takvim slucajevi se rijetko argumenti vade "rucno" kao u proslome primjeru, ves se koriste biblioteke koje sami i char **argv vade argumente i parametere proslijedene programu. Primjer je biblioteka getopt.h koja se koristi u linuxu/unixu.
To sto si ti napisao nema apsolutno nikakvoga smisla. Ne moze tako rastavljati case naredbu.
ma treba biti ovako: ako je odabran broj 4( case 4), a operand b = je 0 onda... u kodu je
To sto si ti napisao nema apsolutno nikakvoga smisla. Ne moze tako rastavljati case naredbu.
ma treba biti ovako: ako je odabran broj 4( case 4) i operand b = je 0 onda... u kodu je
Onda ti koda treba izgledati ovako:
...
case 4:
if(b==0)
printf("Dijeljenje s nulom nije moguce");
else
printf("%f",(float)a/b);
break;
Pogledaj ovaj primjer, kroz komandnu liniju unosiš tri argumenta, prvi argument je putanja programa npr. C:\test.exe , a druga dva argumenta su dva broja koje program zbraja.
#include<stdio.h>
#include<stdlib.h>
int main (int argc, char* argv[])
{
if(argc != 3)
{
printf("Unesi dva broja [putaja programa] [broj1][broj2]:" );
return 1;
}
int a, b;
a = atoi(argv[1]);
b = atoi(argv[2]);
printf("%d + %d = %d", a, b, a+b);
return 0;
}
Dakle, ako želiš kroz komandnu liniju unijeti parametre, ne izvršavaš konzolni program u IDE-u, nego pokreneš command prompt i za konkretan slučaj napraviš unos:
C:\test.exe 3 5
Ako ne uneseš sva tri parametra (manje ili više) tada te program podsjeti na pravilan unos parametara i izlazi se iz programa.
Ako koristiš VS, uključujući i Express verziju, postoji način kako se ovaj program može izvršiti i kad se unose parametri preko komandne linije, a program izvršavaš preko IDE-a.
U propertiesima projekta uneseš parametre koji slijede nakon putanje datoteke, a putanju datoteke izostaviš.
Na slici je to prikazano u crvenom kvadratu.
Treba mi pomoć oko ovog zadatka: "Funkcija generira 5 slučajnih brojeva u rasponu od 10 do 20 u polju " Kad pokrenem program onda se u polju se pojave 5 istih brojeva a kad ponovno pokrenem program dobijem drugi broj koji se ponovi 5 puta u polju. Znaci ja bi trebo da se u polju pojave razliciti brojevi i sljedeci put kad pokrenem program dobiti razlicite brojeve od onih predhodnih. Koristim Dev-C++
Kod:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int slucajbroj(void);
int main()
{
int i;
int a[5];
for(i=0;i<5;i++){
a[i]=slucajbroj();
}
for(i=0;i<5;i++){
printf("%d,",a[i]);
}
printf("\n");
system("pause");
return 0;
}
int slucajbroj(void){
int a;
srand(time(NULL));
a = ((rand() % 10) + 10);
return a;
}
Problem je u seedu, funkcija "time" ti vraca broj sekundi koji je prosao od 1 sijecnja 1970, a kako se program izvrsi u jako kratkom vremenu (puno kracem od jedne sekunde), ti pet puta pozoves funkciju "rand" sa potpuno istim seedom (tj. resetiras seed na istu pocetnu vrijednost buduci da se vrijednost koju funkcija "time" vraca ne stigne promijeniti), i kao rezultat toga dobijes pet istih brojeva.
Prebaci poziv na funkciju "srand" u main funkciju, kako bi generirao seed samo jednom, te potom nasumicne vrijednosti zasnovane na tom seedu.
Hvala ti puno stvarno nisam znao da je tak jednostavno rjesenje.
Ima mozda netko nekakve zadatke gdje mogu izvjezbati matrice (polja)? Preciznije koristelje visedimenzionalnih matrica u petljama.
Ima mozda netko nekakve zadatke gdje mogu izvjezbati matrice (polja)? Preciznije koristelje visedimenzionalnih matrica u petljama.
Primjer za 3.
1 2 3
4 5 6
7 8 9
rotirana
7 4 1
8 5 2
9 6 3
Moze li mi neko napisati dva programa za ova dva zadatka:
1. treba mi program da se ovo ispisuje:
5
45
345
2345
12345
2345
345
45
5
Ovo neznam kako da napisem a da se nepokvari akd postavim ali neide ovako vec kao i vaj drugi samo zakrenut za 90 stepeni u desno
2. treba mi program da se ovo ispisuje:
555555555
4444444
33333
222
1
To je "igranje" for petljama i ispisom.
znam ali koliko god pokusavao nikako da dobjem ono sto mi treba
ovaj kod ispisuje 2 puta, na 2 različita načina sljedeće
abbbb
aabbb
aaabb
aaaab
aaaaa
prouči kod tu je to ista baza kao sa tim brojkama, malo modificiraj i vidi hoće li pomoći
int main(void)
{
int i, j, k;
for (i=1;i<=5;i++)
{
for (k=1;k<=i;k++)
printf("a");
for (j=5-i;j>0;j--)
printf("b");
printf("\n");
}
i 2. način:
for (i=1;i<=5;i++)
{
for (j=1;j<=5;j++)
{
if (i>=j)
printf("a");
else
printf("b");
}
printf("\n");
}
evo ti rijesenje za prvi dio drugi sam radi vidis koji je princip petlji
int _tmain(int argc, _TCHAR* argv[])
{
for (int i = 5; i >= 1; i--)
{
for (int j=i; j<=5; j++)
{
printf("%d",j);
}
printf("\n");
}
for(int i=2;i<=5;i++)
{
for(int j=i;j<=5;j++)
{
printf("%d",j);
}
printf("\n");
}
return 0;
}
2. treba mi program da se ovo ispisuje:
555555555
4444444
33333
222
1
evo rijesio sam i drugi iako sam napisa prije da necu pomocu dvodimenzionalnog polja znakova
int _tmain(int argc, _TCHAR* argv[])
{char polje[5][9]=
{{'5','5','5','5','5','5','5','5','5'}
,{' ','4','4','4','4','4','4','4',' '}
,{' ',' ','3','3','3','3','3',' ',' '}
,{' ',' ',' ','2','2','2',' ',' ',' '}
,{' ',' ',' ',' ','1',' ',' ',' ',' '}};
for (int i = 0; i < 5; i++)
{
for (int j=0; j<9; j++)
{
printf("%c",polje[i][j]);
}
printf("\n");
}
return 0;
}
evo rijesio sam i drugi iako sam napisa prije da necu pomocu dvodimenzionalnog polja znakova
To je varanje :P
#include <stdlib.h>
#include <stdio.h>
int main()
{
int n, i, prazno=0, puno=9;
for (n=5; n>0; n--)
{
for (i=0; i<prazno; i++)
printf(" ");
for (i=0; i<puno; i++)
printf("%d", n);
printf("\n");
prazno++;
puno-=2;
}
system("pause");
return 0;
}
evo rijesio sam i drugi iako sam napisa prije da necu pomocu dvodimenzionalnog polja znakova
To je varanje :P
a nije varanje :D u tom i je ljepota programiranja stvar se uvjek moze rijesiti na vise načina jos kad se sjetim ispita iz programiranja na prvoj godini faksa
prof. ljuta ali nemoze nista jer nije specificirala na koji nacin oce da se zadatak rijesi
Moze li mi neko napisati dva programa za ova dva zadatka:
Ako vec zicas rjesenje na forumu, barem se malo potrudi i stavi te brojeve unutar kôd stila kako bi ih mogao pravilno poravnati (buduci da se za kôd koristi monospace font), ovako mi mozemo samo nagadati kako bi ta tvoja umotvorina trebala izgledati.
Može malo pomoć?
Napisati program koji ce ucitavati s tipkovnice cijele brojeve iz raspona [-10, 15] te brojati koliko puta se koji pojavio, sve dok se dva puta uzastopno ne unese broj koji ne pripada zadanom rasponu.
Ukoliko je samo jedan ucitani broj izvan raspona, potrebno ga je zanemariti.
Nakon provedenog ucitavanja brojeva, program ispisuje aritmeticku sredinu svih unesenih brojeva unutar zadanog raspona te broj koji se pojavio najveci broj puta.
#include <stdio.h>
#include <stdlib.h>
#define DG -10
#define GG 15
void main(void)
{
int broj, i, prekid=0;
int brojac [26] = {0}; //int brojac [GG-DG+1] = {0}
int brbr=0; //broj unesenih brojeva
int zbroj=0; //zbroj unesenih brojeva
int max; //najveci uneseni broj
do
{
printf("Unesite broj iz intervala [-10,15]:");
scanf("%d", &broj);
if(broj >= DG && broj <= GG)
{
prekid=0;
brojac[broj-DG]++;
brbr++;
zbroj += broj;
}
else
{
prekid++;
continue;
}
}while(prekid<2);
for(i=DG; i<=GG; i++)
{
if(brojac[i-DG] > 0)
printf("\nBroj %d pojavio se %d puta.", i, brojac[i-DG]);
if(i == 0)
max = brojac[i-DG];
if(max < brojac[i-DG])
max = brojac[i-DG];
}
printf("\nAritmetička sredina unesenih brojeva: %.2f", (float) zbroj/brbr);
printf("\nBroj koji se je pojavio najviše puta: %d", max);
printf("\n\n");
}
Najveći uneseni broj me muči. Kako bi se to moglo riješiti?
U for petlji, zadnja dva if-a (koja su bila za probu) mi izbacuju koliko puta se je pojavio najviše pojavljivani broj, a ne koji je to broj.
EDIT: da sam znao da će mi ovako ružno ispasti post ne bih se ni trudio
Probaj ovako: http://sg.answers.yahoo.com/question/index?qid=20080402051606AAqA4Af
umjesto jednodimenzionalnog polja koristi dvodimenzionalno gdje je drugi stupac broj pojavljivanja... onda samo još u jednoj petlji nađeš najveći broj u drugom stupcu i zapamtiš njegov index retka i eto ga :)
Može malo pomoć?
Napisati program koji ce ucitavati s tipkovnice cijele brojeve iz raspona [-10, 15] te brojati koliko puta se koji pojavio, sve dok se dva puta uzastopno ne unese broj koji ne pripada zadanom rasponu.
Ukoliko je samo jedan ucitani broj izvan raspona, potrebno ga je zanemariti.
Nakon provedenog ucitavanja brojeva, program ispisuje aritmeticku sredinu svih unesenih brojeva unutar zadanog raspona te broj koji se pojavio najveci broj puta.
evo ga radi malo je neuredno ali radi moze se jos optimizirat ali mi se nije dalo :D
int _tmain(int argc, _TCHAR* argv[])
{
int broj;
int promasaj=0;
int brojunesenih=0;
int brojac[26];//broji koliko je koji broj puta unesen
int sume[26];//zbraja sumu za svaki broj koji smo unujeli moguce i bez ovoga
for(int m=0;m<26;m++)//postavljamo sadrzaj oba polja na 0
{
brojac[m]=0;
sume[m]=0;
}
do
{
printf("\nUnesi broj ");
scanf("%d",&broj);
if(broj>=-15&&broj<=10)
{
brojac[broj+15]++;
sume[broj+15]+=broj;
brojunesenih++;
promasaj=0;
}
else
{
promasaj++;
}
}
while(promasaj<2);
int maxcount=brojac[0];
int max=0;
for(int i=0;i<26;i++)
{
if(brojac[i]>maxcount)
{maxcount=brojac[i];
max=i;
}
}
printf("Najvise je puta je unesen broj %d ",max-15);
int suma=0;
for(int j=0;j<26;j++)
{
if(brojac[j]!=0)
{
suma+=sume[j];
}
}
float k=(float)suma/brojunesenih;
printf("\n Artimeticka sredina unesenih brojeva je %f \n",k);
return 0;
}
Edit: jebga krivo procita zadatak moj prog radi u intervalu od {-15,10} ali ustvari to nista ne mijenja :D
Hvala na pomoći.
Jutros, maloprije, sam završio zadatak (nisam ga radio cijelu noć da ne bi bilo zabune .
Dodao sam varijblu n=0 i u for petlji izbrisao zadnja dva if-a i dodao:
if (brojac[i-DG] != 0 && brojac[i-DG] > n)
{
n = brojac[i-DG];
max = i;
}
Imam ovu knjigu i po njoj ucim programiranje u C-u. http://www.moj-posao.net/HR/Books/Details/393/C-osnove-programiranja/
Ostala su mi jos dva poglavlja do kraja i naravno trebati ce mi neko vrijeme da usvojeno znanje dobro izvjezbam i potvrdim i u praksi na zadacima, no zanima me kada zavrsim s tom knjigom gdje dalje nastaviti uciti i s cime? Moze preporuka neke knjige? A moze i online tutoriali ili nesto slicno.
Završi ti tu.
Pitam unaprijed jer trenutno imam novaca koji bi mogao izdvojiti za kupovinu knjige, a kasnije tko zna kako ce biti.