Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Тоха Гость
|
Добавлено: Вт Май 11 2004 15:06 Заголовок сообщения: Препод придирается или виды символьных констант |
|
|
Я вообще только учусь программировать на C...
Написал программу-статистика строки(типа в универе надо ее сдать),все работает.Вот на всякий случай код:
#include <stdio.h>
#include <string.h>
main()
{
char awake[150];
int tmp,k,i,j;
printf("Vvedite stroky\n");
gets(awake);
for(i=0;(i<strlen(awake));i=i+k)
{
k=1;
for (j=i+1;(j<strlen(awake));j++)
if (awake[j]==awake[i])
{
tmp=awake[j];
awake[j]=awake[i+k];
awake[i+k]=tmp;
k=k+1;
}
if (awake[i]==32)
printf("%d elementov probel\n",k);
else
printf("%d elementon %c\n",k,awake[i]);
}
}
Условие if (awake[i]==32) ввел для красоты отображения статистики.Типа,пробел визуально-пустое место,поэтому вместо этого пустого места у меня будет писаться
elementov probel.
Препод говорит,как,мол,можно еще представить пробел кроме как через код 32?Я ему говорю ,типа можно еще записать так:
if (awake[i]==' ')
Правильно, говорит,но есть еще до хера способов,типа,пока все не перечислишь хер зачту тебе прогу.ну я ему еще:
if (awake[i]==040)8-ная контст
if (awake[i]==0x20)16
if (awake[i]=='\ ')
говорит,еще 2 способа есть...
Помогите!Please! |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Вт Май 11 2004 16:39 Заголовок сообщения: |
|
|
можно:
if(awake[i]-32) // и иже с ним -' ', -0x20, -040
printf("%d elementon %c\n",k,awake[i]);
else
printf("%d elementov probel\n",k);
, но это извращение
Можно:
if( isspace(awake[i]) ) ... но тогда будут считаться и табуляции, тебе это не мешает ?
Кто ещё предложит способы ? |
|
Вернуться к началу |
|
|
совсем незнакомый
Зарегистрирован: 24.12.2003 Сообщения: 183 Откуда: Israel
|
Добавлено: Вт Май 11 2004 19:38 Заголовок сообщения: |
|
|
Препод прав. У тебя нет проверки ни на один из двух табуляторов.
Код: |
if ('\t'==c) printf("horizontal tab.\n");
if ('\v'==c) printf("vertical tab.\n");
|
|
|
Вернуться к началу |
|
|
GREA
Зарегистрирован: 14.05.2003 Сообщения: 758 Откуда: Новосибирск
|
Добавлено: Вт Май 11 2004 20:00 Заголовок сообщения: |
|
|
Рабочий пример еще одного варианта:)))
#include<stdio.h>
#include<string.h>
main()
{int i,k=1;
char tmpstr[7];
char awake[10];
strcpy(awake,"abcd fg");
for(i=0;i<strlen(awake);i++){
strcpy(tmpstr,"!");//one char:)
printf("%d elementov %s\n",k,(awake[i]-' ')?strset(tmpstr,awake[i]):strcpy(tmpstr,"probel"));
}} |
|
Вернуться к началу |
|
|
Mr.Nobody Гость
|
Добавлено: Ср Май 12 2004 18:50 Заголовок сообщения: |
|
|
Дело скорее всего не в табуляциях, скорее он имел ввиду эскейп-последовательности:
1. if ( awake[i]='\040' )
2. if ( awake[i]='\x20' ) |
|
Вернуться к началу |
|
|
Тоха Гость
|
Добавлено: Ср Май 19 2004 20:32 Заголовок сообщения: |
|
|
Спасибо всем.Прогу я здал(просто добавил проверку на табуляцию)Вот говорю:"Приймите у меня программку,вы на прошлом уроке не прняли из-за того что проверки на табуляцию не было.Вот,теперь сделал!" Прокатило,про виды символьных конст. видимо забыл! |
|
Вернуться к началу |
|
|
|