PDA

View Full Version : Синтактична грешка при C код



Fena
07-03-2006, 22:12
От скоро се занимавам с 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, 22:18
if ((ch ==> 'a')

Още тук ти е грешката.
При провека за равно пишеш ==, но ако трябва да е равно или по-голямо/по-малко пишеш просто => =< ;)

демек така трябва да изглежда:

if ((ch => 'a')

Fena
07-03-2006, 22:19
Не става, пак е същото :roll:

Пробвах всякакви варианти и пак неще майка му мръсна... :roll:

WILD__BOY
07-03-2006, 22:21
if ((ch >= 'a')

Пробвай така.

Fena
07-03-2006, 22:24
Хаха... абе по всякакъв начин ги въртях ... и пак не става :lol:

Явно не е грешката при това... :roll:

WILD__BOY
07-03-2006, 22:33
Хаха... абе по всякакъв начин ги въртях ... и пак не става :lol:

Явно не е грешката при това... :roll:

Задачата интелигентно си я решил. И грешката определно е синтактична. Ама явно не можем да я окрием.

Fena
07-03-2006, 22:40
Хм...има друг начин, но е малко бабешки.

Ръгам в 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

Fena
07-03-2006, 22:56
БОЖЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ ЕЕЕЕЕЕЕ 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, 22: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

Хаххаха
как не сме го видели бре! хахХахахА тва ме уби
верно че трябва да са три скоби да мъ бибина майката!
е за тва трябва да го видя с хубав компилатор за да го забележа. Намери си компилатор, който като си посочиш отварящата скоба, да ти мига затварящата ;)

Fena
07-03-2006, 23:01
Е чак такива екстри не ми трябват :lol:

Ама ще си имам едно наум вече за тея скоби... :-D

WILD__BOY
07-03-2006, 23:07
Е чак такива екстри не ми трябват :lol:

Ама ще си имам едно наум вече за тея скоби... :-D

Оо
и аз така си мислих ама по-натам като пишеш огромни функции ще се сетиш за това ;)

DuraceLL
07-06-2006, 11: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, 17:48
mejdudrugoto ti prepora4vam da mine6 kam C++. na men li4no mi haresva mnogo pove4e!

Fena
07-06-2006, 18:34
Ти как мислиш че ще почна C++ като не съм научил още C...

hack3r
07-10-2006, 15:43
Млади господинчо, първо напиши с какъв компилатор компилираш програмата.
И защо търсиш тази помощ в този форум а не във форум за програмни езици.
Влез в download.bg и потърси компилатори има хубави.
Аз лично използвам gcc.

hack3r
07-10-2006, 15:45
Ти как мислиш че ще почна C++ като не съм научил още C...

Ае човек.И аз така мислих и научих C следкоето научих и C++,но имам много приятели които са учили само C++ и немога да кажа че знаят малко!!!

Fena
07-10-2006, 22:30
C е основата на C++. Предполага се че ако го знаеш, ще ти е по-лесно занапред.

Същото е и с Паскала. Всеки начинаещ програмист е добре да почне с Паскал, тъй като той е най-елементарен и най-логичния, съответно по-лесен за разбиране. След изучаването му се минава нагоре :)

Fena
07-11-2006, 09:10
Хитрец е тоя малкия :-D