объясните плз как работает массив в "С"(подробно!)
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



объясните плз как работает массив в... Expand / Collapse
Автор
Сообщение
01.11.2006 0:20
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 02.11.2006 15:23
Сообщ.: 3, Visits: 8
объясните плз как работает массив в "С"(подробно!)
вот пример

#include <stdio.h>
#include <conio.h>
#define eof -1
#define maxind 10 // kol.elementov massiva
_ _ _ _ _ _ _ _ _ _ _ _ _

int main()
{
int c,i ;

int nd[maxind];

for(i=0; i<MAXIND; i++)
nd[i]=0;

printf("Enter srting");

while((c=getchar()) !=eof)

if(c>='0' && c <='9')
++nd[c-'0']; // nakopplenie v s4iot4ike
printf("Num.of dig. are:");

for(i=0 ; i<MAXIND; i++)
 printf ("for i=%d num. of dig. are",i, nd[i] ) ;
getch();
}

Программа высчитывает сколько раз повторяются введенные символы.

Сообщ. #906735
01.11.2006 9:09


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 27.03.2008 15:26
Сообщ.: 701, Visits: 7 028
Это что за хрень??????????

int main()
{
int c,i ;

int nd[maxind];

for(i=0; i nd[i]=0;             <- ... где хотя-бы окончание ?

printf("Enter srting");

while((c=getchar()) !=eof) 

if(c>='0' && c <='9')
++nd[c-'0']; // nakopplenie v s4iot4ike
printf("Num.of dig. are:");

for(i=0 ; i printf ("for i=%d num. of dig. are",i, nd[i] ) ;  <-... скобки закрывающие считать умеешь? Say nothing about construction!
getch();
}

Сообщ. #906738
01.11.2006 10:29
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Silver (01.11.2006)
Это что за хрень??????????

Это глюк форума. Я уже исправил текст оригинального вопроса. 

Сообщ. #906744
01.11.2006 11:52
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 30.03.2008 17:43
Сообщ.: 247, Visits: 2 370
Как работает массив подробно почитай в книжке (Страуструпа, например), да для данного примера это и не нужно. Не копировать же сюда главу.
Основная суть программы - предположение, что символы идут по порядку в кодовой таблице от '0' до '9', ну а символ в с - это все равно что его код. И каким бы не был код '0' - '0' всегда даст 0, '1' - '0' - 1 и так далее. Т.е. это типа скоростной способ преобразования символа в число. Кстати делать так не рекомендуется, так как в случае когда коды символов цифр в таблице идут не по порядку (я такой не встречал) программа работать перестанет. В примере объявляется массив счетчиков и часть с - '0' - преобразует символ в число, получая индекс счетчика ну а потом счетчик наращивается. Более понятно наверное будет так:
int charIndex = c - '0';
if((charIndex>=0) && (charIndex <=9))
nd[charIndex] = nd[charIndex] + 1;
Сообщ. #906750
01.11.2006 13:47


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 27.03.2008 15:26
Сообщ.: 701, Visits: 7 028
bazile (01.11.2006)
Silver (01.11.2006)
Это что за хрень??????????

Это глюк форума. Я уже исправил текст оригинального вопроса. 

Приношу автору топика свои извинения!

Сообщ. #906757
01.11.2006 15:29
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 02.11.2006 15:23
Сообщ.: 3, Visits: 8
to VADIM IQ
Скинь плз ссылку или текст на форум.Я не доганяю как работает массив!
Сообщ. #906760
02.11.2006 15:26
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 02.11.2006 15:23
Сообщ.: 3, Visits: 8
При запуске кода на С++Билдер пишет что не может найти borlnddmm.dll файл хотя он есть,что делать.Плз скинте ссылку с работающей программой турбо С.
Сообщ. #906823
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 11:16