Hostiho web (© Vít Meloun aka Hosti)
„Skromný, ale nejlepší“
Stručně (o to ovšem výstižněji!):
21.02.07 (Středa)
Náhodná čísla
Náplní dnešní dvouhodinovky programování bylo psaní programu, který od uživatele načte počet čísel, která poté náhodně vygeneruje, a jejich rozsah (např. 10 znamená čisla od 0 do 10). Náhodná čísla vytiskne a pak vypíše čísla, která se v onom výčtu objevují vícekrát než jednou, spolu s počtem, kolikrát. To vše vzestupně seřazeno. A úplně nakonec vytiskne součet všech vygenerovaných čísel dohromady.
Kruci, mám čím-dál-tím intenzivnější pocit, že píšu nesrozumitelně. Asi to bude tím, že to je pravda - sorry, nějak ještě spím... ![]()
31.01.07 (Středa)
Přepínače
Přepínače v C++. Teorie v kódu:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
/*
Prepinac - switch
-----------------
- switch X if:
- if - pouze 2 moznosti (true - false)
- switch - vyraz, vedouci na int nebo char
- administrativa
switch(podminka/vyraz)
{
case hodnota1:
{
kod pro hodnotu 1
break;
}
case hodnota2:
{
kod pro hodnotu 2
break;
}
...
default: hodnota
{
*/
int cis;
// pro zadanou cislici vytisknout slovni ekvivalent
printf(
"Zadej cislo: ");
scanf("%d",&cis);
switch(cis)
{
case 1: printf("jedna");
break;
case 2: printf("dva");
break;
case 3: printf("tri");
break;
default: printf("neumim");
break;
}
printf("\n");
system("PAUSE");
return EXIT_SUCCESS;
}
17.01.07 (Středa)
Závodníci
Jelikož, jak už jsem psal, ležím doma se zlomenou nohou, mimo jiné - abych si ukrátil čas - trochu programuju. Vzpoměl jsem si, že jsme ve škole dělali někdy na podzim program pro pořadatele běžeckých závodů; zadá se do něj závodníkovo jméno, jeho startovní číslo, čas a program závodníky seřadí podle času. Plus se myslí na věci, jako že závodník nedoběhl, že jejich počet není předem přesně znám a tak.

Protože jsem ale zrovna potom chyběl, nepsal jsem ho (o půlených hodinách), jen jsem si pamatoval zadání; tak jsem si ho dneska zkusil udělat. Zapnul jsem si Winamp, naladil Nightwish, asi hodinu psal a zarazil jsem se. Kurva fix, jak jen udělat to seřazení podle času? Asi 15 min jsem nad tím přemejšlel a fakt mě nic nenapadá.. Obracím se tedy na vás, lepší programátory, než jsem já, co sem občas chodíte (Drekin, XeeD, Lordpas, ...): kdybyste měli chvíli čas a napadlo by vás něco (nemyslím, samozřejmě, kód - jen obecnej algoritmus, jak vůbec na to), byl bych rád, kdybyste to tu nechali jako komentář! Předem díky
.
P.S.: jelikož tyhle automatický exporty zdrojáků do HTML, kdyrý dělá Dev C++, rozhazujou na mým webu uživatelům s IE6 menu, dávám kód do pokračování článku. - opraveno, moje kódy už nic nikomu nerozhazují
.
15.11.06 (Středa)
Převedení dolarů na Kč
Dnešní zadání bylo napsat program, jež načte textový řetězec a z textu, zadaným ze znakem $, vyexportuje číselnou hodnotu - počet dolarů. Ten pak převede na koruny. Výsledek je řetězec, který je se zadaným identický, ale například místo '$1' tedy dosadí '24.56 Kc'.
.cpp1-assembler { color: #0000FF; } .cpp1-comment { color: #000000; } .cpp1-float { color: #B8E6FD; font-style: italic; } .cpp1-hexadecimal { color: #800080; } .cpp1-character { color: #800080; } .cpp1-identifier { color: #000000; } .cpp1-illegalchar { color: #000000; } .cpp1-number { color: #800080; } .cpp1-octal { color: #800080; } .cpp1-preprocessor { color: #008000; } .cpp1-reservedword { color: #000000; font-weight: bold; } .cpp1-string { color: #FF0000; } .cpp1-symbol { color: #000000; }
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char vstup[80], pred_hodnotou[40], po_hodnote[40], dolary[30];
int i, j=0,id;
float kc=0, pom=0, dolar=0;
printf("Zadej vstupni retezec: ");
gets(vstup);
// export ciselne hodnoty, zadane za znakem $, do noveho pole 'dolary'
for(i=0; i<80; i++)
{
if(vstup[i]=='$')
{
id=i;
i++;
while(true)
{
if(vstup[i]>='0' && vstup[i]<='9')
{
dolary[j]=vstup[i];
j++;
i++;
}
else
{
dolary[j]='\0';
break;
}
}
}
else
{
if(vstup[i]=='\0') break;
}
}
//prevod hodnoty, ulozene v poli 'dolary', do promenne ve float
for(i=0; i<j; i++)
{
pom=dolary[i]-48;
dolar+=pom/10;
dolar*=10;
}
kc=dolar*24.56;
for(i=0; i<id; i++)
{
pred_hodnotou[i]=vstup[i];
}
pred_hodnotou[i]='\0';
i=id+j+1;
j=0;
while(vstup[i]!='\0')
{
po_hodnote[j]=vstup[i];
j++;
i++;
}
po_hodnote[j]='\0';
printf("%s%f Kc%s\n",pred_hodnotou,kc,po_hodnote);
system("PAUSE");
return EXIT_SUCCESS;
}
07.11.06 (Úterý)
Výplaty (porovnání znaků ve dvou řetězcích)
Program má v jednom poli uložená jména zaměstnanců a ve druhém poli jejich platy. Do třetího pole uživatel zadá libovolné jméno a program zjistí, zda je shodné s některým v 'databázi' zaměstnaných; pokud ano, vypíše ke jménu příslušný plat.
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char jmena[4][10]={{"Novotny"},{"Novak"},{"Vesely"},{"Stary"}};
char platy[4][15]={{"5.000"},{"10.000"},{"15.000"},{"20.000"}};
char zadani[10];
int i,j=0,nalezeno=0;
printf("Jmena v databazi: Novotny, Novak, Vesely, Stary.\n\n");
printf("Zadej jedno z jmen (je treba dodrzovat mala/velka pismena): ");
gets(zadani);
for (i=0; i<4; i++)
{
while(jmena[i][j]!='\0')
{
if (zadani[j]!=jmena[i][j]) break;
j++;
}
if(zadani[j]=='\0')
{
nalezeno=1;
break;
}
}
if(nalezeno==1) printf("\np. %s ma plat %s,- Kc\n",jmena[i],platy[i]);
else printf("\nJmeno nenalezeno!\n\n");
system("PAUSE");
return EXIT_SUCCESS;
}
Starší články:
01.11.2006
- Korekce zadané věty [komentářů:2] 14.11.07 17:22
23.10.2006
18.10.2006
12.10.2006
- Prvočíslo [komentářů:3] 14.06.10 23:15
11.10.2006
16:04:02 - kategorie:





