Установить 0 в пятом бите всех элементов массива целых чисел с четным индексом - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. Есть задание: Установить 0 в пятом бите всех элементов массива целых чисел с четным индексом и 1 в четвертом бите у всех нечетных элементов массива. Найти сумму элементов нового массива. Задача есть, однако есть одна проблема: Данные должны вводится из текстового документа на диске и выводится на экран и в новый файл. Имена обоих файлов нужно задавать в командной строке. Код программы с битами:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
 
int main()
{
    int a[10], s=0,i;
    srand(time(NULL));
    for(i=0;i<10;i++)
    {
        a[i]=1+rand()%100;
        printf("%d\n", a[i]);
    }
    printf("===================\n");
    for(i=0;i<10;i++)
    {
        if(i%2)
            a[i] = a[i]|=0<<4;
        else
            a[i] = a[i]|=1<<3;
        printf("%d\n", a[i]);
        s+=a[i];
    }
    printf("===================\n");
    printf("Sum: %d\n", s);
    _getch();
    return 0;
}
Числа в файле начинаются с новой строки. Записывать их думал в динамический массив после с выполнением самой программы и выводом в новый файл и на экран. Однако реализовать это не вышло. Если кто поможет - буду очень благодарен.
Попробовал реализовать построчное чтение из файла - однако вместо строк выводит соврешенно другие цифры.
#include <stdio.h>
#include <string.h>
 
int main()
{
    int *mas = malloc( sizeof(int) );
    int i, n;
    FILE* f;
    n=0;
    if(f = fopen("name.txt", "r")) 
    {
        while(!feof(f))
        {
            fscanf(f,"%d", &i);
            n++;
        }
        fclose(f);
    } 
    else 
    {
        printf("Error\n");
        return 1;
    }
    if(f = fopen("name.txt", "w")) 
    {
        for(i = 0; i < n-1; i++)
            fprintf(f, "%d\n",mas[i]);
        fclose(f);
    } 
    else 
    {
        printf("Error\n");
        return 1;
    }
    for(i=0;i<n-1;i++)
        printf("%d\n", mas[i]);
    printf("Press any key to continue\n");
    _getch();
    return 0;
}

Решение задачи: «Установить 0 в пятом бите всех элементов массива целых чисел с четным индексом»

textual
Листинг программы
a[i] = a[i]|=0<<4;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.615 из 5
Похожие ответы