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

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

27.11.2017, 17:31. Показов 3862. Ответов 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,537
Записей в блоге: 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,537
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru