238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
1

Кто объяснит почему так надо записывать? Си

10.11.2011, 14:50. Показов 830. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Функция, которая выводит на экран уникальные символы, водишь символьную строку и он выводит только уникальные символы в том порядке в котором были ведены.

не могу понять эту запись count[N] = {0}; это задаётся массив из 800 элементов которые все 0, и потом count прибавляет или не так? можете объяснить?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <string.h>
#define N 800
 
void print(char *s);
int main()
{
char text[N];
gets(text);
print(text);
getch();
return 0;
}
void print(char *s)
{//2
   int i, count[N] = {0};
   for (i = 0; s[i]; i++)
      count[s[i]]++;
   for (i = 0; s[i]; i++)
      if (count[s[i]] == 1)
         printf("%c", s[i]);
}//2
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2011, 14:50
Ответы с готовыми решениями:

Кто объяснит мне что не так?
Создал сайт http://poselkov.ru - разместил в Яндекс.Директ, появились заходы по рекламе, но не могу...

Кто объяснит почему true == false ?
Спасайте! а то я щас повешусь от взрыва мозга! Кто объяснит вот что это за фигня. Когда я в...

Кто объяснит почему не работает валидация?
есть валидатор для boolean я его тестирую и специально посылаю туда текст.мало ли что может быть....

Кто объяснит mb_preg_match_all
Да я в курсе что всем mb_ штуки предназначены для работы с мультибайтовыми кодировками. Но как их...

7
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
10.11.2011, 15:04 2
Цитата Сообщение от Doctor_ Посмотреть сообщение
это задаётся массив из 800 элементов которые все 0, и потом count прибавляет
Точно!
1
Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
10.11.2011, 15:14 3
Цитата Сообщение от Doctor_ Посмотреть сообщение
не могу понять эту запись count[N] = {0}; это задаётся массив из 800 элементов которые все 0, и потом count прибавляет или не так? можете объяснить?
А я не уверен. То что 1-й (нулевой) элемент Count[0] будет = 0, это точно. А вот по поводу остальных - не знаю, все от комптлятора зависит...
Надежнее
C
1
for(j=0; j<N; j++) Count[j] = 0;
Можно еще так
C
1
memset(Count, 0, N*sizeof(int));
1
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.11.2011, 15:32 4
А можно в глобальную область засунуть.
Хотя нет, здесь он в функции.
1
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
10.11.2011, 15:38 5
Цитата Сообщение от Day Посмотреть сообщение
То что 1-й (нулевой) элемент Count[0] будет = 0, это точно. А вот по поводу остальных - не знаю
Помнится, у Дейтелов это было как однозначное утверждение - все указанные элементы инициализируются соответствующими значениями, а остальные - нулями.

Добавлено через 1 минуту

Вот ещё:
Цитата Сообщение от http://c-faq.com/~scs/cclass/notes/sx4aa.html
If there are fewer initializers than elements in the array, the remaining elements are automatically initialized to 0
1
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
10.11.2011, 16:11 6
При инициализация не всех элементов массива оставшиеся неявно инициализируются нулями.
1
Заблокирован
10.11.2011, 18:32 7
Цитата Сообщение от Doctor_ Посмотреть сообщение
Функция, которая выводит на экран уникальные символы, водишь символьную строку и он выводит только уникальные символы в том порядке в котором были ведены.

не могу понять эту запись count[N] = {0}; это задаётся массив из 800 элементов которые все 0, и потом count прибавляет или не так? можете объяснить?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <string.h>
#define N 800
 
void print(char *s);
int main()
{
char text[N];
gets(text);
print(text);
getch();
return 0;
}
void print(char *s)
{//2
   int i, count[N] = {0};
   for (i = 0; s[i]; i++)
      count[s[i]]++;
   for (i = 0; s[i]; i++)
      if (count[s[i]] == 1)
         printf("%c", s[i]);
}//2
Данная строка

C++
1
  int i, count[N] = {0};
инициализирует весь массив нулями. Здесь вам уже успели сказать глупость, что мол нет уверенности на счет того, что все остальные элементы массива будут проинициализированы 0, но на самом деле если список инициализации для агрегатного типа меньше числа элементов этого типа, то оставшиеся элементы инициализируются нулем. Для фундаментальных типов, к которым относится int это означает,что элементы будут проинициализированы нулем.

Чтобы еще более было понятно, то, например, если вы хотите проинициализировать первый элемент массива единицей, а все остальные нулем, то вы можете записать

C++
1
 int i, count[N] = {1};
То есть инициализация элементов массива, для которых не хватило инициализаторов,будут инициализированы нулем.

Данная запись удовлетворяет синтаксису языка в С. В С++ можно поступить еще проще, если вы хотите, чтобы все элементы массивы были проинициализированы 0. Для этого достаточно написать
C++
1
  int i, count[N] = {};
то есть не указывая никакого значения в фигурных скобках.
1
Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
12.11.2011, 12:04 8
Цитата Сообщение от Сыроежка Посмотреть сообщение
Здесь вам уже успели сказать глупость
Спасибо!
0
12.11.2011, 12:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2011, 12:04
Помогаю со студенческими работами здесь

кто объяснит сей фэнОмэн?
http://www.yandex.ru/yandsearch?text=%D1%E...ED%FB&amp;stype=www 2 -ая и 3-я позиции...

Кто объяснит такой прикол?!
вот только что столкнулся! Итак... Input - Delphi 7 - Win XP SP3 - avast ver 7.0 Process...

Непонятная ошибка, кто объяснит?
Наткнулся на непонятную ошибку. Раньше код компилировался, теперь выдает ошибку. Для примера...

Кто объяснит поведение Яндекса ?
Наблюдаю такую хронику событий. 28 мая - сайт попадает под раздачу (в индексе ноль страниц) :( ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru