Stavi 99. Zato sto indeks krece od 0. 0-99 ima sto znakova.
Programiranje u C-u
- poruka: 216
- |
- čitano: 64.790
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
Pogledaj malo youtube tamo imas ja mislim sve o programiranju
Napišite program koji sa tipkovnice prihvaća 100 brojeva. Ukoliko korisnik unese znak koji nije broj, izbacite taj znak iz niza i osigurajte neometan unos do kraja.
Program mora ispisati sumu svih unesenih brojeva!
Kako da izbacim znak iz niza da ga stavljam u drugi niz ili ?
Svaki unos tretiraj kao znak. Usporedbom ASCII vrijednosti provjeri da li se radi o broju ili znaku, te ako je znak zanemari (continue), u protivnom ubaci u polje.
Svaki unos tretiraj kao znak. Usporedbom ASCII vrijednosti provjeri da li se radi o broju ili znaku, te ako je znak zanemari (continue), u protivnom ubaci u polje.
Jel mi valja ista od ovoga kada normalno unesem brojeve radi ali cim znak izbaci mi neku ludu sumu.
#include<stdio.h>
int main()
{
int c[10];
int i,suma=0;
printf("Unesite 100 brojeva:\n");
i=1;
while(i!=10){
scanf("%d",&c[i]);
if((c[i]=='a' && c[i]=='z') || (c[i]=='A' && c[i]=='Z'))
continue;
else
suma=suma+c[i];
i++;
}
printf("Suma je: %d\n",suma);
return 0;
}
ovako nekako:
if(znak >='0' && znak <= '9')
suma += znak - 48;
else
continue;
S time da ti ovo vrijedi za jednosznamenkaste brojeve. Kod višeznamenkasti možeš unijeti cijeli niz znakova
char broj[10];
scanf("%s", broj);
... // provjera da li se u nizu nalazi znak
a ako unutra nema znaka npr. funkcijom atoi pretvoriti taj string u broj.
Svaki unos tretiraj kao znak. Usporedbom ASCII vrijednosti provjeri da li se radi o broju ili znaku, te ako je znak zanemari (continue), u protivnom ubaci u polje.
Jel mi valja ista od ovoga kada normalno unesem brojeve radi ali cim znak izbaci mi neku ludu sumu.
#include<stdio.h>
int main()
{
int c[10];
int i,suma=0;
printf("Unesite 100 brojeva:\n");
i=1;
while(i!=10){
scanf("%d",&c[i]);
if((c[i]=='a' && c[i]=='z') || (c[i]=='A' && c[i]=='Z'))
continue;
else
suma=suma+c[i];
i++;
}
printf("Suma je: %d\n",suma);
return 0;
}
To ti nije dobro jer ti provjeravaš samo jesu li uneseni znakovi 'a' ili 'z'. Ti trebaš jednostavno provjeriti pripada li uneseni znak brojevima. Brojevi u ascii tablici zauzimaju područje od 48('0') do 57('0'). Dakle ti trebaš provjeriti je li char u intervalu [48,57] i ako jest samo od toga broja oduzmeš 48 i dobiješ broj koji je unesen.(npr. ascii kod za '5' je 53, zatim od 53 oduzmemo 48 i dobijemo 5):
#include <stdio.h>
int main(){
int suma=0,x;
char unos;
for(x=0;x<100;x++){
scanf("%c",&unos);
if(broj<48||broj>57);
else{
suma+=(suma-48);
}
}
printf("%d",suma);
return 0;
}
Pogreska ti je u if statementu. Pise ako je c[i] jednako slovu a i ako je c[i] jednako slovu z. Zapitaj se logicki, dali c[i] moze u isto vrijeme biti i slovo a i slovo z? To si upravo ti rekao ;). Stavi vece-jednako ( >= ) i manje-jednako ( <=) jer zelis obuhvatiti raspon charactera od a do z. Dakle c[i] >= 'a' && c[i] <= 'z'. Onda bi trebalo raditi.
EDIT: Shit, brzi ste xD
Radi hvala vam, malo zapinjem oko ovih zadataka sa znakovima, pa da vas pitam ako mi mozete potvrditi, ako imam zadatak koji mi treba ispisati broj samoglasnika ili suglasnika jel bolje da koristim funkciju getchar() ili da se posluzim primjerom kao u prethodnom zadatku.
Ti djeluješ izgubljeno. getchar nema veze s brojanjem znakova. Bolje utvrdi prošle zadatke da ti je stvarno jasno zašto je rješenje takvo kakvo jest prije nego nastaviš dalje. I sve ovo što radiš po forumu ima malo smisla kad ti svako malo za svaki zadatak netko dade rješenje.
Krivo sam objasnio nisam mislio da getchar() broji znakove nego da mi sluzi za unos znakova i da poslije brojim pomocu brojaca broj unesenih znakova nesto tipa ovoga, pa me zanima jel za unos znakova bolje koristiti getchar() ili scanf("%c",znak).
#include <stdio.h>
void main()
{
int slova = 0;
int brojevi = 0;
int ostaliZnakovi = 0;
int znak;
puts("Unesite neki niz znakova:");
while ((znak = getchar()) != '\n')
{
if ((znak >= 'a' && znak <= 'z') || (znak >= 'A' && znak <= 'Z'))
slova++;
else if (znak >= '0' && znak <= '9')
brojevi++;
else
ostaliZnakovi++;
}
printf("Slova: %d\n", slova);
printf("Brojevi: %d\n", brojevi);
printf("Ostali znakovi: %d\n", ostaliZnakovi);
}
Ako već unosiš jedan niz znakova bolje je koristiti polje. Npr.
char znakovi[255];
scanf("%s", znakovi);
i sad dalje provjeravaš elemente polja
for(i = 0; ...
if(znakovi[i] >= '0' && ... <= '9')
...
Za ovo bi mu baš dobro došla neka knjiga sa zadacima - ali ljudi bi htjeli da prođu lišo - a nauče.
(a najbolji mogući savjet u ovoj situaciji je - knjigu u šape - pa udri)
i to ne knjigu koja objašnjava sintaksu jezika uz jedan primjer po temi nego knjigu koja daje naglasak na primjenu.
uz 100 ili 200 sati takvog rada - možeš dalje.
Bilo što da je čovjeku cilj - položiti ispit ili sutra pisati programe - ovo je jedini način.
Za ovo bi mu baš dobro došla neka knjiga sa zadacima - ali ljudi bi htjeli da prođu lišo - a nauče.
(a najbolji mogući savjet u ovoj situaciji je - knjigu u šape - pa udri)
i to ne knjigu koja objašnjava sintaksu jezika uz jedan primjer po temi nego knjigu koja daje naglasak na primjenu.
uz 100 ili 200 sati takvog rada - možeš dalje.
Bilo što da je čovjeku cilj - položiti ispit ili sutra pisati programe - ovo je jedini način.
Ima li igdje kakva takva knjiga na nasem jeziku, sve sto sam nasao bilo je uz objasnjenje sintakse, nikakvi zadatci ili primjeri sa objasnjenjem kako sta radi ...
Koristim se knjigom za srednju skolu "C jezik" od Tatjana Stranjak Vesna Tomić, za sada mi je najbolja knjiga koju sam nasao, ima zadatke vezane uz svako poglavlje... Ali slabo ima slicnih koji meni dolaze na ispitu tako da ne mogu puno vjezbati dobra je za nauciti osnove, imas li ti kakvu preporuku?
Uzmi, C++ Analiza i Primjena Željko Kovačević!
Za ovo bi mu baš dobro došla neka knjiga sa zadacima - ali ljudi bi htjeli da prođu lišo - a nauče.
(a najbolji mogući savjet u ovoj situaciji je - knjigu u šape - pa udri)
i to ne knjigu koja objašnjava sintaksu jezika uz jedan primjer po temi nego knjigu koja daje naglasak na primjenu.
uz 100 ili 200 sati takvog rada - možeš dalje.
Bilo što da je čovjeku cilj - položiti ispit ili sutra pisati programe - ovo je jedini način.
Ima li igdje kakva takva knjiga na nasem jeziku, sve sto sam nasao bilo je uz objasnjenje sintakse, nikakvi zadatci ili primjeri sa objasnjenjem kako sta radi ...
Koristim se knjigom za srednju skolu "C jezik" od Tatjana Stranjak Vesna Tomić, za sada mi je najbolja knjiga koju sam nasao, ima zadatke vezane uz svako poglavlje... Ali slabo ima slicnih koji meni dolaze na ispitu tako da ne mogu puno vjezbati dobra je za nauciti osnove, imas li ti kakvu preporuku?
Ima, međutim - knjiga je mješavina C i C++
ima dosta zadataka baš ovog tipa - i u primjerima - i na kraju uz što su data i rješenja
autor je član našeg foruma - ali ne treba mi zato biti neugodno što ti je preporučam
preporučam ti je samo zato jer vidim da ti baš to traže na ispitima.
kažem - malo je stariji kod - uz c++ obrađen je i c
međutim - tebi je najvažnije to da ima dosta zadataka
http://www.skolskaknjiga.hr/hrv/page.asp?item=021154&act=add2basket
Ima, međutim - knjiga je mješavina C i C++
ima dosta zadataka baš ovog tipa - i u primjerima - i na kraju uz što su data i rješenja
autor je član našeg foruma...
Znam ga. Taj lik nema pojma
Ima, međutim - knjiga je mješavina C i C++
ima dosta zadataka baš ovog tipa - i u primjerima - i na kraju uz što su data i rješenja
autor je član našeg foruma...
Znam ga. Taj lik nema pojma
kolko sam skužio prošle školske godine - i oni dečki sa tvz-a su mogli učiti po njoj, uglavnom - obrađuje se baš taj tip zadataka
koje profe vole tražiti
Znam ga. Taj lik nema pojma
Ma da? Pa ocito kad nikakvih novosti u vezi druge knjige... Salu na stranu, jel se kuha ista u vezi druge knjige ili bude when it's finished?
Knjiga je gotova i prepravljena prema novim standardima, no već par mjeseci pokušavam doći do urednika da dogovorimo konačno kako ćemo to realizirati. U međuvremenu i kod njih je bila smjena ljudi itd itd. Uglavnom, administrativni problemi.
Ja ti je neću kupovat nego ću je naći u PDF-u, ako ne bude onda ću je kupit i skenirati, i staviti u PDF i postaviti na net:)
Šalim se...
Ako te koji dio zanima isprintam ti ja u pdf i pošljem
Ako te koji dio zanima isprintam ti ja u pdf i pošljem
Nema te knjige koja meni pomaže, ponekad očajavam, ali...
Kod funkcije strlen zanima me kada hocu odrediti duljinu rijeci zanima me da li ona uz to racuna jos i nulti znak?
Kod funkcije strlen zanima me kada hocu odrediti duljinu rijeci zanima me da li ona uz to racuna jos i nulti znak?
To bi trebao znati, da indeks polja počinje sa [0], a ne sa [1], samim time i funkcija STRLEN.
Ovo je moja pretpostavka, modža i nije tačno, ali vjerovatno da jeste.
Kod funkcije strlen zanima me kada hocu odrediti duljinu rijeci zanima me da li ona uz to racuna jos i nulti znak?
To bi trebao znati, da indeks polja počinje sa [0], a ne sa [1], samim time i funkcija STRLEN.
Ovo je moja pretpostavka, modža i nije tačno, ali vjerovatno da jeste.
Ok, jer vidio sam da se u zadatcima duljina niza oduzima sa 1 pa sam pretpostavio da je radi toga.
Pa unesi sam funkciju strln u program - pa vidi kako broji znakove.
#include<stdio.h>
#include<string.h>
int main()
{
char rijec[10] = "macka";
printf("Broj slova rijeci macka %d", strlen(rijec));
}Koliko je izbacilo za riječ macka?
Ako je 5 - ne broji nul znak, a ako je 6 - onda broji - a nul znak je onaj znak za prekid na kraju niza '\0'.
Dakle - ako učiš programiranje onda znaš da char niz macka ima 6 znakova - 5 ovih njezinih mačijih i onaj znak za prekid niza nul znak '\0'.
Međutim, ako mali Ivica kaže učiteljici u školi da riječ macka ima 6 slova - ona će pozvati njegovog oca programera na razgovor nakon što malom spraši jedinicu.
E zato je otac malog Ivice programer napisao fukciju strln - ona broji znakove niza od početka do nul znaka - dakle mali Ivica će reći učiteljci da riječ mačka ima 5 slova -
nakon što mu je otac pokazao strln funkciju u konzoli i primjenio je na mačku.
Hvala na objasnjenju, zanima me za ovaj zadatak:
/*Napisati program u kojem korisnik unosi broj N iz intervala [1,15]. Ako broj ne pripada tom intervalu završiti program.
Inače učitati N znakova (ne samo brojeva) i ispisati koliko u unesenom nizu ima brojeva od 0-9!*/
Jel N iz intervala brojeva jednak broju N znakova ili mogu broj znakova proizvoljno uzeti?
Pročitaj zadatak. Sve lijepo piše.
Hvala na objasnjenju, zanima me za ovaj zadatak:
/*Napisati program u kojem korisnik unosi broj N iz intervala [1,15]. Ako broj ne pripada tom intervalu završiti program.
Inače učitati N znakova (ne samo brojeva) i ispisati koliko u unesenom nizu ima brojeva od 0-9!*/
Jel N iz intervala brojeva jednak broju N znakova ili mogu broj znakova proizvoljno uzeti?
Evo za ovaj gore zadatak napisao sam kod zanima me jesam li dobro napravio:
#include<stdio.h>
int main()
{
char x;
int n,i,br=0;
printf("Unesite jedan broj u intervalu [1,15]: ");
scanf("%d",&n);
if((n>=1) && (n<=15))
{
printf("Unesite %d znakova:\n",n);
n=n*2; /* Kada unesem za n 10 dopusta mi samo unos 5 znakova, pa sam stavio da se n poveca dva puta???*/
for(i=0;i<n;i++)
{
scanf("%c",&x);
if((x>='0' && x<='9')){
br++;
}
}
printf("U unesenom nizu ima: %d brojeva.\n",br);
}
else
printf("Unijeli ste broj izvan intervala.\n");
}