Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 1. diel - Úvod do programovacieho jazyka C

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Jozef Vendel
Člen
Avatar
Jozef Vendel:9.12.2021 19:32

Ahoj potreboval by som poradit alebo naviest ak mozes, s myslienkou ako by som mohol urobit to ze, mam napr. pole

int numbers[] = {5, 16, 34, 60, 61, 52, 32};

A ja by som potreboval ich v C pod sebou scitat, takto:
32

52
                  61
                 60
                34
               16
               5
              --------
               7006652

Problem mam stym, ze neviem ako mam riesit to, ked pristupim k prvku napr. numbers[0] co je 61, ako mam pouzit len 1 pre pripocitanie ku numbers[1] ale len 0.

Editované
Avatar
DarkCoder
Člen
Avatar
Odpovedá na Jozef Vendel
DarkCoder:9.12.2021 22:09

Výsledek je dán součtem čísel v poli braných odzadu, kde každé číslo je modifikováno násobkem hodnoty 10 na (velikost pole - index - 1).
Tedy:
32x10na0 + 52x10na1 + 61x10na2 + 60x10na3 + 34x10na4 + 16x10na5 + 5x10na6 = 7006652

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Jozef Vendel
Člen
Avatar
Odpovedá na DarkCoder
Jozef Vendel:9.12.2021 22:59

Nevies preco mi vypocitava zly vysledok ?

#include <stdio.h>
#include <math.h>

#define SIZE 7

int main()
{
    int numbers[] = {5, 16, 34, 60, 61, 52, 32};
    int pomocny;
    int vysledok = 0;


    for(int i = 0; i < SIZE; i++){
        numbers[i] = numbers[i] * 10;
    }


   for(int i = 0; i < SIZE; i++){
        pomocny = pow(numbers[SIZE - i - 1], i);
        vysledok = + pomocny;


    }


  printf("vysledok: %d\n", vysledok);


    return 0;
}
Avatar
Jozef Vendel
Člen
Avatar
Odpovedá na Jozef Vendel
Jozef Vendel:9.12.2021 23:02

zaujimave

Editované
Avatar
DarkCoder
Člen
Avatar
Odpovedá na Jozef Vendel
DarkCoder:10.12.2021 3:08

Dříve, než zde ukáži řešení, tak pár rad k tvému kódu:

  • V C, pokud funkce nepřebírá argumenty, používá se klíčové slovo void.
  • Nepáruješ makro vyjadřující velikost pole s polem.

Buď použij makro jako velikost pole, např:

#define SIZE 7
int numbers[SIZE] = {5, 16, 34, 60, 61, 52, 32};

nebo si velikost pole zjisti pomocí operátoru preprocesoru sizeof

int numbers[] = {5, 16, 34, 60, 61, 52, 32};
int len = sizeof(numbers) / sizeof(numbers[0]);
  • Funkce pow() přebírá dva argumenty typu double, kde první představuje základ, druhý exponent a vrací typ double. Je dobré přetypovávat na typ, který funkce očekává a na typ na který převádíme.
  • pro navyšování hodnoty proměnné se používá operátor +=. Překladač při zpracování příkazu
vysledok = + pomocny;

nezahlásil chybu, neboť si nevědomky použil unární +. Což mělo za následek přiřazení proměnné pomocny proměnné vysledok.

Zde je řešení:

#include <stdio.h>
#include <math.h>

int main(void){
        const int nums[] = { 5, 16, 34, 60, 61, 52, 32 };
        int len = sizeof(nums) / sizeof(nums[0]);
        int sum = 0;

        for (int i = 0, offset = len - 1; i < len; i++) {
                sum += (nums[i] * (int)pow(10.0, offset - (double)i));
        }

        printf("Vysledek: %d\n", sum);
        return 0;
}

Velikost pole je určena pomocí operátoru preprocesoru sizeof, což umožňuje snazší testování přidáváním nebo ubíráním počtu čísel v poli. Výraz len - 1 je konstanta, jejíž hodnota je uložena do proměnné offset. Důvodem je optimalizace, je zbytečné provádět vyhodnocování aritmetického výrazu, který je konstantou v každé iteraci cyklu.

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
DarkCoder
Člen
Avatar
DarkCoder:12.10.2023 21:49

Kdy bude aktualizovaná sekce - Programovací jazyk C?

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na DarkCoder
David Hartinger:22. apríla 14:57

Děkujeme za tvoji zpětnou vazbu. Tento kurz neplánujeme v blízké době upravovat, protože se prioritně věnujeme sekcím, které jsou součástí našich rekvalifikačních kurzů. Připomínky ale sledujeme pro případné budoucí aktualizace. Vzhledem k popularitě projektu nemůžeme reagovat na každý komentář a zpracováváme zejména opakující se problémy. Zkontrolujeme, že je u kurzu uvedeno, pro které verze byl otestován, pokud pro modernější verze již nemusí vše fungovat. Díky za pochopení a podporu!

Odpovedať
New kid back on the block with a R.I.P
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 7 správy z 37.