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

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

27.11.2017, 17:31. Показов 3917. Ответов 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
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,538
Записей в блоге: 1
28.11.2017, 20:17
Студворк — интернет-сервис помощи студентам
C++
1
2
        fwrite(buf, k, sizeof(*buf), g); 
        cout << buf[i] << " " ;
убрать в конец
не забывать [i]
1
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
28.11.2017, 20:38  [ТС]
Kuzia domovenok, если фраза "убрать в конец " означает убрать за после скобки то выводит :
9 9 2
9 1 5
8 9 0
и нечетные у него выглядят так: 9 2361 9

а если просто в конце там где и if, то :
0 9 0
8 0 6
2 1 7
и нечетные числа: -858993460 и так еще 8 раз
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
28.11.2017, 20:51
kristinka_15, судя по коду, ты не читаешь, что я пишу.
1
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
28.11.2017, 21:47  [ТС]
shmkv, читаю... возможно просто не допоняла

Добавлено через 39 минут
shmkv, вроде всё также написала, только переменные названы иначе)
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
29.11.2017, 12:41
Цитата Сообщение от kristinka_15 Посмотреть сообщение
shmkv, вроде всё также написала
Нет, все не так.
1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,538
Записей в блоге: 1
29.11.2017, 13:09
у него, т.е. у shmkv, fwrite стоит после всех циклов
у него, т.е. у kristinka_15, fwrite внутри двух циклов for, а должен быть после строки 36
1
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
29.11.2017, 16:34  [ТС]
Kuzia domovenok, изменила поставила после но абсолютно ничего не изменилось) как выводил ерунду так и выводит)
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
29.11.2017, 16:51
kristinka_15, вы изучаете программирование методом "тыка"?
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
29.11.2017, 16:57  [ТС]
shmkv, методом пытаюсь понять, что не так)
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
29.11.2017, 19:44
Цитата Сообщение от kristinka_15 Посмотреть сообщение
shmkv, методом пытаюсь понять, что не так)
Я это вполне однозначно описал, тебе просто не хватает опыта программирования в целом это понять. Я могу написать весь код целиком, но ты все равно не осознаешь как он работает. Мне не очень хочется это делать, т. к. меня печалит, когда люди приходят сюда за готовым решением. И если уж ты используешь cout, то логичнее тогда для файлов использовать fstream.
Цитата Сообщение от kristinka_15 Посмотреть сообщение
изменила поставила после но абсолютно ничего не изменилось) как выводил ерунду так и выводит)
показывай
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
29.11.2017, 21:04  [ТС]
shmkv, вы меня конечно извините, но я только учусь)
я не прошу писать за меня весь код, мне это не нужно, мне всего лишь маленький кусочек нужно доделать, потому что слегка не получается...
не все такие умные и так легко схватывают... некоторым нужны примеры нормальные и прочее..
и у меня получиилось сделать немного другим способом, и кстати то, что у вас в fread написано, оно было написано не правильно...из-за этого массив не правильно читался) а так спасибо, что пытались помочь)
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
29.11.2017, 22:06
Цитата Сообщение от kristinka_15 Посмотреть сообщение
что у вас в fread написано, оно было написано не правильно
В каком месте?

Добавлено через 24 минуты
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
#include <fstream>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <cstdlib>
 
