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

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

27.11.2017, 17:31. Показов 3698. Ответов 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,536
Записей в блоге: 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,536
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru