Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29

Записать в файл все нечетные числа из заданного массива

27.11.2017, 17:31. Показов 3691. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать файл f, содержащий двумерный массив (3х3) целых чисел. Записать в файл g все нечетные числа из этого массива.
Подскажите пожалуйста как можно записать массив в файл f и считать этот массив для обработки одной командой? С помощью функции? + не получается сделать обработку. Выводит последовательности из этих чисел 20302042030204, когда в файле:
252
769
426
Как сделать чтоб считал каждую строчку? и обработал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "stdafx.h"
#include <iostream> 
#include <stdio.h>
#include <fstream> 
#include <time.h>
using namespace std;
 
void file1(int M)
{
    FILE *f; 
        f = fopen("input.txt", "wb"); //открытие файла 
    fwrite(&M, sizeof(int), 1, f);
    fclose(f); 
};
void file2(int *buf)
{
    FILE *g;
    g = fopen("output.txt", "wb"); //открыть для записи во второй файл
    fwrite(&buf, sizeof(int), 1, g); // команда для записи
    fclose(g);
};
 
int _tmain(int argc, _TCHAR* argv[])
{     srand (time(NULL)); 
       const int n=9; int buf[n+1]; buf[n]=0;
     
    int M[3][3]; 
    FILE *f; 
        f = fopen("input.txt", "wb"); //открытие файла для записи бинарного файла
    
    for(int i=0; i<3; i++)
      { for(int j=0;j<3;j++) 
        { 
            M[i][j]=rand()%10; 
            file1( M[i][j]);
                fprintf(f,"%d",M[i][j]); // вывод десятичных целых чисел
        } 
             fprintf(f,"\n"); 
       } 
    fclose(f);
    FILE *g;
    g = fopen("output.txt", "wb"); 
    for(int i=0; i<n; i++){
    for(int j=0;j<3;j++){
        if (M[i][j]%2==1)  fread(&buf, sizeof(int), 1, f); 
            fprintf(g,"%d",buf);
        file2(buf);
    }
    }
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2017, 17:31
Ответы с готовыми решениями:

В массив B записать все четные числа из заданного целочисленного одномерного массива A, а в массив С - нечетные
Заполнить массивы B и C, переписав в массив B все четные числа из заданного целочисленного одномерного массива A, а в массив C – все...

Записать в файл g все числа из заданного массива, кратные 3; найти ошибки в коде
Задача следующая: Создать файл f, содержащий одномерный массив из 10 целых чисел. Записать в файл g все числа из этого массива, кратные 3....

Типизированные файлы. Записать в файл C все четные числа файла F, а в файл N - все нечетные
еще одна задачка!!код есть,но что то не работает она помогите! вот задание: Сформировать файл F, компонентами которого являются целые...

45
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
27.11.2017, 17:44
Если бинарный, почему fprintf() используешь? Только fwrite().
Может, просто текстовый нужен?
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
27.11.2017, 18:28  [ТС]
nmcf, использую просто чтобы в файле отражалось не из одной строки, а нормальной 3 на 3 матрица
и там просто везде txt нужно убрать) забыла)
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
27.11.2017, 19:28
Ты понимаешь, что такое бинарный файл? Там нет никаких строк. Просто набор байтов.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
27.11.2017, 19:48
C
1
2
3
4
5
6
7
f = fopen("1.bin", "wb");
fwrite(&M, sizeof(M), 1, f);
fclose(f);
 
