Форум программистов, компьютерный форум CyberForum.ru

Соседи и двумерный массив из файла - C++

Восстановить пароль Регистрация
 
HomerSi
0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 7
26.05.2016, 05:03     Соседи и двумерный массив из файла #1
Здравствуйте, не могу переделать программу под двумерный массив, чтобы она считывала с файла весь массив и считала соседей с верху, снизу и по бокам. Вот само задание "Дан текстовый файл с числами. Вычислить количество соседей с одинаковым знаком." Помогите пожалуйста доработать
Файл function.h
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
#include <iostream>
#include <fstream>
using namespace std;
//Функция readNumbers, принимает в качестве параметра массив а, который будет заполнять
int readNumbers(int *a)
{
    int vsego = 0;//Обнуляем счетчик элементов
    //Открываем поток чтения из файла
    fstream f;
    f.open("1.txt", ios::in);
    //До конца файла записываем числа в массив а, увеличиваем всего
    while (!f.eof())
    {
        f >> a[vsego];
        vsego ++;
    }
    //Закрываем поток, функция возвращает всего
    f.close();
    return vsego;
}
//Функция calcSosedi, принимает в качестве параметра массив а и количество элементов всего
int calcSosedi(int *a, int vsego)
{
    int sosedi = 0, i;
    cout << endl << endl;
    for (i = 0; i < vsego - 1; i++){
        if ((a[i]*a[i+1]) > 0){
       cout << "Chisla " << a[i] << " i " << a[i+1] << " imeyt odin znak\n";
            sosedi++;
        }
    }
    return sosedi;//Возвращаем подсчитанное количество соседей
}
//Функция vyvod
void vyvod (int *a, int vsego){
    cout << "V faile bili chisla:\n";
    //В цикле выводим элементы на экран
    for (int i = 0; i < vsego; i++){
        cout << a[i] << " ";
    }
}
Файл Sosedi.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include "function.h" //подключаем файл с функциями
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    //Создаем массив из 100 элементов, переменную Соседи (сколько равнозначных соседей), переменную всего (сколько всего элементов)
    int a[100];
    int sosedi;
    int vsego = readNumbers(a);
    vyvod(a, vsego); //Вызываем функцию vyvod
    sosedi = calcSosedi(a, vsego); 
    cout << "\n\nVsego " << sosedi << " par chisel imeyt odinakovii znak";
    system ("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2016, 05:03     Соседи и двумерный массив из файла
Посмотрите здесь:

C++ двумерный массив из файла. С++
C++ Чтение в двумерный массив из файла
Ввод данных из файла в двумерный массив C++
C++ Считать текст из файла в двумерный массив
Записать текст из файла в двумерный массив C++
Добавление данных в двумерный массив из файла C++
Считывание из файла в двумерный массив C++
C++ Чтение CSV-файла в двумерный массив

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Remuless
25 / 25 / 12
Регистрация: 07.06.2015
Сообщений: 125
26.05.2016, 11:42     Соседи и двумерный массив из файла #2
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
int calcSosedi(int **a, int N)
{
    int sosedi = 0;
    //cout << endl << endl;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            if (i > 0)
            {
                if (a[i][j] * a[i-1][j] > 0)//сосед сверху
                    sosedi++;
            }
            if (i < N-1)
            {
                if (a[i][j] * a[i+1][j] > 0)//сосед снизу
                    sosedi++;
            }
            if (j > 0)
            {
                if (a[i][j] * a[i][j-1] > 0)//сосед слева
                    sosedi++;
            }
            if (j < N-1)
            {
                if (a[i][j] * a[i][j+1] > 0)//сосед справа
                    sosedi++;
            }
        }
    }
    return sosedi;//Возвращаем подсчитанное количество соседей
}
//Функция vyvod
void vyvod (int **a, int N)
{
    cout << "V faile bili chisla:\n";
    //В цикле выводим элементы на экран
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
}
я бы как-то так попробовал
надеюсь остальное подправите, чтобы массив был двумерным
Yandex
Объявления
26.05.2016, 11:42     Соседи и двумерный массив из файла
Ответ Создать тему
Опции темы

Текущее время: 15:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru