Sto bi bilo da napisem naprimjer return 1; ili return 20;?
Programiranje u C++-u - pitanja i odgovori
- poruka: 7.284
- |
- čitano: 1.953.637
- |
- moderatori:
XXX-Man
- +/- sve poruke
- ravni prikaz
- starije poruke gore
Program će ti se svejedno izvršiti, ali će pritom signalizirati OS da se program nije normalno exitao, takoreć :D.
Quote sa stack overflowa: "The return value for main should indicate how the program exited. Normal exit is generally represented by a 0 return value from main. Abnormal termination is usually signalled by a non-zero return but there is no standard for how non-zero codes are interpreted."
Opet imam jedan problemčić...
btw. imam problema s ovim novim editorom, kada kopiram kod sve mi stavi u jednu liniju... popravio sam malo ali i dalje je ružno, ispričavam se onome koji pokuša razmrsiti ovo. 
#include <iostream>
#include <cstdlib>
/*Napisati C program koji, u učitanoj matrici tipa (n*m), n,m ∈(1,7] pronalazi i ispisuje umnožak elemenata sporedne dijagonale. */
int main(){
float matrica[7][7];
int m = 0, n = 0;
float umnozak_sporedne_dijagonale = 0;
printf("Unesite broj redaka matrice: \n");
do
{
scanf("%d", &m);
if(m <= 1 || m > 7) printf("Broj redaka matrice se mora nalaziti u intervalu <1,7]\n");
}while(m <= 1 || m > 7);
printf("Unesite broj stupaca matrice: \n");
do{
scanf("%d", &n);
if(m <= 1 || m > 7)
printf("Broj redaka matrice se mora nalaziti u intervalu <1,7]\n"); }
while(m <= 1 || m > 7);
printf("Popunjavanje matrice...\n");
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++) {
printf("Unesi [%d][%d] lement matrice: \n", (i + 1), (j + 1));
scanf("%f", &matrica[i][j]);
}
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
printf("%f\t", matrica[i][j]);
}
printf("\n");
}
umnozak_sporedne_dijagonale = matrica[0][n - 1];
printf("%f\n", umnozak_sporedne_dijagonale);
for(int i = 1; i < m; i++) for(int j = 1; j < n; j++)
{
umnozak_sporedne_dijagonale *= matrica[i][n - 1 - j];
}
printf("Umnozak sporedne dijagonale matrice je: %f", umnozak_sporedne_dijagonale);
system("pause");
return 0;
}
Opet imam jedan problemčić...
btw. imam problema s ovim novim editorom, kada kopiram kod sve mi stavi u jednu liniju... popravio sam malo ali i dalje je ružno, ispričavam se onome koji pokuša razmrsiti ovo. 
#include <iostream>
#include <cstdlib>
/*Napisati C program koji, u učitanoj matrici tipa (n*m), n,m ∈(1,7] pronalazi i ispisuje umnožak elemenata sporedne dijagonale. */
int main(){
float matrica[7][7];
int m = 0, n = 0;
float umnozak_sporedne_dijagonale = 0;
printf("Unesite broj redaka matrice: \n");
do
{
scanf("%d", &m);
if(m <= 1 || m > 7) printf("Broj redaka matrice se mora nalaziti u intervalu <1,7]\n");
}while(m <= 1 || m > 7);
printf("Unesite broj stupaca matrice: \n");
do{
scanf("%d", &n);
if(m <= 1 || m > 7)
printf("Broj redaka matrice se mora nalaziti u intervalu <1,7]\n"); }
while(m <= 1 || m > 7);
printf("Popunjavanje matrice...\n");
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++) {
printf("Unesi [%d][%d] lement matrice: \n", (i + 1), (j + 1));
scanf("%f", &matrica[i][j]);
}
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
printf("%f\t", matrica[i][j]);
}
printf("\n");
}
umnozak_sporedne_dijagonale = matrica[0][n - 1];
printf("%f\n", umnozak_sporedne_dijagonale);
for(int i = 1; i < m; i++) for(int j = 1; j < n; j++)
{
umnozak_sporedne_dijagonale *= matrica[i][n - 1 - j];
}
printf("Umnozak sporedne dijagonale matrice je: %f", umnozak_sporedne_dijagonale);
system("pause");
return 0;
}
Daj molim te probaj ovako.
Inače mi je cijeli zadatak jako sumnjiv jer teoretski daje mogućnost za matricu npr. 2x7 u kojoj nemaš dijagonalu pa ti riješenje važi samo za jednake m i n.
Ukoliko je zadatak iz škole ili još gore s fakulteta , nije dobro postavljen.
Kako god bilo , check this out
.
//#include <iostream> nema <iostream> u C-u , <cstdlib> -> <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
/*Napisati C program koji, u učitanoj matrici tipa (n*m), n,m ∈(1,7] pronalazi i ispisuje umnožak elemenata sporedne dijagonale. */
int main()
{
float matrica[7][7];
int m = 0, n = 0;
float umnozak_sporedne_dijagonale = 0;
printf("Unesite broj redaka matrice: \n");
do
{
scanf("%d", &m);
if(m <= 1 || m > 7) printf("Broj redaka matrice se mora nalaziti u intervalu <1,7]\n");
}
while(m <= 1 || m > 7);
printf("Unesite broj stupaca matrice: \n");
do
{
scanf("%d", &n);
if(n <= 1 || n > 7) // if(m <= 1 || m > 7)-> n umjesto m
printf("Broj redaka matrice se mora nalaziti u intervalu <1,7]\n");
}
while(n <= 1 || n > 7);
printf("Popunjavanje matrice...\n");
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
{
printf("Unesi [%d][%d] element matrice: \n", (i + 1), (j + 1));
scanf("%f", &matrica[i][j]);
}
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
printf("%f\t", matrica[i][j]);
}
printf("\n");
}
umnozak_sporedne_dijagonale = matrica[0][n-1];
printf("%f\n", umnozak_sporedne_dijagonale);
for(int i = 1; i < m; i++)
//for(int j = 0; j < n; j++) //ovoj je višak jer ideš samo kroz retke
umnozak_sporedne_dijagonale *= matrica[i][n - 1 - /*j višak*/ i];
printf("Umnozak sporedne dijagonale matrice je: %f", umnozak_sporedne_dijagonale);
system("pause");
return 0;
}
Malo ste pomijesali c i c++...
Može li mi neko pomoći dok nisam izludio :/ Radim zadatak u kome se traži da se ispiše prvih n prostih brojeva (n se unosi sa tastature), a da li je broj prost se provjerava u
funkciji. Ovo bi bio moj kod...
#include <stdio.h>
#include <stdlib.h>
int prost(int);
int main()
{
int i = 2, br = 0, n;
do
{
printf("n="); scanf_s("%d", &n);
} while (n < 1);
printf("To su brojevi:");
while (br < n)
{
if (prost(i))
{
printf(" %d", i); br++;
}
i++;
}
system("pause");
return 0;
}
int prost(int i)
{
int brd = 0,ost,m;
for (m = 1; m <= i; i++)
{
ost = i%m;
if (ost == 0)
brd++;
}
if (brd == 2)
return i;
else
return 1;
}
Kad pokrenem program jednostavno neće da ispiše brojeve nikakve...to nije prvi put da se tako dešava pa bi vas molio za pomoć...
I još jedno pitanje...zadatak glasi:
3.Napisati program koji učitava dvije matrice, a zatim računa i ispisuje njihov proizvod.
Za učitavanje elemenata matrice treba definisati i koristiti funkciju čiji je prototip:
void ucitaj(int [][10], int, int);
Za ispisivanje matrice treba definisati i koristiti funkciju čiji je prototip:
void ispisi(int [][10], int, int);
Za računanje proizvoda dvije matrice treba definisati i koristiti funkciju čiji je prototip:
void pomnozi(int [][10], int [][10], int [][10], int, int, int, int);
Nije mi jasno da li se tu očekuje da uz pomoć jedne funkcije unesemo dvije matrice koje su različitih dimenzija? :/
#include <stdio.h>
#include <stdlib.h>
bool isProst(int);
int main()
{
int i = 2, br = 0, n;
do
{
printf("n=");
scanf_s("%d", &n);
} while (n < 1);
printf("To su brojevi:");
for(int i=0;i<=n;i++)
{
if (isProst(i))
{
printf(" %d", i);
}
}
system("pause");
return 0;
}
bool isProst(int n)
{
int brD = 0;
for(int i=1; i<10; i++) // proslijedjeni broj n ce se dijeliti sa svakim brojem od 1 do 10
{
if(n%i == 0)
{
brD++;
}
}
if(brD == 2)
return true;
else
return false;
}
Ja se nisam mogao baš snaći u tvom kodu pa sam malio izmijenio, uglavnom par napomena kada nešto provjeravaš dobro je koristiti funkciju tipa bool koja vraća dvije moguće vrijednosti true dakle prost ili false dakle nije prost, ali nije nikakv problem koristiti ni int s tim da na kraju vraćaš ili 0 ili 1 a ne varijablu 'i' koju si ti povećavao u for petlji pa si je vraćao što me je pomalo zbunilo i slobodno za varijable koristi pune nazive da se neko kasnije može snaći npr brDijeljenja itd. Eto nadam se da ćeš se moći snaći i naučiti nešto iz mog koda.
Što se tiče matrica koliko vidim, imaš dva parametra tipa integer tako da kroz to možeš proslijediti broj redova i broj kolona, a kod rezultata množenja ti je dato tri matrice množenik, množitelj i rezultat i za množenika imaš broj redova i kolona kao i za množitelja.
Daj malo uredi taj kod, cetiri puta lupi razmaknicu za uvlacenje koda posto TAB ne radi.
I kad prelazite u novi red, radite to sa Shift+Enter, a ne samo Enter - onda ne bude ovih horizontalnih crta.
Hvala vam obojici,pomogli ste :) treba mi to za fax,pa ako opet bude nekih problema opet ću pitati :)
Iz čega biste preporučili učenje C++? Možda neka knjiga ili tečaj? Stranica na netu?
Hvala! I hvala za pomoć momcima iznad! :)
@Artem a kako da znam kad vraćam 0 ili 1,a kad vraćam neki broj iz funkcije?
@Artem a kako da znam kad vraćam 0 ili 1,a kad vraćam neki broj iz funkcije?
Ti iz funkcije vraćaš ono što tebi treba, stringove, integere, neki niz vrijednosti itd šta ti god zatreba, ovo što sam ja pričao za 0 i 1 ako ti trenutno nije jasno možeš komotno prekočiti shvatiti ćeš kasnije, to sam rekao jer sam primjetio da si funkciju koristio u if iskazu, a if iskaz radi na principu da provjerava u zagradama da li je nešto tačno ili netačno odnosno da li je vrijednost 1-tačno ili 0-netačno (dakle if iskaz pita je li to 0 ili je 1 a ti mu proslijediš recimo 5) iz tog raloga ako nešto provjeravaš koristi bool tip, bool tip posjeduje samo dvije vrijednosti 0 ili 1 (vizuelno true ili false)
Primjer korištenja funkcija:
bool isSnijegPada()
{
if(pada)
return true;
else
return false;
}
int saberiDvaBroja(int a, int b)
{
return a+b;
}
Eto to su dva primjera kako i kada koristiti neki tip funkcije, dakle za provjeru pitanja koje ima samo dva ogovora DA ili NE koristi bool, kao u našem primjeru 'da li snijeg pada' ako uistinu pada kaže true-istina(1) ako pak nije kaže false(0), druga funkcija primjer korištenja integera rezultat može biti bilo koji cijeli broj
A ovako bi izgledala funkcija isSnijegPada korištenjem tipa integer (što nije primjenjivo):
int isSnijegPada()
{
if(pada)
return 1;
else
return 0;
}
Nadam se da te nisam još više zbunio sa ovim primjerima.
Shvatio sam ovo sa return 0 i return 1,zahvaljujem :)
@Azmo Imam ja knjiga,daj mi samo e-mail
Iz čega biste preporučili učenje C++? Možda neka knjiga ili tečaj? Stranica na netu?
Hvala! I hvala za pomoć momcima iznad! :)
http://www.bug.hr/forum/topic/programiranje/literatura-programiranje/117438.aspx
#include <stdio.h>
#include <stdlib.h>
bool isProst(int);
int main()
{
int i = 2, br = 0, n;
do
{
printf("n=");
scanf_s("%d", &n);
} while (n < 1);
printf("To su brojevi:");
for(int i=0;i<=n;i++)
{
if (isProst(i))
{
printf(" %d", i);
}
}
system("pause");
return 0;
}
bool isProst(int n)
{
int brD = 0;
for(int i=1; i<10; i++) // proslijedjeni broj n ce se dijeliti sa svakim brojem od 1 do 10
{
if(n%i == 0)
{
brD++;
}
}
if(brD == 2)
return true;
else
return false;
}
Ja se nisam mogao baš snaći u tvom kodu pa sam malio izmijenio, uglavnom par napomena kada nešto provjeravaš dobro je koristiti funkciju tipa bool koja vraća dvije moguće vrijednosti true dakle prost ili false dakle nije prost, ali nije nikakv problem koristiti ni int s tim da na kraju vraćaš ili 0 ili 1 a ne varijablu 'i' koju si ti povećavao u for petlji pa si je vraćao što me je pomalo zbunilo i slobodno za varijable koristi pune nazive da se neko kasnije može snaći npr brDijeljenja itd. Eto nadam se da ćeš se moći snaći i naučiti nešto iz mog koda.
Što se tiče matrica koliko vidim, imaš dva parametra tipa integer tako da kroz to možeš proslijediti broj redova i broj kolona, a kod rezultata množenja ti je dato tri matrice množenik, množitelj i rezultat i za množenika imaš broj redova i kolona kao i za množitelja.
Ne može ovako, odnosno ima dvije greške, prva je da ne vrijedi za n>100, druga je da se dopušta djeljivost sa jednim brojem u intervalu 1 - 9 koji nije 1
Moguće, da, nisam ga testirao, iz tog razloga napisao sam u for petlji da dijeli od 1 do 10 s tim samo nek proširi opseg i raditi će
Opet mi treba pomoć...radi se o upotrebi scanf i o pokazivačima.
#include <stdio.h>
#include <stdlib.h>
int duzina(char *s)
{
int d = -1;
while (s[++d]);
return d;
}
int main()
{
char str[101], c;
int i = 0;
printf("Unesite tekst:\n"); scanf("%s", str);
printf("Duzina prve rijeci ('%s') je %d.\n", str, duzina(str));
do
{
scanf("%c", &c);
str[i++] = c;
} while (c != '\n');
str[i - 1] = 0;
printf("Ostatak: ('%s')\n", str);
printf("Duzina ostatka: %d.", duzina(str));
system("pause");
return 0;
}
U ovome zadatku korisnik unosi tekst i program izbacuje dužinu prve riječi i kasnije dužinu ostatka. Ne razumijem šta se radi u petlji do...while :/ Ima scanf,a korisnik ne unosi u tom dijelu baš ništa. Zatim, gore u argumentima funkcije ima pokazivač *s i nije mi jasno kako se on koristi ako nije nigdje definisan u obliku npr:
int *s,p; p=2; s=&p /*Ili nešto slično*/
Molim Vas da mi pomognete :)
Puno tu toga ne štima... Probaj ovako nešto:
#include <stdio.h>
#include <string.h>
int main(){
char rijec[100];
char recenica[256];
printf("Unesite recenicu: ");
gets(recenica);
sscanf(recenica, "%s", rijec);
printf("Duljina prve rijeci: %d\n", strlen(rijec));
printf("Duljina ostatka recenice: %d\n", strlen(recenica) - strlen(rijec));
return 0;
}
Štima,kod je samo kopiran sa prezentacije na faxu :/ samo mi nije jasno to oko scanf-a...kad se program izvrši postoji samo jedno unošenje podataka.
Još jedno pitanje...ako imamo while(i<5) radnja u while petlji funkcioniše sve dok je i<5,ali šta ako imamo while(i)? Da li se onda radnja izvršava sve dok je i>0?
Štima,kod je samo kopiran sa prezentacije na faxu :/ samo mi nije jasno to oko scanf-a...kad se program izvrši postoji samo jedno unošenje podataka.
Još jedno pitanje...ako imamo while(i<5) radnja u while petlji funkcioniše sve dok je i<5,ali šta ako imamo while(i)? Da li se onda radnja izvršava sve dok je i>0?
0 je false, sve drugo je true. Dakle, i negativni brojevi su true kao i pozitivni.
Iz C++11 standarda:
4.12 Boolean conversions [conv.bool]
1 A prvalue of arithmetic, unscoped enumeration, pointer, or pointer to member type can be converted to a prvalue of type bool. A zero value, null pointer value, or null member pointer value is converted to false; any other value is converted to true. A prvalue of type std::nullptr_t can be converted to a prvalue of type bool; the resulting value is false.
Ako je netko voljan pomoći oko ovog zadatka...
Napisati program koji u unosu prima početni i krajnji broj niza. Brojevi moraju biti cijeli, pozitivni i troznamenkasti.
Program treba ispisati sve brojeve i sume njihovih znamenaka u rasponu od početnog pa sve do krajnjeg u rastućem nizu (od najmanjeg prema najvećem).
Unos i ispis možete prilagoditi i uljepšati prema izboru, dani primjeri samo pokazuju funkcionalnost programa.
Primjer:
unos: 120 124
ispis: 120 = 3
121 = 4
122 = 5
123 = 6
124 = 7
Primjer:
unos: 900 910
ispis: 900 = 9
901 = 10
902 = 11
903 = 12
904 = 13
905 = 14
906 = 15
907 = 16
908 = 17
909 = 18
910 = 10
Primjeri provjere samostalnog rada:
izmjeniti program da ispisuje unatrag (od najvećeg prema najmanjem)
pregledati kako se izračunavaju pojedine znamenke, proširenje na četveroznamenkaste i višeznamenkaste brojeve
Hvala unaprijed!
Napisati program koji za N unešenih cijelih brojeva u dinamički niz, ispisuje elemente niza stim
da se između elemenata ispiše operator (<, >, =) koji opisuje odnos između dva susjedna
elementa. Npr. za niz od 10 elemenata [5, 2, 1, 7, 7, 4, 2, 8, 10, 3] na konzoli treba dobiti sljedeći
ispis:
5 > 2 > 1 < 7 = 7 > 4 > 2 < 8 < 10 > 3
Moze pomoc, pozz
Here we go again... 
mislis prije 3 godine da sam napravio profil na forumu...
da toliko pratim i gledam sve znao bih kako sta ide, a vjerovatno bi i naucio nesto, ali svejedno hvala
mislis prije 3 godine da sam napravio profil na forumu...
da toliko pratim i gledam sve znao bih kako sta ide, a vjerovatno bi i naucio nesto, ali svejedno hvala
Nitko ti nece dati rijesenje na zadatak, ali svi su spremni pomoci da shvatis gdje si pogrijesio pokusas li sam rijesiti. Ovaj zadatak i nije toliko tezak, treba ti cijela jedna funkcija, i da li ste radili pokazivace? Jer ova N dinamicki niz mi ide na zivce...