f = fopen("1.bin", "rb");
fread(&M, sizeof(M), 1, f);
fclose(f);
Оно? Несмотря на кажущуюся простоту этого способа, тут есть проблемы и недостатки.
Если
Цитата Сообщение от kristinka_15 Посмотреть сообщение
Записать в файл g все нечетные числа из этого массива.
то сперва пишешь их в массив, а потом так же fwrite, только вместо sizeof реальное количество элементов массива и вместо 1 sizeof(int).
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
27.11.2017, 20:00  [ТС]
shmkv, то есть никакие fprintf тут не нужны?
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
27.11.2017, 20:06
Цитата Сообщение от kristinka_15 Посмотреть сообщение
shmkv, то есть никакие fprintf тут не нужны?
Если хочешь записывать бинарно, то не нужны.
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
28.11.2017, 15:50  [ТС]
shmkv, не подскажите что тут не так? в обработке скорее всего
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
int _tmain(int argc, _TCHAR* argv[])
{
    srand (time(NULL)); 
    const int n=9; int buf[n]; //buf[n]=0;
    int M[3][3]; 
    FILE *f; 
    f = fopen("input", "wb"); //открытие файла для записи бинарного файла
    for(int i=0; i<3; i++)
       for(int j=0;j<3;j++) 
        { 
            M[i][j]=rand()%10; 
            fwrite(&M, sizeof(int), 1, f);
        } 
          
        
        for (int i = 0; i < 3; i++)
     { 
         for (int j = 0; j < 3; j++)
            {       cout.width(5);
                 cout << M[i][j] << " ";
            }
                 cout << endl;
    }
 
    fclose(f);// закрытие после записи   
      
    FILE *g;
    g = fopen("output", "wb"); // открыть для записи
    f = fopen("input", "rb"); // открыть для чтения
    fread(&M, sizeof(int), 1, f); 
    for(int i=0; i<3; i++){
    for(int j=0;j<3;j++){
        if (M[i][j]%2==1)  fwrite(&buf, sizeof(int), 1, g); //fread(&buf, sizeof(int), 1, f); 
        cout << buf << " " ;
        
    }
    }
        fclose(g);
    cout << endl;
    system("pause");
    return 0;
}
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.11.2017, 15:57
Цитата Сообщение от kristinka_15 Посмотреть сообщение
fwrite(&M, sizeof(int), 1, f);
C++
1
fwrite(&(M[i][j]), sizeof(int), 1, f);
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
28.11.2017, 15:58  [ТС]
Kuzia domovenok, до этого было так написано...пока что суть не изменилась(
Или это про последний цикл? где обработка?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.11.2017, 16:22
суть именно в этом и это надо писать везде, где запись в файл, п.е. в обоих местах.
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
28.11.2017, 16:31  [ТС]
Kuzia domovenok, суть в том что написано так, но он выводит 9 чисел 0035F8D8 , вместо одних нечетных чисел из массива 3 на 3
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.11.2017, 16:34
покажи снова прогу со всеми изменениями.
0
 Аватар для Крюгер
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
28.11.2017, 16:38
kristinka_15, у вас файл точно бинарный? Почему вы хотите писать в него как в текстовый? Вот ссыль, здесь все рассказано как надо с ними работать.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
28.11.2017, 16:48
Цитата Сообщение от kristinka_15 Посмотреть сообщение
не подскажите что тут не так?
Все. Вопрос был
Цитата Сообщение от kristinka_15 Посмотреть сообщение
как можно записать массив в файл f и считать этот массив для обработки одной командой?
А ты записываешь в цикле всегда первый элемент.

Добавлено через 3 минуты
C
1
2
3
4
5
6
7
8
9
10
11
fwrite(&M, sizeof(M), 1, f);
...
fread(&M, sizeof(M), 1, f); 
...
int result[9]
int pos = 0;
for(int i=0; i<3; i++)
    for(int j=0;j<3;j++)
        if (M[i][j]%2==1)  
                result[pos++] = M[i][j];
fwrite(&result, pos, sizeof(*result), f);
1
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
28.11.2017, 17:48  [ТС]
shmkv, и вывод result? чтоб проверить)
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
28.11.2017, 18:04
Цитата Сообщение от kristinka_15 Посмотреть сообщение
и вывод result?
И в чем проблема?
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
28.11.2017, 20:08  [ТС]
shmkv, просто если написать cout << result он не срабатывает...а иначе что - то как - то не доходит как написать

Добавлено через 2 часа 1 минуту
shmkv, да и и иначе не иначе он выводит все равно 9 бредовых чисел
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.11.2017, 20:10
где последняя версия программы?
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
28.11.2017, 20:13  [ТС]
Kuzia domovenok,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
int _tmain(int argc, _TCHAR* argv[])
{
    srand (time(NULL)); 
    int buf[9];
    int M[3][3]; 
    FILE *f; 
    f = fopen("input", "wb"); //открытие файла для записи бинарного файла
    for(int i=0; i<3; i++)
      { for(int j=0;j<3;j++) 
        { 
            M[i][j]=rand()%10; 
            fwrite(&M[i][j], sizeof(int), 1, f);
       } 
        for (int i = 0; i < 3; i++)
     { 
         for (int j = 0; j < 3; j++)
            {    cout.width(5);
                 cout << M[i][j] << " ";
            }
                 cout << endl;
    }
 
    fclose(f);// закрытие после записи   
      
    FILE *g;
    g = fopen("output", "wb"); // открыть для записи
    f = fopen("input", "rb"); // открыть для чтения
    int k = 0;fread(&M, sizeof(M), 1, f); 
    for(int i=0; i<3; i++){
    for(int j=0;j<3;j++){   
        if (M[i][j]%2==1)   buf[k++] = M[i][j];
        fwrite(&buf, k, sizeof(*buf), g); 
        cout << buf << " " ;
        
    }
    }
    fclose(g);
    cout << endl;
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2017, 20:13
Помогаю со студенческими работами здесь

Записать в файл - g все четные числа файла - f, а в файл - h все нечетные числа
№2 Программирование и работа с файлами: Дан файл - f, компоненты которого являются целыми числами. Записать в файл - g все четные числа...

Записать в файл B все четные числа из файла A, а файл C все нечетные числа
Записать в файл B все четные числа из файла A, а файл C все нечетные числа. Почему не записывает результат в файлы B и С? static...

Записать в файл B все четные числа из файла A, а файл C все нечетные числа
Дан файл А, сосотоящий из целых чисел. Записать в файл B все четные числа из файла A, а файл C все нечетные числа

Дан файл F, записать в файл G чётные числа, а в файл H все нечётные числа
Дан файл F, содержащий целые числа. Записать в файл G все чётные числа из файла F, а в файл H все нечётные числа. Буду благодарен за...

Записать в файл g все чётные числа файла f, а в файл h все нечётные
Записать в файл g все чётные числа файла f, а в файл h все нечётные. Порядок следования чисел сохраняется.C++


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru