View Full Version : Синтактична грешка при C код
От скоро се занимавам с C и не разбирам още много много. Та, реших да седна да реша една задачка, условието на която е следното:
"Напишете програма, която брои буквите, цифрите и пунктуационните знаци, въвеждани от потребителя. Въвеждането спира, когато бъде натиснат "ENTER"
Дотук добре, но при компилирането на програмата ми излиза недружелюбното съобщение още на първия if : "expected primary-expression before '>' " token"
Ето го и самия код:
#include <stdio.h>
#include <conio.h>
int main(void)
{
char ch;
int bkv=0, cif=0,zap=0;
do {
printf("vyvedete znaka: ");
scanf("%c", &ch);
if ((ch ==> 'a') && (ch <== 'Z')) || ((ch ==> 'A') && (ch <== 'Z')) ch = 1;
if ((ch ==> '0') and (ch<=='9')) ch = 2;
if (ch == ',') ch = 3;
switch(ch) {
case 1:
bkv = bkv + 1;
break;
case 2:
cif = cif +1;
break;
case 3:
zap = zap +1;
break;
}
}
while (ch !='\r');
printf("Bukvi: ");
printf(" %d", bkv);
printf("\nCifri: ");
printf(" %d", cif);
printf("\nZapetai: ");
printf(" %d", zap);
getch();
getch();
}
Та...ако грешката ми е синтактична, моля да ми я поправите. Ако пък е нещо по-сериозно, моля ви да ми обясните какво не е наред
:roll: Благодаря предварително ! :D
п.с: И моля ви не ми се нахвърляйте с репликите "Офф много си смотан..". Не всеки се е родил научен :roll: :twisted:
WILD__BOY
07-03-2006, 21:18
if ((ch ==> 'a')
Още тук ти е грешката.
При провека за равно пишеш ==, но ако трябва да е равно или по-голямо/по-малко пишеш просто => =< ;)
демек така трябва да изглежда:
if ((ch => 'a')
Не става, пак е същото :roll:
Пробвах всякакви варианти и пак неще майка му мръсна... :roll:
WILD__BOY
07-03-2006, 21:21
if ((ch >= 'a')
Пробвай така.
Хаха... абе по всякакъв начин ги въртях ... и пак не става :lol:
Явно не е грешката при това... :roll:
WILD__BOY
07-03-2006, 21:33
Хаха... абе по всякакъв начин ги въртях ... и пак не става :lol:
Явно не е грешката при това... :roll:
Задачата интелигентно си я решил. И грешката определно е синтактична. Ама явно не можем да я окрием.
Хм...има друг начин, но е малко бабешки.
Ръгам в switch-a като case-ве всички цифри от 0 до 9, както и запетайката. Потребителя има възможност да въвежда три неща: цифра, буква, или препинателен знак. След като съм ги отсял цифрите и знака, остана само буквата, което може да я "уловя" като я сложа в deffault-а на switch-a. Така ще избегна въвеждането на всяка буква като отделен case ... хитро, а :D Кода ще замяза на нещо от тоя сорт:
switch(ch) {
case '1':
case ' 2':
case '3':
case '4':
и така до...
case '9':
cfr = cfr +1;
case ',':
zap = zap +1;
и тук вече дифолта:
default: bkv = bkv + 1;
}
Така става по-добре, защото ще се размина с if-те. Но трябва да разбера къде ми е грешката, защото ще ме преследва определено занапред :smt012
БОЖЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ ЕЕЕЕЕЕЕ http://forum.4at.info/Smileys/default/icon_SHOCKED-2.gif http://forum.4at.info/Smileys/default/icon_SHOCKED-2.gif
По принцип условието на If трябва да се огради ЦЯЛОТО в скоби.... хем внимавах за тея неща...грр
Значи ще замяза така
if ((ch => 'a' && ch <= 'Z') || (ch => 'A' && ch <= 'Z') ) ch = 1;
http://forum.4at.info/Smileys/default/gen3-drun-head-wall.gif http://forum.4at.info/Smileys/default/gen3-drun-head-wall.gif http://forum.4at.info/Smileys/default/gen3-drun-head-wall.gif http://forum.4at.info/Smileys/default/gen3-drun-head-wall.gif http://forum.4at.info/Smileys/default/gen3-drun-head-wall.gif
WILD__BOY
07-03-2006, 21:58
БОЖЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ ЕЕЕЕЕЕЕ http://forum.4at.info/Smileys/default/icon_SHOCKED-2.gif http://forum.4at.info/Smileys/default/icon_SHOCKED-2.gif
По принцип условието на If трябва да се огради ЦЯЛОТО в скоби.... хем внимавах за тея неща...грр
Значи ще замяза така
if ((ch => 'a' && ch <= 'Z') || (ch => 'A' && ch <= 'Z') ) ch = 1;
http://forum.4at.info/Smileys/default/gen3-drun-head-wall.gif http://forum.4at.info/Smileys/default/gen3-drun-head-wall.gif http://forum.4at.info/Smileys/default/gen3-drun-head-wall.gif http://forum.4at.info/Smileys/default/gen3-drun-head-wall.gif http://forum.4at.info/Smileys/default/gen3-drun-head-wall.gif
Хаххаха
как не сме го видели бре! хахХахахА тва ме уби
верно че трябва да са три скоби да мъ бибина майката!
е за тва трябва да го видя с хубав компилатор за да го забележа. Намери си компилатор, който като си посочиш отварящата скоба, да ти мига затварящата ;)
Е чак такива екстри не ми трябват :lol:
Ама ще си имам едно наум вече за тея скоби... :-D
WILD__BOY
07-03-2006, 22:07
Е чак такива екстри не ми трябват :lol:
Ама ще си имам едно наум вече за тея скоби... :-D
Оо
и аз така си мислих ама по-натам като пишеш огромни функции ще се сетиш за това ;)
DuraceLL
07-06-2006, 10:11
if ((ch => 'a' && ch <= 'Z') || (ch => 'A' && ch <= 'Z') ) ch = 1;
da stane
if ((ch => 'a' && ch <= 'z') || (ch => 'A' && ch <= 'Z') ) ch = 1;
!!
a i moje da optimizira6 malko
if (((ch ==> 'a') && (ch <== 'z')) || ((ch ==> 'A') && (ch <== 'Z'))) bkv=bkv+1;
if ((ch ==> '0') and (ch<=='9')) cif=cif+1;
if (ch == ',') zap=zap+1;
taka nqma nujda ot switch
DuraceLL
07-06-2006, 16:48
mejdudrugoto ti prepora4vam da mine6 kam C++. na men li4no mi haresva mnogo pove4e!
Ти как мислиш че ще почна C++ като не съм научил още C...
Млади господинчо, първо напиши с какъв компилатор компилираш програмата.
И защо търсиш тази помощ в този форум а не във форум за програмни езици.
Влез в download.bg и потърси компилатори има хубави.
Аз лично използвам gcc.
Ти как мислиш че ще почна C++ като не съм научил още C...
Ае човек.И аз така мислих и научих C следкоето научих и C++,но имам много приятели които са учили само C++ и немога да кажа че знаят малко!!!
C е основата на C++. Предполага се че ако го знаеш, ще ти е по-лесно занапред.
Същото е и с Паскала. Всеки начинаещ програмист е добре да почне с Паскал, тъй като той е най-елементарен и най-логичния, съответно по-лесен за разбиране. След изучаването му се минава нагоре :)