Pozdrav,
Imam dva zadatka na faxu iz C++ rpogramiranja ali nemogu da dokučim rješenje. Pa ako mi neko može pomoći bio bih vam jako zahvalan.
1.Napiši program koji unosi znakove sve dok prosjek njihovih ASCII kodova ne pređe 80,a zatim u posebnim funkcijama izračunava prosjek ASCII kodova onih znakova koji su velika slova te računa broj samoglasnika.
(Ovo mi je totalno nejasno? Napisati funkciju koja računa prosjek brojeva u nizu (Array) nebi bio problem, Ali ASCII znakova!?)
2.Napiši program koji unosi realne brojeve sve dok ne unesemo tri puta broj sa istim decimalnim dijelom,a zatim u posebnim funkcijama nalazi produkt brojeva sa neparnim cijelim dijelom te broj najmanjim decimalnim dijelom.
(Drugi dio znam, i prvi bi znao za cjele brojeve, ali neznam kako izdvojiti samo decimalni dio iza zareza!?)
Hvala unaprijed
- +/- sve poruke
- ravni prikaz
- starije poruke gore
1.Napiši program koji unosi znakove sve dok prosjek njihovih ASCII kodova ne pređe 80,a zatim u posebnim funkcijama izračunava prosjek ASCII kodova onih znakova koji su velika slova te računa broj samoglasnika.
(Ovo mi je totalno nejasno? Napisati funkciju koja računa prosjek brojeva u nizu (Array) nebi bio problem, Ali ASCII znakova!?)
String u C-u je polje znakova (char). Char je zapravo 8 bitni broj, iliti jedan bajt. S njime mozes vrsiti racunske operacije kao i sa svim drugim brojevima. Npr veliko slovo 'A' ima ASCII kod 65, ako mu dodas jedan dobijes broj 66 sto je kod za veliko slovo 'B'.
2.Napiši program koji unosi realne brojeve sve dok ne unesemo tri puta broj sa istim decimalnim dijelom,a zatim u posebnim funkcijama nalazi produkt brojeva sa neparnim cijelim dijelom te broj najmanjim decimalnim dijelom.
(Drugi dio znam, i prvi bi znao za cjele brojeve, ali neznam kako izdvojiti samo decimalni dio iza zareza!?)
castaj float u int i dobit ces taj broj bez decimalnog djela (cijeli broj), tada od originalnog floata oduzmes taj broj i dobijes samo realni dio:
float nekibroj=22.345;
nekibroj=nekibroj-(int)nekibroj
Ako ti je ovaj nacin previse ruzan uvijek imas i modf funkciju (na koju sam potpuno zaboravio).
Malo mi ovaj ASCII koncept nije jasan. Jasno mi je da svaki znak ima ekvivaleni kod, međutim kako ja manipuliram tim kodom? Npr. kod niza (Array) ako želim 2.vrijednost upišem redni broj jedan 1. i dobijem drugu poziciju. Ali mi je malo nejasno kako sad uvući te codove u program? Kako manipulirati kodom a ne znakom? A ovaj drugi zadatak sa decimalnim vrjednostima je u stvari extra jednostavna stvar!
U svakom slučaju HVALA puno!!!
Malo mi ovaj ASCII koncept nije jasan. Jasno mi je da svaki znak ima ekvivaleni kod, međutim kako ja manipuliram tim kodom? Npr. kod niza (Array) ako želim 2.vrijednost upišem redni broj jedan 1. i dobijem drugu poziciju. Ali mi je malo nejasno kako sad uvući te codove u program? Kako manipulirati kodom a ne znakom?
Ti znakovi vec jesu brojevi i mozes s njima raditi kao sa normalnim brojevima. Stvar je sto ih funkcije kao printf ili objekti kao cout ispisuju kao znakove, osim ako im posebno ne kazes da ih ispisuju kao brojeve.
Kako bi izracunao prosjek polja integera? Zbrojio bi sve clanove polja i onda taj broj podjelio sa ukupnim brojem clanova polja. Isto tako i racunas prosjek u polju znakova.
pogledaj ovo:
char *tekst="ovo je neki tekst";
int zbroj=0;
for (int n=0; n<strlen(tekst); n++)
zbroj+=tekst[n];
printf("Prosjek je %d", zbroj/strlen(tekst));
OK. Sad mi je jasno. Cjelo vrijeme sam razmišljao na pogrešan način.
Hvala!