Малко разяснения относно C

Nazi_93

Registered
Здравейте, имам няколко въпроса относно езикът за програмиране C
1) Каква е разликата между ++a и a++ / --а и а--
2) Въвеждам поредица от символи (sdhfiuheorhfweh9fhw) докато стигна нов ред. С коя функция или команда мога да ги отделя на букви, цифри и други символи?

Благодаря предварително!
 
Операциите инкрементиране и декрементиране не са само в езика C, има ги във всички изици за програмиране.

Да приемем че

a = 1;

След

++a;

ако дъмпнеш променливата ще видиш че стойността и вече е 2. Тоест инкрементира се с единица перманентно.

Обаче

a = 1;
b = a++;

Ако дъмпнеш двете променливи ще видиш че а = 1, b = 2 защото тази опреция увеличава стойноста на променливата, без да пипа оригиналната променлива.

Същото е с --a и a-- само че изваждане.
 
А как мога да проверя променлива от тип double дали е цифра или друг символ. Пробвах с
Код:
#include <ctype.h>
if (!isDigit(a)){
printf ("symbol");
}
else {

printf ("Number");
}
, но след компилацията, като въведа стойност за променливата и натисна Ентър и ми показва някаква грешка...
 
Nazi_93 каза:
А как мога да проверя променлива от тип double дали е цифра или друг символ. Пробвах с
Код:
#include <ctype.h>
if (!isDigit(a)){
printf ("symbol");
}
else {

printf ("Number");
}
, но след компилацията, като въведа стойност за променливата и натисна Ентър и ми показва някаква грешка...

Покажи грешката, която изкарва.
 
http://web-tourist.net/userfiles/5/5007.png ето какво ми показва, иначе при друга задача със същата функция isDigit върви и няма никакъв проблем при променливи от тип char
 
Виж какво ти пише: unsigned
Май трябва да и зададеш на променливата " а " типа от който е.
Не мога да ти кажа как, не съм писал на C.
 
Код:
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
int main(){
 // Дефиниране на променливите и техния тип
	int a,b,c,d,x1,x2;
	
	// Въвеждане на коефициентите на квадратното уравнение
	printf("enter a: ");
	scanf ("%d",& a);
	
	if(isdigit(double(a))){
	printf ("It's a number");
	}
	else {
		printf ("Not a number");
	}

system("pause");
return 0;
}
 
Отдавна не съм бачкал със C, но мисля че е начина по който вземаш инфото от потребителя.

Фактически ти си задал на a да се присвоява int стойност, така че то ще му придаде първата числова стойност, която въведеш. Ако не въведеш число, ще е unsigned и затова ти връща грешка.

Не съм много сигурен, но я пробвай да въведеш само число без букви?
 
Код:
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
int main(){
 // Дефиниране на променливите и техния тип
	int a,b,c,d,x1,x2;
	
	// Въвеждане на коефициентите на квадратното уравнение
	printf("enter a: ");
	scanf ("%d",& a);
	
	if(isdigit(int(a))){
	printf ("It's a number");
	}
	else {
		printf ("Not a number");
	}

system("pause");
return 0;
}

Въвеждам число -> Not a number
Въвеждам символ -> грешката по-горе.
 
Код:
int num;
char term;
printf("enter chislo: "); 
if(scanf("%d%c", &num, &term) != 2 || term != '\n')
    printf("ne e chislo\n");
else
    printf("chislo e\n");

Я пробвай това.
 
Код:
 int num;
char term;
printf("enter chislo: "); 
if(scanf("%d%c", &num, &term) != 2 || term != '\n')
    printf("ne e chislo\n");
else
    printf("chislo e\n");

Ами просто трябва да имаш две променливи, тъй като очакваш потребителя да въвежда не само числа, но и букви, затова си декларираш две променливи от тип int и char.

После присвояваш стойностите въведени от буфера, като задаваш числовите на num и буквите на term.

В if-a си правиш проверка дали е въведено число, и дали са въведени символи. Ако term в което фактически ще се съхраняват символите няма само \n което в случая индикира че си натиснал enter значи потребителя е въвеждал и символи, окето значи че input-a не е int :)
 
Между дургото и твоя пример би трябвало да работи ето така, пробвай го

Код:
char a;
 printf("enter a: ");
   scanf ("%c",& a);
   
   if(isdigit(a)){
   printf ("It's a number");
   }
   else {
      printf ("Not a number");
   }
 
Radko каза:
Операциите инкрементиране и декрементиране не са само в езика C, има ги във всички изици за програмиране.

Да приемем че

a = 1;

След

++a;

ако дъмпнеш променливата ще видиш че стойността и вече е 2. Тоест инкрементира се с единица перманентно.

Обаче

a = 1;
b = a++;

Ако дъмпнеш двете променливи ще видиш че а = 1, b = 2 защото тази опреция увеличава стойноста на променливата, без да пипа оригиналната променлива.

Същото е с --a и a-- само че изваждане.

Това не е вярно.

++a увеличава променливата и връща новата й стойност. Тоест

Код:
int a = 1;
int b = ++a;
a ще е 2 и b ще е 2
Този код ще е еквивалентен на:
Код:
int a = 1;
a = a + 1;
int b = a;

a++ първо връща стойността на а и после я увеличава с 1

Код:
int a = 1;
int b = a++;
a ще е 2, но b ще е 1
Този код ще е еквивалентен на:
Код:
int a = 1;
int b = a;
a = a + 1;
 

Back
Горе