Diskuze: Deklarace proměnných ve vlastní funkci
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, úplne všade Asi si
sa do toho pustil prvý krát, ale radšej si pred tým ešte prejdi tutoriály
tu na sieti Základní konstrukce jazyka C
Z toho kódu ani neviem veľmi odhadnúť čoho sa snažíš docieliť, tak ak
chceš vidieť ako by to mohlo vyzerať, napíš čo má tvoj program robiť a
medzi tým čo si prejdeš tie základy, tak ti sem môžem pridať kód
/*Definujte vlastni funkci s nazvem UMOCNENI. vstupem do teto funkce je
dvojicee celociselnzych vektoru A a B
a pocet slozek techto vektoru je S. Funkce nic nevraci. Ucelem funkce je
napocitat druhe mocniny slozek A a ulzit je do B.*/
Jakože, nechci tu po nikom, aby za mě dělal úkoly, ale kdyby mi někdo
poradil, jak má vypadat struktura, byl bych nesmírně vděčný
Zkontroluj si zejména středníky a závorky.
Zde je pár rad k tvému úryvků kódu:
Pokud funkce nemá parametr, používej klíčové slovo void. Pokud funkce vrací hodnotu, používej příkaz return s návratovou hodnotou. V C nelze definovat funkci uvnitř jiné funkce. Chybí Ti kompletně obsah funkce main(). Pro inicializaci prvků celociselneho pole se používají složené závorky. V tomto případě to ale takto dělat nemůžeš. Středník v hlavičce definice funkce být nemá a naopak Ti chybí v příkazu ve for cyklu.
void UMOCNENI(void);
int main(void){
void UMOCNENI(void){
int S;
S = 3;
int A[S];
int B[S];
A[S] = (2, 1, 3);
int i;
for(i = 0; i < S; i++ ){
B[i] =A[i*i];
printf("Vektor B=%d",B[i]);
return 0;
}
}
}
/*Zatím jsem se dostal sem. Chyby to už neukazuje a začíná to už něco
dělat, ale jsem si téměř jist chybami v cyklu for.
Pokud je výuka koncipována dobře, měl bys znát jak vypadá struktura programu, neboť bys měl mít potuchy co jsou to ukazatele. Protože to co se předává funkci není pole ale ukazatel na pole. A naopak, pokud probírate základy C, pak je příklad zadán nesmyslně, protože si příklad vyžaduje znalost pokročilejších technik.
C jsme probírali měsíc a tohle byla úloha ze zkoušky
Zde máš řešení:
#include <stdio.h>
// Debug mod - 0 bez vypisu, 1 s vypisem
#define DEBUG 0
// Prototypy
void UMOCNENI(int arr1[], int arr2[], int size);
#if (DEBUG == 1)
void VYPIS(int arr[], int size);
#endif
int main(void) {
int A[] = { 1,2,3,4,5 };
int B[sizeof(A) / sizeof(int)];
unsigned int len = sizeof(A) / sizeof(int);
UMOCNENI(A, B, len);
#if (DEBUG == 1)
VYPIS(B, len);
#endif
return 0;
}
// Naplneni pole druhymi mocninami prvku prvniho pole
void UMOCNENI(int arr1[], int arr2[], int size) {
int i;
for (i = 0; i < size; i++) arr2[i] = arr1[i] * arr1[i];
}
#if (DEBUG == 1)
// Vypis pole
void VYPIS(int arr[], int size) {
int i;
for (i = 0; i < size; i++) printf("%d ", arr[i]);
}
#endif
Zobrazeno 9 zpráv z 9.