Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

16.05.2010, 22:42
|
|
Новичок
Регистрация: 16.05.2010
Сообщений: 9
Провел на форуме: 18559
Репутация:
0
|
|
нид хелп по С
народ оч нада срочно помогите с заданием :
1)в динамическом массиве лент определить количество лент, которые не содержат ни одной цифры
2)в целочисленного массиве каждый его элемент изменить, оставив значимыми лишь четыре младшие биты его двоичного представления (остальные битов нулевые)
|
|
|

16.05.2010, 22:51
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме: 1290766
Репутация:
1236
|
|
каких лент? чето я не знаю че это такое
__________________
 
snow white world wide
|
|
|

16.05.2010, 23:12
|
|
Новичок
Регистрация: 16.05.2010
Сообщений: 9
Провел на форуме: 18559
Репутация:
0
|
|
ну ето перевод с укринского если без перевода то лента назыветса "стрічка", можна назвать "строки"
|
|
|

16.05.2010, 23:16
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
ай лолд. вы вообще на пары то ходили? из двух вариантов перевода (лента и строка) по программированию выбрать ленту... А вообще раздел специальный есть - повыше висит, прилепленный.
|
|
|

16.05.2010, 23:19
|
|
Новичок
Регистрация: 16.05.2010
Сообщений: 9
Провел на форуме: 18559
Репутация:
0
|
|
если ето сюда то незаметил сразу
|
|
|

16.05.2010, 23:40
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
Первое задание на чистом Си:
PHP код:
#include "stdio.h"
#include "string.h"
int main()
{
int count = 5;
int good = 0;
int i, j, len, num = 0;
char** arr = malloc(sizeof(char*) * count);
arr[0] = "string 1";
arr[1] = "string 2";
arr[2] = "string without numbers";
arr[3] = "also, no numbers";
arr[4] = "str 5";
printf("Strings that do not contain any numbers:\n");
for(i=0; i<count; i++)
{
good = 1;
for(j=0, len = strlen(arr[i]); j < len; j++)
{
if(arr[i][j] >= 48 && arr[i][j] <= 57)
{
good = 0;
break;
}
}
if(good)
{
num++;
printf("\n%s", arr[i]);
}
}
printf("\n\nTotal number: %u", num);
free(arr);
return 0;
}
Последний раз редактировалось d_x; 16.05.2010 в 23:56..
|
|
|

16.05.2010, 23:49
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
Второе задание на Си:
PHP код:
#include "stdio.h"
int main()
{
int arr[] = { 1, 2, 3, 100, 500, 10000, 123 };
int i, len;
for(i = 0, len = sizeof(arr)/sizeof(int); i < len; i++)
{
arr[i] &= 0xF;
printf("%u\n", arr[i]);
}
free(arr);
return 0;
}
|
|
|

17.05.2010, 01:01
|
|
Новичок
Регистрация: 16.05.2010
Сообщений: 9
Провел на форуме: 18559
Репутация:
0
|
|
спасибо помог
|
|
|

17.05.2010, 03:53
|
|
Познающий
Регистрация: 04.03.2010
Сообщений: 32
Провел на форуме: 32525
Репутация:
23
|
|
Сообщение от d_x
Второе задание на Си:
PHP код:
#include "stdio.h"
int main()
{
int arr[] = { 1, 2, 3, 100, 500, 10000, 123 };
int i, len;
for(i = 0, len = sizeof(arr)/sizeof(int); i < len; i++)
{
arr[i] &= 0xF;
printf("%u\n", arr[i]);
}
free(arr);
return 0;
}
освобождаете массив в стеке сильно 
sizeof(arr)/sizeof(int) плохо
sizeof(arr)/sizeof(arr[0]) хорошо
sizeof(arr)/sizeof(arr[0]) вернет size_t 32 битное значение в x32 системе и 64 битное в x64 но из за присваивания его переменной len типа int
потеряете 32 старших бита в x64 системе не сможете обрабатывать большие массивы
так как int и в x32 и в x64 32 бита в отличии от size_t
результата операции sizeof которая на x32 32 бита а на x64 64 бита 
в первом задании у Вас тоже ахтунг с типами 
Последний раз редактировалось greki_hoy; 17.05.2010 в 05:27..
|
|
|

17.05.2010, 10:41
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
За поправки спасибо. На си вообще никогда не программировал практически, поэтому руководствовался правилом "нет предупреждений и программа работает - хорошо".
освобождаете массив в стеке сильно
Почему-то подумалось, что это динамическая память.
sizeof(arr)/sizeof(int) плохо
sizeof(arr)/sizeof(arr[0]) хорошо
sizeof(arr)/sizeof(arr[0]) вернет size_t 32 битное значение в x32 системе и 64 битное в x64 но из за присваивания его переменной len типа int
потеряете 32 старших бита в x64 системе не сможете обрабатывать большие массивы
так как int и в x32 и в x64 32 бита в отличии от size_t
А в чем тут проблема, если int у нас в любой системе 32 бита, судя по Вашим словам, то как sizeof(arr[0]) может вернуть 64 бита, ведь arr - массив int'ов?
У меня система x64, sizeof(arr[0]) возвращает 4, и sizeof(int) - также 4, не вижу тут проблем. Попробовал в VS2008 и gcc.
Последний раз редактировалось d_x; 17.05.2010 в 10:51..
|
|
|
|
 |
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
ай нид хелп
|
A_n_d_r_e_i |
Болталка |
3 |
25.02.2010 11:45 |
|
Нид хелп
|
~Dala$$~ |
PHP, PERL, MySQL, JavaScript |
11 |
28.01.2007 21:04 |
|
Ай нид хелп!
|
Grinder |
Болталка |
12 |
22.06.2006 05:51 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|