Dobry den ,
Zacal som as ucit C++ z tejto knihy , samozrejme ze skusenosti s Ceckom som nemal... tot vsio asi na uvod ...
dostal som sa na stranu 151 kde je jedno cvicenie tu je zadanie
------------------------------------------------------------------------------------------------------
Napiste program v C++, krery pozada o informaci a zobrazi ji, jak je ukazano v nasledujicim prikladu vystupu. Vsimete si, ze by si program mel poradit s krestnimi jmeny, ktera se skladaji z vice nez jednoho slova. Take si vsimnete, ze program snizuje znamku smerem dolu, coz znamena o jedno pismeno nahoru. Prepokladejte , ze uzivatel pozada o znamky A, B nebo C, takze si nemusite delat starosti s mezerou mezi D a F .
Jake je vase krestni jmeno? Betty Sue
Jake je vase prijimeni? Yew
Jakou znamku si zaslouzite? B
Kolik je vam let? 22
Jmeno : Yew, Betty Sue
Znamka: C
Vek: 22
-------------------------------------------------------------------------------------------------------------
To je sice pekne ale nejak som si stym nevedel rady a nakodil som len toto
-------------------------------------------------------------------------------------------------------------
#include <iostream>
using namespace std;
const int SIZE = 30;
int main()
{
cout << "Jake je vase krestni jmeno? ";
char name[SIZE];
cin.getline(name, SIZE);
cout << "\nJake je vase prijmeni? ";
char name_2[SIZE];
cin >> name_2;
cout << "\nJakou znamku si zaslouzite? ";
char znamka;
cin >> znamka;
cout << "Kolik je vam let? ";
short vek;
cin >> vek;
cout << "\nJmeno: " << name_2 << ", " << name << endl;
cout << "Znamka: " << char (znamka + 1) << endl;
cout << "Vek: " << vek;
return 0;
}
----------------------------------------------------------------------------------------------------------
sice to funguje ale je to zavisle na zakladnej znakovej sade implementace ... dalo by sa to nejak inak spravit ? Trebars vyuzitim vyctovych typov , alebo poly ? Skusal som setko ale napadlo ma len hento riesenie ...
Dalsi problem som mal so siestou ulohou ktorej zadanie je taketo :
-----------------------------------------------------------------------------------------------------------
Provedte programove cviceni 3, ale misto deklarace pole tri struktor SladkaTycinka alokujte pamat pro pole dynamicky pomoci operatoru new .
??????????????????????????????????
tu je zadanie 3 :
Struktura SladkaTycinka obsahuje tri cleny, jak je popsano v programovem cviceni 2. Naopiste program ktery vytvori pole tri struktur SladkaTycinka, inicializuje je hodnotami podle vaseho vyberu a potom zobrazi obsah kazde struktury.
a tu je druhe zadanie """""""""""""""""""
Struktura SladkaTycinka ma tri cleny. Prvni clen uchovava znacku sladke tycinky ,druhy clen vahu (ktera muze mit desatinnou cast) a treti clen pocet kalotii (Cele cislo) . napiste program ktery takovouto strukturu deklaruje a vytvari promennou typu SladkaTycinka nazvanou svacina. Inicializujte jeji kazdy clen postupne na "Mocha munch", 2.3 a 350. Inicializace by mela byt soucasti deklarace promenne snack. Nakonec by mel program obsah promenne svacina vypsat ...
----------------------------------------------------------------------------------------------------
Ide o to ze fakt neviem jak mam inicializovat pole name ktore je v strukture ... Pretoze nemozem jednoducho napisat
ukazatelnapolesladkatycinkaspoctomprvkov3[0]->name = "Nejake meno znacky" ;
V jednoduchosti zadana otazka :
Pokial alokujem pamat pre pole s 3 prvkami struktur SladkaTycinka pomocou operatoru new tak jak by som vedel jednoducho inicializovat clen prveho prvku ktore je polom char o 30 prvkoch ? pretoze inicializovat kazdy prvok pola name zvlast sa mi nechce ...
Dakujem za pripadnu pomoc ...
Fórum › C / C++
Mistrvstvi V C++
ukazatelnapolesladkatycinkaspoctomprvkov3[0]
kratšie pls :smile1:
Takze v jednoduchosti lebo vidim ze sa vam to nechce citat ::: :-D
mam program napriklad tu je zdrojak :::
--------------------------------------------------------------------------------------------------------------
#include <iostream>
using namespace std;
struct heh
{
char name[30];
int mnau;
};
int main()
{
heh * lol = new heh [3];
lol->mnau = 1000;
cout << lol->mnau;
cin.get();
cin.get();
return 0;
}
---------------------------------------------------------------------------------------------------
Jak by som vedel inicializovat premennu mnau v poli [2] napriklad ???
lebo lol[2]->mnau = 10000; nefungujeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
:-(
pardon aby som sa opravil , jak by som vedel inicializovat clen typu int (mnau) v strukture na ktoru ukazuje ukazatel na zlozeny typ heh pre ktory je alokovane miesto pre dynamicke pole struktury o troch prvkov ...
Chcem inicializovat poslednu premennu typu int (mnau) na hodnotu 10000 v tretom prvku dynamickeho pola struktur ktory alokujem pomocou operatoru new ...
Dufam ze som sa nezamotal este si mylim dojmy s pojmamy ...
Takle to funguje a chtěl jsem upozornit na jednu věc - viz down.
#include <iostream>
using namespace std;
struct heh
{
char name[30];
int mnau;
};
int main()
{
heh * lol;
lol = new heh[3];
lol[0].mnau = 1000;
cout << lol[0].mnau;
delete [] lol; // NEZAPOMINAT !!
cin.get();
return 0;
}
Dejmas.TOMAS napsal:
Takle to funguje a chtěl jsem upozornit na jednu věc - viz down.
#include <iostream>
using namespace std;
struct heh
{
char name[30];
int mnau;
};
int main()
{
heh * lol;
lol = new heh[3];
lol[0].mnau = 1000;
cout << lol[0].mnau;
delete [] lol; // NEZAPOMINAT !!
cin.get();
return 0;
}
Tohle může napsat jen naprostý de_il. Radši si o C/C++ a o programování něco zjisti než se opět ztrapníš.
a vie mi niekto pomoct este s tymto dotazom ? :)
----------------------------------------------------------
Dobry den ,
Zacal som as ucit C++ z tejto knihy , samozrejme ze skusenosti s Ceckom som nemal... tot vsio asi na uvod ...
dostal som sa na stranu 151 kde je jedno cvicenie tu je zadanie
------------------------------------------------------------------------------------------------------
Napiste program v C++, krery pozada o informaci a zobrazi ji, jak je ukazano v nasledujicim prikladu vystupu. Vsimete si, ze by si program mel poradit s krestnimi jmeny, ktera se skladaji z vice nez jednoho slova. Take si vsimnete, ze program snizuje znamku smerem dolu, coz znamena o jedno pismeno nahoru. Prepokladejte , ze uzivatel pozada o znamky A, B nebo C, takze si nemusite delat starosti s mezerou mezi D a F .
Jake je vase krestni jmeno? Betty Sue
Jake je vase prijimeni? Yew
Jakou znamku si zaslouzite? B
Kolik je vam let? 22
Jmeno : Yew, Betty Sue
Znamka: C
Vek: 22
-------------------------------------------------------------------------------------------------------------
To je sice pekne ale nejak som si stym nevedel rady a nakodil som len toto
-------------------------------------------------------------------------------------------------------------
#include <iostream>
using namespace std;
const int SIZE = 30;
int main()
{
cout << "Jake je vase krestni jmeno? ";
char name[SIZE];
cin.getline(name, SIZE);
cout << "\nJake je vase prijmeni? ";
char name_2[SIZE];
cin >> name_2;
cout << "\nJakou znamku si zaslouzite? ";
char znamka;
cin >> znamka;
cout << "Kolik je vam let? ";
short vek;
cin >> vek;
cout << "\nJmeno: " << name_2 << ", " << name << endl;
cout << "Znamka: " << char (znamka + 1) << endl;
cout << "Vek: " << vek;
return 0;
}
----------------------------------------------------------------------------------------------------------
sice to funguje ale je to zavisle na zakladnej znakovej sade implementace ... dalo by sa to nejak inak spravit ? Trebars vyuzitim vyctovych typov , alebo poly ? Skusal som setko ale napadlo ma len hento riesenie ...
----------------------------------------------------------------------------------------------------------
Anonymní uživatel napsal:
Dejmas.TOMAS napsal:
Takle to funguje a chtěl jsem upozornit na jednu věc - viz down.
#include <iostream>
using namespace std;
struct heh
{
char name[30];
int mnau;
};
int main()
{
heh * lol;
lol = new heh[3];
lol[0].mnau = 1000;
cout << lol[0].mnau;
delete [] lol; // NEZAPOMINAT !!
cin.get();
return 0;
}
Tohle může napsat jen naprostý de_il. Radši si o C/C++ a o programování něco zjisti než se opět ztrapníš.
http://www.cplusplus.com/doc/tutorial/dynamic.html
Nechceš mi to zopakovat??
PS: Možná sem někde udělal bug a ještě sem si ho nevšim, ale to neznamená nic špatnýho, chyby dělá každej člověk. Příště se zdržuj takovejhlech komentářů na úrovni desetiletýho fracka. Jestli vidíš chybu, tak jí oprav a nesnižuj úroveň fora! Kdyžtak rovnou zaškrtni "jsem spammer, píšu pouze pro vyšší počet příspěvků a napadám všechny ostatní" Sprostě urážet profíky a anonymě! http://cs.wikipedia.org/wiki/Výchova Víš vubec co je tohle??
lidi tady končim...
Se nediv že jsem to napsal. Jako když někdo pozastavuje program cin.get(); nebo system(PAUSE); a podobně, tak je mi opravdu na blití. Je to pouze váš problém, že nevíte, že podobné věci jsou prasárny a všude je cpete.
edit: Přečti si alespoň jeden kvalitní zdroj o tomhle a pak raď začátečníkům. Jasný? Snad by stačilo to Mistrovství v C++, ty ukázkové příklady podobná zvěrstva nepoužívají, proč asi...
Anonym: Myslím, že to docela přeháníš a ještě ke všemu vystupuješ jako anonym, což je trapné.
EDIT: jo a jak si zastavují svůj testovací prográmek profíci jako ty? Připomínám, že jde o program, jehož jediným účelem je výuka C++ a který nikdo jiný nebude používat. Jde o to, aby snadno a bez dalších komplikací viděli výstup po spuštění z Visual Studia, které neumožňuje nechat konzoli zapnutou.
C++ sa ucim , cin.get mi tam pomaha aby sa mi to okno nezavrelo hned po skonceni ... JE to len pomocka :) aby som si nemusel kazdy program otvarat cez prikazovy riadok, vo WINDOWS 98 sa to tusim dalo nastavit aby sa to automaticky nezatvaralo . Ono je pravda ze pokial tam to cin.get je tak ked to normal otvorim cez prikazovy riadok tak to len zavadza ...
Este by ma zaujimalo jak by som vedel inicializovat clen struktury ktore je pole typu char ...
napriklad
mame struktutu
struct struktura
{
int ll;
char name[20];
}
/blablabla
teraz vytvorim pole typu struktura o 99 prvkoch ...
struktura array[30];
a ide oto jak by som vedel incializovat clen struktury name narpiklad v 25 prvku pola array ?
ide to vlastne ?
lebo array[25].name = "lol"; // nejde ale to je normalne ze nejde
alebo jedina moznost je inicializovat kazdy prvok toho pola name zvlast ?
napriklad takto :
array[25].name[0] = 'l';
array[25].name[1] = 'o';
array[25].name[2] = 'l';
array[25].name[3] = '\0';
???
To Quiark : CMD neznáme? To je základ základů. Krom toho to cin.get(); stejně nepomůže vždy, to by si jako profík mohl vědět...aaa asi ne, jinak by si tohle nenapsal.
Když vidím tady tu úroveň, tak nemám nejmenší chuť se registrovat. Takže asi tak.
> Když vidím tady tu úroveň, tak nemám nejmenší chuť se registrovat. Takže asi tak.
Nieje dovod sa tu rozculovat, staci ignorovat tie prispevky o ktorych si myslite, ze nestoja za vasu pozornost,
alebo sa uz riesili milon krat. Napriklad ja ignorujem temi ako: cz/sk v konzoli, program preblikne (nevidim
co mi to pise), zmena farby pisma a podobne blbosti. Ak sa tu budu vsetci riadit podobnymi pravidlami tak vam
garantujem, ze 'uroven' sa hned zlepsi.
Omlouvám se autorovi vlákna, že tady spamujeme tímhle, ale já už končím a dávám tímto anonymovi možnost posledního slova.
To Anonymní uživatel :
Máš na paměti ty podmínky, které jsem uváděl žeano? Tam považuju cin.get() nebo něco podobného za zdaleka nejjednodušší řešení. Tu otázku jestli znám cmd jsi myslel jako zadat ve VS jako debugovaný program C:\windows\system32\cmd.exe a jako parametr /k $(TargetPath) <další parametry> ? Tak to je opravdu velice jednoduché a pro začátečníky vhodné řešení. Navíc člověk musí klikat na křížek nebo psát exit při každém spuštění namísto prostého uhození do klávesnice.
A opět, v situaci, kterou jsem popisoval a o kterou jde, cin.get() funguje, nevím, proč by nefungoval. Už se jdu zahrabat. Předpokládám, že do toho netaháš nějaké přesměrování vstupu/výstupu někam jinam nebo další věci, které s tím nesouvisí.
A ano, úroveň tady není žádná sláva, ale každý někdy začínal. Mě trochu iritují neustále se opakující vlákna typu "máme tenhle úkol do školy, doteďka jsem na to kašlal, tak mi to někdo napište". Ale mnohem víc mě dokáže naštvat člověk jako ty, který tady anonymně začne někomu sprostě nadávat kvůli drobnosti.
mam zdrojak
--------------------------------
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char ch;
int count = 0;
ofstream f;
f.open("ASCII.txt");
cin.get(ch);
while (cin.eof() == false)
{
f.put(ch);
cin >> ch;
}
f.close();
return 0;
}
----------------------------------------------
uklada to do textove suboru vstup z klavesnice, ale potreboval by som aby to neukladalo znaky ale hodnotu ASCII jednolivych znakov , napriklad napisem A a on to ulozi v text subore ako 65 ...
Nejake napady ? skusal som ch pretypovat na typ int ale nejak to nepomohlo ...
To Bald3rr : to je naprosty nesmysl :), nebot problem by byl uz v tom ze by "cin >> ch" nacital pouze cisla, nikoli znaky, nehlede na to ze jak cin.get(), tak f.put pracuji s chary a nikoli inty takze ac by to u nich fungovalo (s warningem), pretypovalo by se to stejne na char:). kdyz nepomuze pretypovani na int, tezko ma vyznam definovat implicitne int...
To C++ : ze pretypovani na int nepomohlo? to se neni cemu divit, kdyz pouzivas funkci f.put, ktera primo pracuje s textem a jako parametr ocekava ciselnou hodnotu znaku. resit to muzes pouzim varinaty cout pro soubory (fstream), klasickym fprintf nebo vytvorenim textoveho retezce z ciselne hodnoty ch makrem 'itoa'.
To tmi : To jsem nevěděl, pro příště zapamatuji :)
Jinak já jsem tpodobný problém řešil s použitím fce getch(), jejíž návratovou hodnotu jsem ukládal do proměnné typu int. A cyklus načítání jsem ukončil, pokud návratová hodnota getch() byla rovna 13 (Enter).
Mam zdrojak , opat je to uloha z knihy , nebudem sem pastovat zadanie zo zdrojaku je jasne co to ma robit ...
-------------------------------------------------------------
#include <iostream>
using namespace std;
const short MONTHS = 12;
const short YEARS = 3;
int main()
{
const char * mesiace[MONTHS] = { "Januar", "Februar", "Marec", "April", "Maj", "Jun", "Jul", "August", "September", "Oktober", "November", "December" };
int roky[3] = {1993, 1994, 1995};
int predaj[YEARS][MONTHS];
int i, j;
int c[YEARS];
int d = 0;
for (i = 0; i <= 2; i++)
{
cout << "Zadajte hodnoty predaju knich za rok : " << roky[i] << endl;
for (j = 0; j <= 11; j++)
{
cout << "Zadajte pocet predanych knich v roku " << roky[i] << " za mesiac " << mesiace[j] << " : ";
cin >> predaj[i][j];
cout << endl;
c[i] = c[i] + predaj[i][j];
}
cout << "Celkovy predaj knihy za rok " << roky[i] << " bol : " << c[i] << endl;
d = d + c[i];
}
cout << "Celkovy predaj za tri roky bol : " << d << endl;
return 0;
}
----------------------------------------------------------------
Ide o to ze niekde som tam spravil taku chybu ze je mi z toho zle :( Program nefunguje poriadne ale chybu si fakt neviem najist a hladam to uz 10 minut , nejake napady kde by bola chybicka ? :D
Nepíšou v té knize jak používat debugger? Pokud máš Visual Studio, tak v něm si klikni na řádek, zmáčkni F9 a hodí to tam breakpoint - tam se ten program zastaví a můžeš se podívat na hodnoty proměnných a tak. A klávesou F10 se provede jeden řádek programu a tak dál.
no tipuju ze nemas vynulovane pole c, ke kteremu pricitas; tedy:
int c[YEARS] = {};
ale kdyz jsem u toho, nejsem si jist proc vsechna ta pole pouzivas, kdyz ti misto nich pro tento ucel staci obycejne promenne...
To tmi : dikes ide to uz ...
Pole pouzivam preto lebo to potrebujem aby som vedel program dopisat presne podla zadania ...
Pac som to sem nepastnul cele ...
To Quiark : dik za radu , o debuggeru zatial nic nepisali , mozna neskor v knihe ...
Nemá Visual C++ jiné zákonnitosti, než klasické C++, když už zde bylo zmíněno Visual Studio? Já tedy nevím, ale Visal Studio je pro .NET jazyky a pokud vím, C++, které v něm je, je upraveno tak, aby odpovídalo .NET... Mýlím se? V tomhle jsem měl vždy trošku bordel a je to defakto jediný důvod, proč jsem C++ ještě nezkoušel (nehodlám opouštět Visual Studio).
myslim ze by melo vyhovovat standardu jazyka. pokud nevyhovuje (vyrazne), tak je to spatne:).
pokud se nemylim, tak .NET s jazykem samotnym az tolik nesouvisi, nebot je to pouze platforma. ale nemluvim ze zkusenosti, jen z uvahy, mozna to je jinak.
coz samozrejme pripousti nejake mimostandardove rozdily, napriklad gcc ma typicky jinou syntaxi asm direktivy nez microsofti kompilatory (nebot syntaxe sama ve standardu neni), podobne tak vsemozne built-in funkce ci podpora vektorovych instrukci...
Je to tak, že název Visual Studio .NET je marketingová záležitost. A ano, podporuje to rozšíření C++ pro .NET (C++/CLI). Ale člověk si vybere, jestli ty rozšíření chce zapnout, nebo ne. Takže když je vypneš, máš úplně normální klasické standardní C++.
Quiark:To Quiark : A defaultně to máš jak? To je zajímavé, netušil jsem, že to takhle funguje. Jinak, snaha o sjednocení všeho pod jedinou platformu (.NET) se mi jen jako marketingová záležitost nezdá a MS v tomhle podporuji :-)
Pokud se nepletu, tak Visual Studio mělo přídomek .NET naposledy u verze 2003 (tedy Visual Studio .NET 2003), od té doby v názvu to "matoucí" .NET není.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
SP2 Win Vista 32-bit — založil jadus.
Hromadné zmenšení vrstev — založil Ivette
Využijte načítání do mezipaměti prohlížeče — založil zelenac1
Výběr tiskárny ve VB před CommonDialog — založil Marek Polášek
PHP Vyhledavaní v souboru — založil Petr
Moderátoři diskuze