Установить 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д