int main()
{
    const int n = 3;
    int matrix[n][n];
    int read_matrix[n][n];
    std::cout << "Write matrix:" << std::endl;
    for (auto& row : matrix)
    {
        std::generate_n(row, n, []{ return std::rand() % 10; });
        std::copy_n(row, n, std::ostream_iterator<int>(std::cout, " "));
        std::cout << std::endl;
    }
    std::ofstream("in.bin", std::ios::binary).write(reinterpret_cast<char*>(&matrix), sizeof(matrix));
    std::cout << "Read matrix:" << std::endl;
    std::ifstream("in.bin", std::ios::binary).read(reinterpret_cast<char*>(&read_matrix), sizeof(read_matrix));
    int result[n * n];
    int pos = 0;
    for (const auto& row : read_matrix)
    {
        for (const auto& value : row)
        {
            if ((value % 2) != 0)
                result[pos++] = value;
            std::cout << value << ' ';
        }
        std::cout << std::endl;
    }
    std::cout << "Result array:" << std::endl;
    std::copy_n(result, pos, std::ostream_iterator<int>(std::cout, " "));
    std::ofstream("out.bin", std::ios::binary).write(reinterpret_cast<char*>(&result), pos * sizeof(*result));
}
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
01.12.2017, 22:11  [ТС]
shmkv, я таких команд знать не знаю, только слышала максимум, читала о них но ничего не поняла, но в том, что вы писали давно была ошибка
Цитата Сообщение от shmkv Посмотреть сообщение
fread(&M, sizeof(M), 1, f);
здесь была ошибка, я написала также он читал не верно, первый столбик делал по диагонали остальные пустые ячейки заполнял ерундой и поэтому не работала правильно обработка)
я изменила, и всё нормально стало работать и работает))
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
01.12.2017, 23:26
Цитата Сообщение от kristinka_15 Посмотреть сообщение
я таких команд знать не знаю, только слышала максимум, читала о них но ничего не поняла, но в том, что вы писали давно была ошибка
Цитата Сообщение от shmkv Посмотреть сообщение
Я могу написать весь код целиком, но ты все равно не осознаешь как он работает.
Цитата Сообщение от kristinka_15 Посмотреть сообщение
здесь была ошибка
Здесь нет ошибки, просто ты не в то место этот код вставила.
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
03.12.2017, 11:15  [ТС]
shmkv, а вы случайно не знаете какое условие нужно написать чтоб проверить пользователь если введет больше чем 3 на 3 матрицу или меньше...? ну и там вывод об ошибке...
но вот именно само условие
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
03.12.2017, 15:37
Цитата Сообщение от kristinka_15 Посмотреть сообщение
а вы случайно не знаете какое условие нужно написать чтоб проверить пользователь если введет больше чем 3 на 3 матрицу или меньше...?
Покажи свой код. Если у тебя 9 итераций ввода элементов матрицы, то больше он ввести никак не может. Меньше может, если прервет ввод, это довольно просто проверить:
C++
1
2
3
4
5
if ( !(std::cin >> m[i][j]) )
{
    std::cout << "Error" << std::endl;
    return 0;
}
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
03.12.2017, 16:36  [ТС]
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
void vvod( FILE *f, int M[3][3]);
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "rus"); 
    int M[3][3]; 
    FILE *f = NULL;
    FILE *g = NULL;
    cout << "Ввод матрицы (3x3):" << endl;
    try 
    {
        vvod(f, M);
    }
    catch (char *err) 
    {
        cout << "Ошибка: " << err << endl;
    }
    system("pause");
    return 0;
 
}
 
void vvod(FILE *f, int M[3][3]) 
{
    f = fopen("input", "wb");
 
        for(int i=0; i<3; i++)
            {
       for(int j=0;j<3;j++) 
        { //if (M[i][j]>3) {throw "Выход за границы массива";}
            cin >> M[i][j];     
            fwrite(&M, sizeof(int), 1, f);
            fprintf(f,"%d",M[i][j]); 
        } 
            fprintf(f,"\n");
            
       } 
        
        fclose(f);
        cout << endl;
}
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
03.12.2017, 18:31
kristinka_15, ну и в чем проблема? Проверя cin как я показал.
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 29
03.12.2017, 20:44  [ТС]
shmkv, он дает вводить два раза 3 на 3...)) а не ошибку выдает))
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
04.12.2017, 02:24
Цитата Сообщение от kristinka_15 Посмотреть сообщение
shmkv, он дает вводить два раза 3 на 3...))
Можешь максимально подробно расписать, какое поведение ты ожидаешь? У тебя свой цикл от 0 до 3 и в нем еще один от 0 до 3, тогда откуда может быть выход за границу массива?
Цитата Сообщение от kristinka_15 Посмотреть сообщение
if (M[i][j]>3)
Тут ты проверяешь вообще вводимое значение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.12.2017, 02:24

Записать в файл - 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++


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru