Anonymní profil Tom – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Tom – Programujte.comAnonymní profil Tom – Programujte.com

 

Příspěvky odeslané z IP adresy 80.188.117.–

Assembler › NASM - výměna bitů
1. 11. 2011   #149389

Zdravím,

potřeboval bych vědět, jak v NASM prohodím např. horní nibble ah a dolní nibble bh... Mělo by to být asi pomocí posunů a rotací, ale za boha nemůžu přijít jak na to...

Díky za odpovědi.

C / C++ › Předávání hodnot mezi fcemi…
7. 10. 2011   #148362

Assemblery máme jako předmět ve škole, studuju informatiku :) Tak už se nemůžu dočkat, až to pochopím :-D Jinak učitel na střední nám říkal, že nejhorší pro začátečníka je pochopit právě ty ukazatele... Tak snad to časem půjde :) Díky moc.

C / C++ › Předávání hodnot mezi fcemi…
7. 10. 2011   #148347

Koukám, že s tímhle budu asi bojovat sakra dlouho, teď mi to vyplivlo asi 40 errorů :-D už na tom makám hodinu a pořád sem nic nevyřešil v podstatě... Tam má být *, tam &, tam **, už mi z toho de hlava kolem :( ale i tak díky za rady, snad se do toho nějak dostanu...

C / C++ › Předávání hodnot mezi fcemi…
5. 10. 2011   #148316

No a jak je to se strukturama? dá se v mainu vytvořit proměnná, do které se uloží výsledek té funkce, co vrací struct?

C / C++ › Vyvarování chyb v C
5. 10. 2011   #148310

Zdravím, doporučuju knihu od pana Herouta. Jmenuje se to Učebnice jazyka C a je to popsáno takovým stylem, že by sis měl tyhle všechny chyby uvědomit :). Je to fakt vynikající knížka.

C / C++ › Načtení vstupu do jedné prom…
5. 10. 2011   #148308

Já řeším obecné vlastnosti jazyka, v podstatě je to to samé jako kdybych to vyčetl z knížky, akorát když mi to někdo vysvětlí, tak to pochopím líp než z té knížky. Příklad je ilustrační, není to tak jak to bude vypadat v onom projektu. Po nikom nežádám, aby mi napsal kód, jen jsem potřeboval nasměrovat. To se doufám může :-) Projekty samozřejmě řeším sám a tohle byla poslední záchrana, když jsem opravdu nevěděl, jak na to.

C / C++ › Předávání hodnot mezi fcemi…
5. 10. 2011   #148305

Takže když z nějaké funkce vrátím ukazatel na strukturu tak ji můžu automaticky použít v mainu?

C / C++ › Předávání hodnot mezi fcemi…
5. 10. 2011   #148302

A nakonec teda bude int main (int argc, char *argv[], &neco) ?

Btw. to return nemusí být vůbec? Já myslel že každá fce musí mít return.

C / C++ › Předávání hodnot mezi fcemi…
5. 10. 2011   #148300

Zdravím, četl jsem knihu od Herouta (1. díl). Jednu věc jsem nepochopil, a to jak předávat struktury mezi funkcemi... Dejme tomu, že prostě potřebuju dostat 3 hodnoty skrz 3 funkce.

tak udělám:

typedef struct
{
  int x;
  int y;
  int z;
} CISLO;

Tohle musí být globálně?

Dále vytvořím funkci:

CISLO funkce(CISLO *vypocet, int a) // a z mainu je 2
{
  vypocet->x = 2*a;
  vypocet->y = 5*a;
  vypocet->z = 8*a;

  return *vypocet;
}

No a jak teď tento údaj předat další funkci, aby s ním mohla pracovat? Opravdový problém je složitější, chtěl bych to ale pochopit komplexně.

Nebo když předávám odkazem, tak proměnná vypocet se uchová a můžu ji napsat jako parametr jiné funkce? Např. 

CISLO vypsat(CISLO *vypocet)
{
  printf("%d %d %d", &vypocet->x, &vypocet->y, &vypocet->z);
  
  return *vypocet;
}

Vypsalo by to 4 10 16?

Díky za odpovědi :)

C / C++ › Načtení vstupu do jedné prom…
3. 10. 2011   #148255

!!! seš borec, díky moc :) stačilo udělat:

znak = getchar();

while (znak != '\n')
{
vstup = 10*vstup + (znak - '0');  // k promenne vstup postupne pridavame rady
znak = getchar();
}
C / C++ › Načtení vstupu do jedné prom…
3. 10. 2011   #148250

Ok, udělal jsem tohle:

while (!isspace(znak))
  {
    znak = getchar();
    vstup = 10*vstup + (znak - '0');
  }

Funguje to, ale na konci to udělá nesmyslně ještě nějaký výpočet, takže finální výstup je chybný. Vypisoval jsem si to printf("%ld\n", vstup) po každém kroku v cyklu a vracelo to asi tohle:

Vstup: 54861
5
54
548
5486
54861
548572

