Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: bz1pp3d в Nov 11, 2011, 00:47



Титла: "C" Изследване на стрингове
Публикувано от: bz1pp3d в Nov 11, 2011, 00:47
Здравейте! Имам малко затруднения при изследване на стрингове или по-точно на низ от символи. Трябва да се напише цикъл, който чете символи от клавиетурата, изследва и установява колко символа са въведени, дали има цифри и например някоя букв (например 'А'). Ето го моето предложение, което не дава никаква информация:
Код
GeSHi (C):
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. char ch;
  5. int na,nz,n;
  6.  
  7. printf("Please enter a symbol: ");
  8. while((ch=getchar() !=EOF))
  9. {
  10. n=na=nz;
  11. n++;
  12. if(ch=='A') na++;
  13. if(ch>='0' && ch<='9') nz++;
  14. }
  15. return 0;
  16. }
  17.  
  18.  

Приемам всякакви критики и предложения! Благодаря!


Титла: Re: "C" Изследване на стрингове
Публикувано от: shoshon в Nov 11, 2011, 04:11
Код
GeSHi (C):
  1. int na=0,nz=0,n=0;
  2.  
  3. while((ch=getchar() !=EOF))    --->   while((ch=getchar()) !=EOF)
  4.  
WTF??? n=na=nz; ???


Титла: Re: "C" Изследване на стрингове
Публикувано от: senser в Nov 11, 2011, 07:28
1-во и много важно - трите променливи n, na, nz само ги декларираш, но никъе не ги инициализираш, т.е. при последващото инкрементиране не е ясно какви стойности ще имат. Предполагам това е била целта на реда
Код
GeSHi (C):
  1. n=na=nz
но, по-смислено би било да е
Код
GeSHi (C):
  1. n=na=nz=0
и да е извън цикъла, защото така както си го написал при всяко влизане в цикъла променливите ще имат една и съща стойност
2. Какава е идеята на променливата n - декларираш я, но доколкото виждам не я използваш никъде. Предполагам е останала при преписването на някой друг цикъл, който си гледал.
3. Каквото и да се случва с променливите ти в крайна сметка никъде не ги "показваш" - един printf преди return-a ще ти покаже какво е станало след края на цикъла


Титла: Re: "C" Изследване на стрингове
Публикувано от: bz1pp3d в Nov 11, 2011, 09:21
Благодаря на всички! Цикълът тръгна и работи! Успешен ден!


Титла: Re: "C" Изследване на стрингове
Публикувано от: b2l в Nov 11, 2011, 09:27
Благодаря на всички! Цикълът тръгна и работи! Успешен ден!

И как тръгна? Я дай кода.


Титла: Re: "C" Изследване на стрингове
Публикувано от: bz1pp3d в Nov 11, 2011, 09:57
Код
GeSHi (C):
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. char ch;
  5. int na,nz,n;
  6. na=nz=n=0;
  7. printf("Bitte geben Sie eine Folge von Symbolen ein: ");
  8. while((ch=getchar()) !=EOF)
  9. {
  10. n++;
  11. if(ch=='A') {printf("Buchstabe A: %c\n", ch); na++;}
  12. if(ch>='0' && ch<='9'){printf("Ziffern: %c\n", ch); nz++;}
  13.  
  14. }
  15. return 0;
  16. }
  17.  
  18.