Loading...
mariya.koleva avatar mariya.koleva 0 Точки

Здравейте,

Аз имам различно решение на задачата за Gender. Ето го:

void Gender (void)
{
    int answer;

    printf("Are you a female?");
    scanf("%d", &answer);
    printf(answer ? "true" : "false");
}

0
NStankov avatar NStankov 18 Точки

Здравей IliqnK,

разгледах решението на 10-та задача ComparingFLoats. В езика C функцията ABS работи само за int, ако искаш да работи за числа с плаваща запетая трябва да използваш fabs. 

0
17/10/2015 17:09:00
IliqnK avatar IliqnK 30 Точки

Благодаря, не бях обърнал внимание, че е само за int-ове. Поправено. 

0
NStankov avatar NStankov 18 Точки

То и аз разбрах в последствие :D

0
zahari.angelov avatar zahari.angelov 0 Точки

Аз имам въпрос, свързан със задачата за конвертиране на число от десетична в шестнайсетична бройна система. В задачата от домашното се иска да се конвертира числото 254 в шестнайсетично число. Намерих го - FE. Понеже 254 е в обсега на char, инициализирах променливата, която го "държи", по този начин. Защо след като се опитвам да изведа променливата с printf функцията, получавам като резултат "-2"? Когато инициализирам променливата като short, проблемът изчезва. Изглежда се получава превъртане, но на какво се дължи? 

 

#include <stdio.h>

int main()
{
	char num = 0xFE;
	printf("%d", num);

	return 0;
}

 

0
toni.vankov avatar toni.vankov 3 Точки

0xFE не е в обхвата на char ( -128 ... +127 ), може да използваш unsigned char (0 ... 255)

1
Ts.Vashkov avatar Ts.Vashkov 1 Точки

Здравей!

По този начин написано char ти е от -128 до 127 и затова ти првърта.

При unsigned char ще ти е от 0 до 255 и ще върви.

1
zahari.angelov avatar zahari.angelov 0 Точки

Благодаря за отговора. Обърках се понеже бях останал с погрешното впечатление, че char = byte (C#), а там обхвата по подразбиране е от 0 до 255. 

0
zahari.angelov avatar zahari.angelov 0 Точки

Понеже по някаква причина не мога да започна нова тема във форума, ще задам въпроса си отново тук.

Доколкото разбрах, char типът е просто целочислен тип данни[1 байт], също както int[2 или 4 байта]. Забелязах, че е позволено да декларирам и инициализирам даден символ както като char, така и като int:

int text1 = 'a';

char text2 = 'b';

 

Защо обаче не може да се декларира и инициализира масив от символи като int, а не като char? 

char text[] = "Hello, world"; //It works!

int text2[] = "Hello, world"; //It doesn't work!

0
IliqnK avatar IliqnK 30 Точки

int text1 = 'a' - работи понеже взима ascii кода на "а", т.е записва 97, а не character-а "а". С char text[] = "Hello, world" - инициализираш масив от символи, докато при int text2[] = "Hello, world" - декларираш масив от int-ове, а се опитваш да набуташ вътре character-и. 

0
20/10/2015 16:53:14
zahari.angelov avatar zahari.angelov 0 Точки

Съгласен съм, но нали и char, и int са целочислени типове, с какво char е по-различен от int? По тази логика и char <name>[] би трябвало да създава масив от целочислен тип char?

0
NikolayNK avatar NikolayNK 4 Точки

На задачата Exchange Variable Values аз съм го направил без temporary променлива. Само две променливи декларирам.
Ето го кода:

#include <stdio.h>

int main() {
    int a = 5;
    int b = 10;
    printf("Before: a = %d, b = %d\n", a, b);

    a = a + b;
    b = a - b;
    a = a -b;
    printf("After: a = %d, b = %d\n", a, b);
    return 0;
}

0
zahari.angelov avatar zahari.angelov 0 Точки

Искам да попитам първият символ NULL в ASCII таблицата еквивалентен ли е на терминиращата нула? Питам, защото, когато се опитвам да изведа този символ на конзолата с %c, ми излиза като интервал, но когато на мястото на плейсхолдъра добавя \0, четенето на стринга се прекъсва. Ето в примери какво точно имам предвид: 

 

printf("I live in %cSofia", 0); //Принтира го като интервал - I live in  Sofia

printf("I live in \0Sofia"); //терминира стринга - I live in 

printf("I live in %cSofia", '\0'); // Отново го принтира като интервал - I live in  Sofia

 

Каква е логиката? Опитвам се да намеря отговор в Интернет, но до момента нищо не намирам. 

0
toni.vankov avatar toni.vankov 3 Точки

Здравей колега,
може би имаш проблем със средата за разработка. И трите неща, който си написал трябва да дават един и същи отговор, а именно "I live in". При мен и 3-те си работят както трябва (използвам NetBeans).

0
zahari.angelov avatar zahari.angelov 0 Точки

Може би. Този резултат получавам с cygwin компилатора през конзолата. Благодаря за включването!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.