Absolutně nechápu, čím by to mohlo být... Jinak výborný nápad s převodem soustav jako takovým, myslím, že to ještě hodněkrát využiju :) Díky.
 

C / C++ › Chemický program
3. 10. 2011   #148242

Musíš připojit knihovnu:

#include <string.h>

A pak napsat:

if (strcmp(retezec1, retezec2) == 0) {
  prikaz;
}
C / C++ › Načtení vstupu do jedné prom…
3. 10. 2011   #148241

No potřebuju udělat v podstatě scanf pomocí getchar... dejme tomu uživatel zadá vstup 151518701 a já potřebuju udělat vstup = 151518701, ale mám zakázáno používat scanf.

C / C++ › Načtení vstupu do jedné prom…
3. 10. 2011   #148237

no tak jsem to myslel, prostě U_LONG_MAX nebo jak to je :)) pardon za nepřesné vyjádření

C / C++ › Načtení vstupu do jedné prom…
3. 10. 2011   #148232

Zdravím,

potřeboval bych načíst libovolně dlouhé číslo (po \n nebo když bude vstup obsahovat např. písmena, vyhodit chybu) do proměnné typu long pomocí getchar. Mohli byste mi poradit? :)

Díky moc.

Tom
C / C++ › Načtení většího čísla do jed…
25. 9. 2011   #147891

Tušák správný :) Né že bych chtěl být plagiátor, já už to mám víceméně hotové, ale se scanf :) A nemůžu přijít na to, jak to bez scanf udělat, měl jsem od C menší pauzu :)

Tom
C / C++ › Načtení většího čísla do jed…
24. 9. 2011   #147829

No mám projekt s tím, že nemám používat scanf :)

Tom
C / C++ › Načtení většího čísla do jed…
23. 9. 2011   #147826

#1 Tom
zapomněl jsem dodat, ze standartního vstupu

Tom
C / C++ › Načtení většího čísla do jed…
23. 9. 2011   #147825

Zdravím, jak načtu v C do jedné proměnné číslo, dejme tomu 841688641? Normálně bych použil scanf, ale to není povoleno.

Díky :)

C / C++ › Zpomalování operací při vypi…
4. 5. 2011   #141588

To mě napadlo, ale já vůl napsal

if (i % 10000) {

printf...;
}


a nedošlo mně, že to musí být
i % 10000 == 0

Taková školácká chyba no :-D. Už to je v pohodě, díky.

C / C++ › Zpomalování operací při vypi…
4. 5. 2011   #141586

Jo, to jsem se upsal :-) Samozřejmě tam mělo být 100/vzorky.

Už to funguje, zapomněl jsem na ono přetypování :-). Bohužel to ale vůbec nepomohlo rychlosti. Je to stejně rychlé jako při předchozím provedení :-(.

Když se nevypisuje nic, tak je to hotový cca za 5 vteřin a když vypisuje (třeba i bez počítání, jen třeba písmeno i), tak minutu. Nechápu.

C / C++ › Zpomalování operací při vypi…
4. 5. 2011   #141584

Nevím, jak bych to s tím dělením měl udělat. Je to klasická trojčlenka a všechny hodnoty jsou int. Kdýž dám dělení před cyklus, tak si musím vytvořit pomocnou proměnnou, něco jako:



int procenta_pom;

procenta_pom = i / vzorky_fw1;


Jenže to vyjde samozřejmě 0, protože dělení integerů se zaokrouhluje dolů.

S tím testováním 100% máš pravdu, opravil jsem :-).

A na to třetí už bohužel nemám čas, je to maturitní projekt, který musím do konce týdne odevzdat :-). Jsem prakticky začátečník a dynamickou alokaci jsem nikdy nedělal.

C / C++ › Zpomalování operací při vypi…
4. 5. 2011   #141582

Zdravím,

programuju editor wav souborů a když se provádí např. rozdělení souboru na 2, tak bych chtěl vypisovat něco ve stylu:

Probiha vytvareni prvni casti.
100% dokonceno.
Probiha vytvareni druhe casti.
25% dokonceno.

Problém je, že tohle vypisování drasticky zpomaluje proces. Když tam to vypisování není, tak je procesor s programem za pár sekund vypořádán, ale když je, tak to trvá minutu. Dotaz tedy zní, jde to udělat tak, aby to vypisovalo %, ale nezpomaloval se samotný proces?

Teď to vypadá takto:



// zapsani dat do fw1
fseek(fr, 4, SEEK_CUR);
printf("Probiha vytvareni prvni casti.\n");
for (i = 0; i < vzorky_fw1; i++) {
printf("%d%% dokonceno.\r", i * 100 / vzorky_fw1);
if (i == vzorky_fw1 - 1) {
printf("100%% dokonceno.\n");
}
if (fread(&buffer, 1, 1, fr) != 1) {
return CHYBA_READ;
}
if (fwrite(&buffer, 1, 1, fw1) != 1) {
return CHYBA_WRITE;
}
}

