С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437

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

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

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

не могу понять эту запись 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2011, 14:50
Ответы с готовыми решениями:

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

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

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

7
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
10.11.2011, 15:04
Цитата Сообщение от Doctor_ Посмотреть сообщение
это задаётся массив из 800 элементов которые все 0, и потом count прибавляет
Точно!
1
Day
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
10.11.2011, 15:14
Цитата Сообщение от 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
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.11.2011, 15:32
А можно в глобальную область засунуть.
Хотя нет, здесь он в функции.
1
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
10.11.2011, 15:38
Цитата Сообщение от 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
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
10.11.2011, 16:11
При инициализация не всех элементов массива оставшиеся неявно инициализируются нулями.
1
Заблокирован
10.11.2011, 18:32
Цитата Сообщение от 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
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
12.11.2011, 12:04
Цитата Сообщение от Сыроежка Посмотреть сообщение
Здесь вам уже успели сказать глупость
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2011, 12:04
Помогаю со студенческими работами здесь

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

кто объяснит сей фэнОмэн?
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 мая - сайт попадает под раздачу (в индексе ноль страниц) :( 28 мая - 02 июня - с Яндекса на сайт...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru