Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - mikrom

Stran: 1 ... 7 8 [9] 10 11 ... 19
121
Vývoj / Re:Načtení 2D pole v C
« kdy: 22. 11. 2022, 17:26:46 »
Tu je fix predosleho programu:

ocakam dalsie code review  ;)

matrix.c
Kód: [Vybrat]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_ROWS 100
#define MAX_COLS 100
#define MAX_LINE_LENGTH 256

int main()
{
    FILE *fp;
    char data_line[MAX_LINE_LENGTH];
    char *matrix_element;
    int i, j, max_i, max_j;
    int matrix[MAX_ROWS][MAX_COLS] = { 0 };

    fp = fopen("matrix.dat","r");

    printf("Reading data from the file:\n\n");
    max_j = 0;
    i = 0;
    while (fgets(data_line, MAX_LINE_LENGTH, fp) != NULL) {
        // Remove trailing \n
        data_line[strcspn(data_line, "\n")] = 0;

        // split line into matrix elements
        matrix_element = strtok(data_line, ",;\t ");
        j = 0;
        while(matrix_element != NULL) {
            printf("%s ", matrix_element);
            // populate matrix
            if ((i < MAX_ROWS) && (j < MAX_COLS)) {
               matrix[i][j] = atoi(matrix_element);
            }
            j++;
            if (max_j < j) max_j = j;

            matrix_element = strtok(NULL, ",;\t ");
        }
        printf("\n");
        i++;
    }
    max_i = i;
    fclose(fp);
    printf("..Done.\n\n");
    printf("Datafile contains %d rows and %d columns\n\n", max_i, max_j);

    // eventually, adapt maximum indexes to the size of the matrix
    if (max_i > MAX_ROWS) {
        printf("WARNING: matrix contains only %d rows of %d data rows from the file\n",
               MAX_ROWS, max_i);
        max_i = MAX_ROWS;
    }
    if (max_j > MAX_COLS) {
        printf("WARNING: matrix contains only %d columns of %d data columns from the file\n",
               MAX_COLS, max_j);
        max_j = MAX_COLS;
    }

    // now print the matrix
    printf("\nThe matrix is:\n\n");
    for (i = 0; i < max_i; i++) {
        for (j = 0; j < max_j; j++) {
            printf("%d\t", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}

Malo by to spracovat aj zubatu maticu, ze chybajuce prvky budu nuly
Kód: [Vybrat]
1  2
5  6  7  8

122
Vývoj / Re:Načtení 2D pole v C
« kdy: 22. 11. 2022, 00:14:02 »
Otázka zní, zda vůbec používat funkci scanf() a zda by nebylo lepší udělat si vlastní konečný automat a načítat si ta čísla po znacích. Je to dost triviální.

...
Přesto mi nepřijde to řešení s konečným automatem v takovémto případě špatné - vyřeší celkem jednoduše řádkování atd. Znaménko, whitespace apod. jsou úplně v pohodě, ošetřit "správně" invalidní znak je triviální, poskládání integeru z dekadického zápisu je triviální. Řešit hexa číslo je zvláštní, že se int nevejde do mezí typu je sice možné, ale co na tom vyřeší scanf()? Co když někdo napíše do vstupu stočíslicovou hodnotu?

Ked to je pre teba take trivialne tak sem ukaz funkcny kod s tym konecnym automatom  8)

123
Vývoj / Re:Načtení 2D pole v C
« kdy: 22. 11. 2022, 00:05:05 »
...
na to stejne prijde postupem casu jak bude sam experimentovat.
presne tak, ak bude s tym experimentovat i tie "kritické bezpečnostní chyby" si najde a odstrani sam   

124
Vývoj / Re:Načtení 2D pole v C
« kdy: 21. 11. 2022, 19:30:42 »
To neni produkcny kod ale iba ukazka JAK NA TO.

To je spíš ukázka, JAK TO NEDĚLAT.
...
Toto su malicherne nedostatky, ktore sa daju lahko osetrit. Rozne ucebnice a navody su plne takychto prikladov. Cielom je aby bol priklad kratky a lahko zrozumitelny a to aj je.
Keby si mal nejaku sebareflexiu, tak by si namiesto kritiky radsej postol vlastny funkcny kod, co sa ale nestalo.

125
Vývoj / Re:Načtení 2D pole v C
« kdy: 21. 11. 2022, 19:00:19 »
No... stačí tam poslat více jak MAX_ROWS řádků a máme ukázkový buffer overflow na stacku s (remote) code execution.  CVSS score 10/10 ;).
To neni produkcny kod ale iba ukazka JAK NA TO.
Vyhnut sa problemu o ktorom hovoris sa da roznymi sposobmi - napriklad:
- Osetrit podmienkou aby sa do matice nacitalo len tolko riadkov kolko riadkov ma subor.
- Najprv nacitat subor 1. krat, pritom zistit pocet riadkov (pripadne aj stlpcov), nasledne alokovat maticu danej velkosti, potom urobit rewind a nacitat subor 2. krat  do matice.

126
Vývoj / Re:Alternativa za Excel Visual Basic?
« kdy: 21. 11. 2022, 17:15:42 »
...
Cize jedina pouzitelna nahrada je bud pouzit excel, alebo pouzit nieco mimo excel co je ale zarucene nainstalovane na PC -> napr nieco co bezi nad .net frameworkom ...
...
ano z toho dovodu pouzivam este stale VBscript, zatial je vsade (neviem sice ci aj na W11)
Skusal som aj powershell, ale na programovanie mi to pripada horsie ako VBscript a hlavne tam byvaju komplikacie so spustenim: treba bypasovat ExecutionPolicy a teda ku skriptu prikladat aj prikaz ako ho spustit.

127
Vývoj / Re:Načtení 2D pole v C
« kdy: 21. 11. 2022, 16:45:28 »
Zatial je tu mnoho filozofickej diskusie, ale malo kodu, tak postnem ja - ako som uz vyssie spomenul, da sa to vyriesit so standardnymi C funkciami fgets() a strtok() napr. takto:

matrix.c
Kód: [Vybrat]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_ROWS 100
#define MAX_COLS 100
#define MAX_LINE_LENGTH 256

int main()
{
    FILE *fp;
    char matrix_line[MAX_LINE_LENGTH];
    char *matrix_element;
    int i, j, max_i, max_j;
    int num_element;
    int matrix[MAX_ROWS][MAX_COLS];

    fp = fopen("matrix.dat","r");

    printf("Reading data from the file into the matrix:\n");
    i = 0;
    while (fgets(matrix_line, MAX_LINE_LENGTH, fp) != NULL) {
        // split line into matrix elements
        matrix_element = strtok(matrix_line, ",;\t ");
        j = 0;
        while(matrix_element != NULL) {
            // populate matrix
            matrix[i][j] = atoi(matrix_element);
            j++;
            matrix_element = strtok(NULL, ",;\t ");
        }
        i++;
    }
    max_i = i;
    max_j = j;
    fclose(fp);
    printf("..DONE.\n\n");

    // now print the matrix
    printf("The matrix is:\n");
    for (i = 0; i < max_i; i++) {
        for (j = 0; j < max_j; j++) {
            printf("%d\t", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}

Nacita zo suboru matica.dat takuto
Kód: [Vybrat]
1 2 3 4
5 6 7 8
alebo aj takuto maticu kde su prvky oddelene roznymi separatormi.
Kód: [Vybrat]
1; 2, 3 4
5 6; 7 8

Output:
Kód: [Vybrat]
$ gcc matrix.c -o matrix

$ matrix
Reading data from the file into the matrix:
..DONE.

The matrix is:
1       2       3       4
5       6       7       8

128
Vývoj / Re:Alternativa za Excel Visual Basic?
« kdy: 21. 11. 2022, 14:14:05 »
Pretoze Python v LO vyzaduje nakonfigurovat:
+1

ano, zistil som ze si musim minimalne doinstalovat este toto:
Kód: [Vybrat]
sudo apt install libreoffice-script-provider-python

129
Vývoj / Re:Alternativa za Excel Visual Basic?
« kdy: 21. 11. 2022, 12:49:58 »
Na VBA neni nic zle, je to jednoduchy jazyk a je k tomu mnozstvo informacii a volne dostupneho kodu.
Niekde som cital, ze v LibreOffice Calcu sa da pouzivat na skriptovanie aj Python, ale ked som podla navodu hladal na mojom Linux PC, tak som tam taku moznost vobec nenasiel, ale len LibreOffice Basic.

130
Studium a uplatnění / Re:Doučování/konzultace jazyka C
« kdy: 20. 11. 2022, 18:46:10 »
Ahoj, hledám doučování/konzultace jakyka C. Progooglil jsem net a našel buď staré inzeráty, nebo šílenosti typu 1500kč/h. Jde mi o dovysvětlení některých věcí, popřípadě (pookud to bude možné) kontrolu kódu, který mi občas nefunguje. Vše v oblasti sš/vš úloh a příkladů... 

Poradíte někdo kde hledat?

díky
Ked sa chces naucit programovat musis nad tym stravit mnozstvo casu, bez toho to jednoducho nejde.
Jedna zo zakladnych dovednosti programatora je naucit sa kod debugovat, tak zistis preco ti to nefunguje. Naco by si za to hned platil velke sumy, ked pomoc mozes mat aj bezplatne. Prihlas sa do nejakeho programatorskeho fora a postuj tam svoje problemy a urcite sa niekto najde kto ti pomoze. Ked budes postovat sem https://www.tek-tips.com/threadminder.cfm?pid=205 pomozem ti aj ja :)
Ak chces naozaj sukromne doucovanie, daj sem emailovy kontakt.

131
Vývoj / Re:Načtení 2D pole v C
« kdy: 20. 11. 2022, 17:34:38 »
@Pejtl6:
Mozes pouzit takyto postup: Textovy subor s datami otvoris s fopen() a zavries s fclose()
Subor budes citat v cykle po riadkoch za pouzitia funkcie fgets(). Pritom cisla z kazdeho riadku rozparsujes funkciou strtok() a ulozis ich do 2D pola.
Ak si s tym nebudes vediet poradit postni svoj dotaz sem https://www.tek-tips.com/threadminder.cfm?pid=205 a ja tam postnem funkcny kod



   

132
Ja sice komplikovanejsie stavove diagramy moc neuznavam, lebo vacsinou tam autor nieco zabudne zakreslit a potom cely ten diagram stoji za h***o, ale taketo diagramy umoznuje kreslit LaTeX package TikZ - vid napr.: https://texample.net/tikz/examples/tcp-state-machine/

133
Hardware / Re:Viete mi pomôcť s nacenením PC zostavy?
« kdy: 29. 10. 2022, 22:06:58 »
PC je az moc nadupane. Ked uz niekto zaplati za takuto konfiguraciu tolko penazi (tipujem minimalne 2500-3000 EUR), tak predavat sa to neoplati, pretoze predat sa to bude dat len za cenu velmi velkej straty.
 

134
Hardware / Re:Viete mi pomôcť s nacenením PC zostavy?
« kdy: 28. 10. 2022, 18:32:13 »
mozna kolem 25.

ty si iný lacný Jožko ...
@my name: vsak napis kolko by si za to asi chcel ?

135
Vývoj / Re:Jaký jazyk na malé portabilní programy
« kdy: 17. 09. 2022, 11:29:30 »
Co sa tyka C/C++, IDE Code::Blocks je pre Linux aj Winsows a ma designer zvany wxSmith https://wiki.codeblocks.org/index.php/WxSmith_tutorials

Stran: 1 ... 7 8 [9] 10 11 ... 19