// zapsani dat do fw2
printf("Probiha vytvareni druhe casti.\n");
for (i = 0; i < vzorky_fw2; i++) {
printf("%d%% dokonceno.\r", i * 100 / vzorky_fw2);
if (i == vzorky_fw2 - 1) {
printf("100%% dokonceno.\n");
}
if (fread(&buffer, 1, 1, fr) != 1) {
return CHYBA_READ;
}
if (fwrite(&buffer, 1, 1, fw2) != 1) {
return CHYBA_WRITE;
}
}


Díky za odpovědi,
s pozdravem,
Tomáš.

P. S. - špatné odsazení je způsobeno zkopírováním, jinak je to v pořádku.

C / C++ › Tvorba 3D hry
10. 4. 2011   #140903

Ty ses pomát ne? :) Na takových hrách pracují stovky profesionálů rok... Navíc, jak chceš prosímtě míchat úplně odlišný enginy GTA a HL?

C / C++ › Jak změnit hlasitost wav sou…
9. 4. 2011   #140850

No skáču tím na první hudební vzorek ve fr2. Zkusil jsem tam teď dát prostě 47 (první vzorek podle Pspadu) a pořád nic. S tím koncem fw máš pravdu, a to odsazování mám vždy o 2 mezery, tady jsem to zkopíroval a nějak se to podělalo...

C / C++ › Jak změnit hlasitost wav sou…
9. 4. 2011   #140848

No, stejně moc nevím, co teda mám konkrétně udělat.. :/ Ale dík za odpověď...

A když už jsme u těch wavů, tak teď jsem napsal tuhle funkci:



/* ========================== */
/* SPOJENI 2 SOUBORU */
/* ========================== */
int spojeniSouboru(FILE *fr1, FILE *fr2, FILE *fw, struct sFileInfo file, struct sChunkInfo chunk)
{
short buffer;

fseek(fr1, 0, SEEK_SET);
do {
if (fread(&buffer, 2, 1, fr1) != 1) {
return CHYBA_READ;
}
if (fwrite(&buffer, 2, 1, fw) != 1) {
return CHYBA_WRITE;
}
} while (!feof(fr1));
fseek(fr2, chunk.poziceData+8, SEEK_SET);
fseek(fw, 0, SEEK_END);
do {
if (fread(&buffer, 2, 1, fr2) != 1) {
return CHYBA_READ;
}

if (fwrite(&buffer, 2, 1, fw) != 1) {
return CHYBA_WRITE;
}
} while (!feof(fr2));
return ZADNA_CHYBA;
}


Ale ve výsledku se do fw zapíše jen fr1, prostě fr1=fw... fr2 tam vůbec není. Neví někdo proč?

Dík.

C / C++ › Jak změnit hlasitost wav sou…
9. 4. 2011   #140844

Dík za odpověď, ale jdeš na mě moc odborně, já jsem dá se říct začátečník :-). Nevím, co myslíš převodem na int64, to slyším poprvé v životě. Mám funkci na zjištění byterate, samplerate, bitspersample, počet kanálu atd., takže s tím nebude problém.

No a ten little/big endian, to je taky novinka...

Byl bych moc vděčný, kdybys to popsal trošku víc amatérsky :-)... Je to maturitní projekt, můj první větší program.

Tom.

C / C++ › Ošetření vstupu
9. 4. 2011   #140840

Na ošetření, že to není znak, bych použil knihovnu <ctype.h> a následně funkci isdigit(x);

C / C++ › Jak změnit hlasitost wav sou…
9. 4. 2011   #140839

A jakou podmínku bys doporučoval? Buffer by měl teda být float?

C / C++ › Jak změnit hlasitost wav sou…
9. 4. 2011   #140831

Jak to myslíš, zaokrouhlení a limity? A proč je cyklus špatně? Vzorky jsou 2bytové, to jsem podělal, buffer má být short, ale furt s tím nějak čachruju, tak jsou tam nesrovnalosti.

Když třeba zadám koeficient 2 (zvýšení hlasitosti na 200%), tak jsem zkoušel vypsat každý vzorek před a po násobení a neshodovalo se to... Jako originál jsem použil zvuk z QIPu a výsledný soubor jen tak trochu zachrastil...

C / C++ › Jak změnit hlasitost wav sou…
9. 4. 2011   #140827

Samozřejmě u zapisování má být

&buffer, 4, 1
...

C / C++ › Jak změnit hlasitost wav sou…
9. 4. 2011   #140826

Ahoj,

snažím se udělat editor WAV souborů v C a zasekl jsem se u změny hlasitosti. Nejsem si jistý příkazem:

buffer *= hlasitost;


Celá funkce vypadá takto:

int upraveniHlasitosti(FILE *fr, FILE *fw, float hlasitost, struct sFileInfo file, unsigned int data_size)

{
int buffer;

do {
if (fread(&buffer, 4, 1, fr) != 1) {
return CHYBA_READ;
}
else {
buffer *= hlasitost;
if (fwrite(&buffer, 2, 1, fw) != 1) {
CHYBA_WRITE;
}
}
} while (buffer != EOF);
return ZADNA_CHYBA;
}


Jdu na to správně nebo to je nesmysl?

Díky za odpovědi...

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032019 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý