Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   нид хелп по С (https://forum.antichat.xyz/showthread.php?t=204520)

olesy 16.05.2010 22:42

нид хелп по С
 
народ оч нада срочно помогите с заданием :

1)в динамическом массиве лент определить количество лент, которые не содержат ни одной цифры

2)в целочисленного массиве каждый его элемент изменить, оставив значимыми лишь четыре младшие биты его двоичного представления (остальные битов нулевые)

sn0w 16.05.2010 22:51

каких лент? чето я не знаю че это такое

olesy 16.05.2010 23:12

ну ето перевод с укринского если без перевода то лента назыветса "стрічка", можна назвать "строки"

Ra$cal 16.05.2010 23:16

ай лолд. вы вообще на пары то ходили? из двух вариантов перевода (лента и строка) по программированию выбрать ленту... А вообще раздел специальный есть - повыше висит, прилепленный.

olesy 16.05.2010 23:19

если ето сюда то незаметил сразу

d_x 16.05.2010 23:40

Первое задание на чистом Си:

PHP код:

#include "stdio.h"
#include "string.h"

int main()
{
    
int count 5;
    
int good 0;
    
int ijlennum 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=0i<counti++)
    {
            
good 1;
            
            for(
j=0len strlen(arr[i]); lenj++)
            {
                    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:49

Второе задание на Си:

PHP код:

#include "stdio.h"

int main()
{
    
int arr[] = { 12310050010000123 };
    
int ilen;
    
    for(
0len sizeof(arr)/sizeof(int); leni++)
    {
          
arr[i] &= 0xF;
          
printf("%u\n"arr[i]);
    }
          
    
free(arr);
    return 
0;



olesy 17.05.2010 01:01

спасибо помог

greki_hoy 17.05.2010 03:53

Цитата:

Сообщение от d_x
Второе задание на Си:

PHP код:

#include "stdio.h"

int main()
{
    
int arr[] = { 12310050010000123 };
    
int ilen;
    
    for(
0len sizeof(arr)/sizeof(int); leni++)
    {
          
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 бита :)
в первом задании у Вас тоже ахтунг с типами :)

d_x 17.05.2010 10:41

За поправки спасибо. На си вообще никогда не программировал практически, поэтому руководствовался правилом "нет предупреждений и программа работает - хорошо".

Цитата:

освобождаете массив в стеке сильно
Почему-то подумалось, что это динамическая память.

Цитата:

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.


Время: 17:18