Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Вопросы по С/С++ (СИ)

Сообщение dosikus »

YS писал(а):
А у меня первым был Pentium-133. :)) Уже в начале двухтысячных. В 2004-ом, кажет.

Что то память тебя подводит , если только не бу брал . Я в 2003 уже пень III покупал ...
Второй пень я купил в 98. До этого был первый пень , а ранее 486 и 386 - вот только 286 не было . :)))
Ну а спектрум был всякий и разный ...
Последний раз редактировалось dosikus Сб янв 25, 2014 21:27:43, всего редактировалось 1 раз.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

Что то память тебя подводит


Нене, нисколько. Мне оный добрые люди нахаляву отдали.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Вопросы по С/С++ (СИ)

Сообщение shads »

YS писал(а):А у меня первым был Pentium-133. :)) Уже в начале двухтысячных. В 2004-ом, кажется...
А я... а я...
А я помню, когда у меня еще был спектрум, друг взял себе пенька какого-то, так у него был винт, на целых 40Мб..... вот это была фантастика...
Если учитывать что ГМД в то время (на котором помещалась куча игр для спеки) вмещал помоему 600кб.....
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение BCluster »

Я 1986 года выпуска, был и наш кишиневский Вектор (первый комп, кстати очень классный), потом спектрумообразные, потом 286 папан с работы принес (в году эдак 96-97)... и все так далее :)
До этого еще в кружок ходил, там были ЕС1840 и один ЕС1841 :) с ч/б дисплеями
Сейчас бы спаял спектрум с радостью, только на рассыпухе, без МК :) Просто скорее всего потому, что уже ничего не паял года три, а душа просит :)
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Вопросы по С/С++ (СИ)

Сообщение shads »

Вот это ветка сбойнула :)... от единственной фразы aam - "никогда не понимаю мазохистов, паяющих Спектрумы на современной базе"

Попытаюсь вернуть в колею :).....

aam писал(а):простейшая девайсина с пультом от телека и БЕЗ знаковых/сегментных индикаторов у меня в Тиню2313 не лезет.
Я предлагаю вам aam, выложить описание девайсины с вашей схемой, и среди местных гуру устроить своего рода конкурс :).....
Кто сделает программу меньше, красивее, правильнее... а... как вы (гуру) на это смотрите? :).....
Протеус нам в помощь, а aam может и в железке потом проверить...
Девайсина вроде простенькая, много времени не уйдет, чтобы своим вариантом похвастать :)...
Заодно можно будет посмотреть кто какие решения применил, как модули обустроил, можно будет и вообще без модулей сварганить, в одном файле, чтобы сравнить, насколько больше программа получается, если все "красиво и правильно" оформлять.....
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение aam »

ploop писал(а):Но одно помнить надо: покупная вещь всегда дешевле, чем самодельная, с теми же характеристиками.

с теми же характеристиками :) (В т. ч. надежность, говнистость и т. п.)
А аналогичного назначения - вон я БП регулируемый на 60 Вт замутил - по деталям вышло дешевле пятихатки. Готовый около 1 т. р. стоит. Труд и секс с ним естественно не считал - типа кайф :wink:

shads писал(а):выложить описание девайсины с вашей схемой
Выложить то выложу, только не сейчас)) Ато столько по времени натрахался - так и статейку нормальную с копирайтами сделать хочется. А там уже можно и и соревноваться - я не жадный, денег с народа не беру :)
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

Вот это ветка сбойнула


Да тут уже давно флуд и оффтоп. :)
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Вопросы по С/С++ (СИ)

Сообщение coredumped »

Перечитал - да, прикольное обсуждалово...
2 aam У меня проектик есть на FPGA - там из 144 (95-GPIO) ног только 5 задействовано, и ничего страшного :))) Если FPGA необходимой емкости в меньшем корпусе нет, куда деваться?
Все будет только лучше, в крайнем случае - хуже.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение Мikа »

Привет, парни! Такая ситуация:
Нужно сделать массив, в котором будут лежать не константы, а переменные (да, я уже знаю, что это структура), но чтобы можно было обращаться к ним по очереди, увеличивая порядковый номер. Как в массиве, то есть:

Код: Выделить всё

massiv[i];
---some code---
i++;


а не по именам переменных, которые в ней лежат.

Я щас сам ищу, читаю, пробую, возможно сам найду, но за совет всё-рано буду благодарен. Спасибо :)
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение BCluster »

С чего вы взяли что в массиве только константы могут быть? точно также там переменные могут быть. И структура тут ни при чем
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение Мikа »

А как его задать?

Код: Выделить всё

int Led[5]=
{
   unsigned char a=0;
   unsigned char b=0;
   unsigned char c=0;
   unsigned char D=0;
   unsigned char e=0;
};


ТАк не получается
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Вопросы по С/С++ (СИ)

Сообщение ploop »

Код: Выделить всё

unsigned char MyArray[10];

unsigned char x = MyArray[5];
unsigned char y =100;
MyArray[6] = y;


Код: Выделить всё

// С инициализацией
unsigned char MyArray[10] = {0,1,2,3,4,5,6,7,8,9};
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение BCluster »

Мikа писал(а):int Led[5]=
{
   unsigned char a=0;
   unsigned char b=0;
   unsigned char c=0;
   unsigned char D=0;
   unsigned char e=0;
};

А чего вы хотели добиться такого рода объявлением? Просто хочу понять ход мыслей, чтоб понять где закралось непонимание.

Мikа писал(а):int Led[5]=

тут вы объявили массив типа int из 5 элементов. Это значит что все элементы этого массива будут иметь тип int.
И тут же вы делаете
unsigned char a=0;

то есть пытаетесь в массиве типа int сделать элемент типа unsigned char? Зачем?

Код: Выделить всё

struct leds
{
   unsigned char a;
   unsigned char b;
   unsigned char c;
   unsigned char D;
   unsigned char e;
}sLeds;


Так было бы корректно, но доступ по имени. Но никто не мешает сделать что-то типа

Код: Выделить всё

char* asArray = (char*)sLeds;
в asArray[0] будет значение a и т.д.


Кроме такого еще можно применить тип union. Если нужен доступ как по имени так и по индексу
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение WiseLord »

Мikа писал(а):А как его задать?

Так:

Код: Выделить всё

unsigned char Led[5] = {0, 0, 0, 0, 0};

Или так:

Код: Выделить всё

unsigned char Led[5];

Разница - во втором случае элементы массива могут быть инициализированы не нулями, а любым мусором.
А работать с элементами массива - как с любыми переменными.

Код: Выделить всё

Led[0] = 2;
Led[1] = 3;
Led[2] = Led[0] + Led[1];
....
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение Мikа »

Спасибо за ответы. У меня не то что бы непонимание. В данный момент я просто туплю :)
Я хотел занести в массив список переменных, к которым присвоены свои значения. Я эксперементировал с динамической индикацией. Эту задачу я решил, щас такой вопрос, можно ли одной командой всем элементам массива присвоить одинаковое значение?

Например, есть

Код: Выделить всё

int Led[7]=
{
   0,   //Led_1
   0,   //Led_2
   0,   //Led_3
   0,   //Led_4
   0,   //Led_5
   0,   //Led_6
   0,   //Led_7
};


Можно ли потом, в коде, за одну строчку присвоить всем им 1?
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

Я так понял, Мikа, вы хотите сделать массив указателей на переменные? Или что?

Так-то, массив по определению - совокупность однотипных нумерованных переменных. Соответственно,

Код: Выделить всё

uint8_t array[5] = {1,2,3,4,5};
uint8_t a;

...


a=array[2]; // a <- 3

...

array[2]=8;

a=array[2]; // a <- 8

...


Но можно и массив указателей.

Код: Выделить всё

uint8_t* array[5];
uint8_t a=2;

...

array[3]=&a;

...

*(array[3])=5; // a <- 5
...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Вопросы по С/С++ (СИ)

Сообщение ploop »

Мikа писал(а):Можно ли потом, в коде, за одну строчку присвоить всем им 1?

Можно. Написать функцию

Код: Выделить всё

void clearArray(int value);

YS, там, кажется, далеко ещё до указателей :)
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение Мikа »

Я хотел именно переменных заключить в массив, и потом обращаться к этим переменным, прибавляя порядковый номер этой переменной в массиве.

С этим я уже разобрался :)

ploop в принципе прав :) Вернее не совсем, я знаю про указатели, что это такое, как их делать и т.п. Но на практике не применял :)

Теперь такой вопрос :) Хочу сгенерировать случайное число, от 0 до 4. Читал и на себе проверял, что подвешенная в воздухе ножка МК, настроенная на вход, постоянно меняет своё значение.
Я решил, что можно несколько раз брать значение этой ноги, складывать их несколько раз и в результате получать случайное число. Написал такой код:

Код: Выделить всё

for (i=0; i<5; i++)
    {
   C=PORTС; //Сохраняем значение всего порта в С
   C &= 0b00000001; //Стираем по маске все биты, кроме нулевого
   c = (C+c); //Прибавляем к с С
         }


Дальше идёт switch на разные с, но она всегда равна 0. В чём косяк?:)

З.Ы. Получилось генерить случайное число по таймеру :)

Код: Выделить всё

C=TCNT1;
         while (C>=10000)
         {
            C=(C-10000);
         }
         
         while (C>=1000)
         {
            C=(C-1000);
         }
         
         while (C>=100)
         {
            C=(C-100);
         }
         
         while (C>=10)
         {
            C=(C-10);
         }


Токо, наверное, можно взять младший байт числа, чтобы так много не считать... :)
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Вопросы по С/С++ (СИ)

Сообщение ploop »

Мikа писал(а):В чём косяк?:)

В этом:
Мikа писал(а):Читал и на себе проверял, что подвешенная в воздухе ножка МК, настроенная на вход, постоянно меняет своё значение.

Документация гарантирует, что ножка постоянно будет менять состояние? Вроде нет. Единственное, что известно, это то, что висящая в воздухе нога имеет неопределённое состояние. Ноль в эту неопределённость тоже входит.

Ищите алгоритмы генератора псевдослучайных чисел. Он очень прост.
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение BCluster »

Мikа писал(а):Можно ли потом, в коде, за одну строчку присвоить всем им 1?

Можно. Если тип данных в массиве однобайтный, то так:

Код: Выделить всё

memset(Led /*ptr*/, 1 /*value*/ ,7 /*Length*/)

Иначе надо писать чет свое, но это все просто в любом случае


Мikа писал(а):Хочу сгенерировать случайное число, от 0 до 4

Код: Выделить всё

#include <stdlib.h>
x=rand(4);
Ответить

Вернуться в «Разные вопросы по МК»