potrebovala by som poradiť. Mám program v jazyku C, ktorý má zistiť či sú všetky čísla/prvky v poli hexadecimálne čísla. Pokúšam sa nájsť chybu, ale beznádejne.
#include<stdio.h>
int main(){
int pole[]={10,2,3,44,52,7,8,90};
int i,j=0;
for(i=0; i<8; i++){
if((pole[i]>=0 && pole[i]<=9) || (pole[i]>='a' && pole[i]<='f') || (pole[i]>='A' && pole[i]<='F') ){
printf("Cisla v poli su hexadecimalne.\n", ??? );
j++;
}
else{
printf("Cisla v poli nie su hexadecimalne.\n", j);
}
}
}
Představ si binární vyjádření čísla ( tak jsou čísla v paměti počítače uložena ). bez ohledu na to, zda uložíš 0xf nebo 15, v paměti to bude vypadat stejně. Čísla, u kterých zjišťuješ v jakém jsou tvaru, musíš uložit ve tvaru, ve kterém to lze poznat, např jako řetězec. Pak ho můžeš procházet znak po znaku a kontrolovat, zda neobsahuje nepovolené znaky.
#1Judit
teď tak jak to máš, porovnáváš jednotlivé hodnoty v poli jestli jsou: (>=0 && <=9 nebo >=97 && <=102 nebo >=65 && <=70)
tak proto to nemůže fungovat..
Ale nějak nechápu co by vlastně mělo ne/fungovat. Protože je to zadání v podstatě nesmyslné, totiž řešení bude vždy pravda. Každé číslo lze napsat hexadecimálně (je to jen vizuální způsob zápisu čísla).
A jestli to myslíš tak, jak si myslím že to myslíš, tak to testuj obráceně, v případě že narazíš na neplatnou hodnotu vypiš, že nejsou.. a ukonči cyklus. Pokud cely cyklus projedeš bez chyb pak vypíšeš že je to OK.