#1 chriscze
A musíš to dělat pomocí multiplexeru? Proč nevyužiješ jiný způsob ovládání sedmisegmentovky? Inspirace např. zde
https://arduino.cz/ovladanie-nielen-7-mi-segmentoveho-displeja-pomocou-74hc595/
Co je jako vstup co se má zobrazovat?
#1 chriscze
A musíš to dělat pomocí multiplexeru? Proč nevyužiješ jiný způsob ovládání sedmisegmentovky? Inspirace např. zde
https://arduino.cz/ovladanie-nielen-7-mi-segmentoveho-displeja-pomocou-74hc595/
Co je jako vstup co se má zobrazovat?
1D
void nasobky_interval(int a, int b, int x)
{
for(int i=1;(x*i)<=b;i++)
if ((x*i)<a)
continue;
else
cout<<x*i<<" ";
}
Tak dobře :-)
1C
void nasobky(int n, int x)
{
for(int i=1;(x*i)<=n;i++)
cout<<x*i<<" ";
}
1B
void parne(int n)
{
for(int i=2;i<=n;i=i+2)
cout<<i<<" ";
}
Když uděláš 1C a 1D tak ti třeba zase pomůžu
Dobře, tak tě nakopnu, úloha 1A
void vypis(int n)
{
for(int i=1;i<=n;i++)
cout<<i<<" ";
}
Petre super, diky moc za cenne informace! Dneska neco zkusim spachtit, budu si s tim hrat a pripadny vysledek hodim sem. Ani nevim, jak se vytvati nejaky interface, aby potom dotycni mohli v DB vyhledavat apod.
Predpokladam, ze to se naprogramuje v te databazi a v klientovi pro MySQL je uz potom videt, co dotycny s danou databazi muze delat, jak filtrovat apod. Tak snad nebudu zklamany. :-D
#9 peter
Ja prave autoincrement asi nechci pouzit, protoze mam to unikatni cislo ID_HOUSING. Nebo vadi MySQL, ze to unikatni cislo neni od 1 - x? Coz je muj pripad, kdy mam polozky s unikatnim cislem, ale cisla jsou cca sedmimistne a podle me nejdou ani za sebou.
#8 P
Muzes trosku vysvetlit, jak myslis to rozlozeni pinu? Mas pravdu, ze jsou dva housingy, kde kazdy ma po deviti pinech, ale tim to konci.Do kazdeho muze jit jina sada terminalu. Krom toho ja potrebuji presne vedet, do ktere dutiny/pinu jde ktery terminal a to potrebuju vedet pro kazdy pin kazdeho housingu.
Kdyztak muzes slovne popsat ty vazby tabulek? Nejak jsem se ztratil v tech klicich apod...
Ahoj Petre,
musim ocenit tvoji pomoc, dekuju! Ta DB neni dobre, ale jako nastrel je to rozhodne skvele. :-)
Priklad z praxe:
Konektor_MOLEX_10_pin
Toto je jeden z konektoru, ktery ma 10 dutin/pinu. Jeden z vhodnych pinu muze byt tento:
Terminal_A nebo tento
Terminal_B
Z obrazku je videt, ze vsechny piny nebo lepe receno dutiny jsou stejne. Cili vim, ze pro pin 1 - 10 lze vzdy pouzit Terminal_A nebo Terminal_B.
Jsou ale konektory, ktere muzou mit ruzne dutiny. Viz obrazek. Tam nastava problem s tim, ze pro dutinu 1 - 2 a 9 - 10 lze pouzit zminene terminaly, ale pro dutiny 3 - 8 musim pouzit jiny terminal, napr. Terminal_C.
Kazdy konektor ma sve unikatni ciselne ID. Stejne tak kazdy terminal ma sve unikatni ID.
Jelikoz ja potrebuju vedet, pro jaky pin/dutinu, lze pouzit jaky terminal, musim mit nekde tabulku rozvrzeni pinu s pridelenim terminalu - vlastne namapovani pinu konektoru na terminaly.
Proto jsem uvazoval o necem jako:
Tab Konektor:
ID_Kon, Nazev, Pocet pinu, Druhy Dutin
105, "Frantisek", 10, 1
106, "Frantisek", 8, 2
Tab Terminal:
ID_Terminal, Vyrobce, Povrchova uprava
35, Jana, Stribro
36, Petr, Bez_upravy
37, Ondra, Zlato
Tab Kompatibilni_Terminal (Propojuje konektor s terminaly):
ID_Kon, Pin, ID_Terminal
105, 1, 35
105, 1, 37
105, 2, 35
105, 2, 37
105, 3, 35
.
.
105, 10, 35
105, 10, 37
106, 1, 36
106, 2, 36
106, 3, 37 ..... 106, 6, 37
106, 7, 36
106, 8, 36
Jelikoz tech terminalu, ktere lze pouzit pro jednu dutinu je hodne, tak me napadlo udelat dalsi tabulku Terminal_Group:
ID_Term_Group, ID_Term
1, 35
1, 37
2, 36
A misto abych vypisoval ke kazdemu pinu vsechny terminaly, tak bych uvedl skupinu terminalu, kterou lze pouzit, cimz bych zmensil pocet polozek v tabulce kompatibilni terminal. Vcera jsem neco podobneho zkousel v MySQL, ale nejak se mi to nepodarilo, tak zkusim dneska, jestli zbyde cas. Problem byl v klicich, nebyl jsem schopen propojit tabulku Konektor a Kompatibilni_Terminal, ale to bylo asi tim, ze v tabulce kompatibilni_terminal jsem mel polozky nastavene jako primarni klic. Jelikoz je to vazebni tabulka, tak tam se klic asi nenastavuje, ze? Az dojdu dom, muzu poslat obrazek, co jsem splodil. :-)
Ahoj lidi,
Potreboval bych trochu nakopnout s navrhem tabulek v DB, aby to odpovidalo 3 NF.
Chceme vytvorit databaz konektoru.
Konektor se sklada z tzv. plastoveho housingu, ktery ma obecne 1...N dutin (der) a kazda dutina muze byt obecne kompatibilni s 1...N terminaly.
Dutiny u jednoho konektoru se muzou lisit (prakticky by ale nemelo byt vic nez 4 ruzne dutiny)
Da se rict, ze kazdy "typ" dutiny je kompatibilni s nejakou sadou terminalu, obecne 1...N.
V jedne sade muze byt 1...N terminalu.
Cilem databaze je, aby bylo mozne vyhledat i vztah, dutina konektoru XYZ je kompatibilni s terminaly A, B, C pripadne s terminaly ze sady X.
Priklad:
Najdi vsechny kompatibilni terminaly pro pin1/dutiny1 konektoru XYZ.
nebo
Najdi vsechny konektory pouizivajici terminaly XYZ.
Navrh relaci prikladam v odkazu:
https://plus.google.com/photos/112121770498997352799/albums/6119356842940029329
Mam trosku problem s tabulkou PIN_LAYOUT a jejim klicem. Nemuz v tom byt nejaky skryty zadrhel, ktery by nesplnoval 3NF? Pripadne je tento navrh efektivni? Nenapada me, jak jinak rozlozit tabulky a navrhnout relace.
Dalsi vec co mi vrta hlavou je rozdeleni terminalu na sety. Sety ciste teoreticky nemusim pouzit, ale potom by vse bylo v PIN_LAYOUT tabulce.
Duvod, proc toto resim je, ze se na DB bude pripojovat aplikace, ktera bude vycitat data z DB. Pokud bude DB velmi spatne navrzena, tak se to promitne dal a bude to znamenat spoustu prace navic.
Diky za pripadne odpovedi a pomoc!
#1 Laura a Naty
Třeba takto
#include <iostream>
int hledej(char *zdroj, char znak);
using namespace std;
int main()
{
char *retezec="V tomto retezci se bude hledat";
char znak='e';
int pozice;
pozice=hledej(retezec,znak);
if(pozice>0)
cout<<"Posledni pozice hledaneho znaku je "<<pozice;
else
cout<<"Znak nenalezen";
}
int hledej(char *zdroj, char znak)
{
int delka=strlen(zdroj);
int pozice=-1;
for(int i=0;i<strlen(zdroj);i++)
{
if(zdroj[i]==znak)
pozice=i+1;
}
return pozice;
}
#1 zajaja
nějak takto?
#include <iostream>
#define stav1 "H:cervena \t V:zelena \t CH:zelena"
#define stav2 "H:cervena,oranzova \t V:cervena \t CH:cervena"
#define stav3 "H:zelena \t V:cervena \t CH:cervena"
#define stav4 "H:oranzova \t V:cervena,oranzova \t CH:cervena"
using namespace std;
int main()
{
while(1)
{
cout<<stav1<<endl;
Sleep(1000);
cout<<stav2<<endl;
Sleep(1000);
cout<<stav3<<endl;
Sleep(1000);
cout<<stav4<<endl;
Sleep(1000);
}
return 0;
}
int *pz; //vytvoříš ukazatel na int - zatím nikam neukazuje
int z; //vytvoříš celočíselnou proměnnou z
pz = &z; //ukazatel nastavíš na adresu proměné z &z-získání adresy
*pz = 1; //proměnnou na kterou ukazuje pz (tj.z) nastavíš na 1
printf("%p\n", pz); //vypíše adresu kam ukazuje pz
printf("%d", *pz); //vypíše, co je na té adrese
To znamená pokud ukazatel nikam nenastavíš a potom s ním pracuješ, pracuješ s náhodně přidělenou pamětí, což je problém, protože můžeš něco jiného přepisovat
#1 chef06
#1 Divisor
Asi chodíte do stejné třídy...přesně tohle se tu řešilo na začátku týdne....
Projdi si odkaz a na konci najdeš řešení
http://programujte.com/forum/vlakno/25672-soucet-cisel-v-binarni-soustave-podminky/
#23 pazdy
Ve funkci kontrola můžeš vynechat test cin.good....jednoduše, pokud je v bufferu znak nového řádku, načetlo se všechno OK, pokud je tam jiný znak, tak se vstup nenačetl správně.....bylo zadáno např. 111b1....tzn. v bufferu zůstane b1
#21 pazdy
Toto
#include <iostream>
using namespace std;
void kontrola(int a)
{
if ( !cin.good() ||cin.get()!='\n' )
{
cout<<"Nespravny vstup."<<endl;
exit(1);
}
while(a)
{
if(a%10!=0 && a%10!=1)
{
cout<<"Nespravny vstup";
exit(1);
}
a/=10;
}
}
int main()
{
long int a, b;
int i = 0, zbytek = 0, sum[20];
cout <<"Zadejte dve binarni cisla: "<<endl;
cin>>a;
kontrola(a);
cin>>b;
kontrola(b);
while ((a != 0) || (b != 0))
{
sum[i++] = ((a % 10) + (b % 10) + zbytek) % 2;
zbytek = ((a % 10) + (b % 10) + zbytek) / 2;
a = a/10;
b = b/10;
}
if (zbytek != 0) sum[i++] = zbytek;
--i;
cout<<"Soucet: ";
while (i >= 0)
{
cout<<sum[i--];
}
return 0;
}
funguje
#19 DB
I to se dá vyřešit, např. takto
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
long int a, b;
int i = 0, zbytek = 0, sum[20];
cout <<"Zadejte dve binarni cisla: "<<endl;
cin>>a;
if ( !cin.good() ||cin.get()!='\n' )
{
cout<<"Nespravny vstup."<<endl;
return 0;
}
cin>>b;
if ( !cin.good() ||cin.get()!='\n' )
{
cout<<"Nespravny vstup."<<endl;
return 0;
}
while ((a != 0) || (b != 0))
{
if((a%10!=0 && a%10!=1) || (b%10!=0 && b%10!=1)) //kontrola
{
cout<<"Spatny vstup";
exit(1);
}
sum[i++] = ((a % 10) + (b % 10) + zbytek) % 2;
zbytek = ((a % 10) + (b % 10) + zbytek) / 2;
a = a/10;
b = b/10;
}
if (zbytek != 0) sum[i++] = zbytek;
--i;
cout<<"Soucet: ";
while (i >= 0)
{
cout<<sum[i--];
}
return 0;
}
#13 Petr
Jsi tam tu kontrolu neměl, zkus to tak jak jsem doplnil, mělo by to fungovat
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
long int a, b;
int i = 0, zbytek = 0, sum[20];
cout <<"Zadejte dve binarni cisla: "<<endl;
cin >> a;
cin >> b;
if ( !cin.good() )
{
cout<<"Nespravny vstup."<<endl;
return 0;
}
while ((a != 0) || (b != 0))
{
if((a%10!=0 && a%10!=1) || (b%10!=0 && b%10!=1)) //kontrola
{
cout<<"Spatny vstup";
exit(1);
}
sum[i++] = ((a % 10) + (b % 10) + zbytek) % 2;
zbytek = ((a % 10) + (b % 10) + zbytek) / 2;
a = a/10;
b = b/10;
}
if (zbytek != 0) sum[i++] = zbytek;
--i;
cout<<"Soucet: ";
while (i >= 0)
{
cout<<sum[i--];
}
return 0;
}
#11 pazdy
Pokud načítáš číslo jako int, tak nejlepší na ověření vstupu je rozklad na jednotlivé číslice a ty ověřovat...tj. kombinace dělení 10 a zbytek po dělení 10, něco jako
#include <iostream>
using namespace std;
int main()
{
int a;
cin>>a;
while(a)
{
if(a%10!=0 && a%10!=1)
{
cout<<"Spatny vstup";
exit(1);
}
a/=10;
}
cout<<"OK";
return 0;
}
#3 Laura92
Tvůj kód upravený
#include <iostream>
using namespace std;
int main ()
{
int i,p[20],k,m;
int array[25],pom;
for (int i=0; i<20; i++)
{
zz:
p[i]=rand()%25+1; //generovani nahodnych cisel
m=p[i]; //zjistuje,zda se nevyskytuji stejna cisla
k=i;
for(k=0;k<i;k++)
{
if(m==p[k])
{
goto zz;
}
}
cout<<"Cislo: "<<p[i]<<endl;
}
for (int i=0;i<20;i++) //bublinkove razeni
{
for (int j=0;j<20;j++)
{
if (p[j]<p[j+1])
{
pom=p[j];
p[j]=p[j+1];
p[j+1]=pom;
}
}
}
cout<<endl;
cout<<"Serazena cisla: "<<endl;
for (int i=0;i<20;i++)
{
cout<<p[i]<<endl;
}
system("pause");
return 0;
}