Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2012, 20:24   #1
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию Функция смены местами первого и последнего елемента двумерного масива.С++.

Что здесь не верно?почему функция не работает?
Если не трудно укажите мою ошибку.
И еще нужна функция которая считает количество елементов ниже нуля.Я ее написал но не уверен что правильно,особенно условие if(a[i][j] < 0) ,как должно быть правильно?

Основная програма:
Код:
#include <iostream>
#include "vvid.h"
#include "vuvid.h"


using namespace std;

void vvid(int, int, int**);
void vivid(int, int, int**);
void zmina(int, int, int**);
int vid_elem(int, int, int**);
int main()

{
	int n, m, i;
	cout << "How many string's?:";
	cin>> n;
	cout << "How many column's?:";
	cin>> m;
	int **a; a = new int *[n];
	for(i=0; i<n; i++)
	a[i] = new int[m];
	vvid(n, m ,a);
	cout << "Your matrix:" << endl;
	vivid(n, m, a);
	cout << "Your matrix after transformation:" << endl;

    cout << "Your array have [" << vid_elem(n, m ,a) << "] negative element's!";
	cin.get();
	cin.get();
	return 0;
}

Функция смены:
Код:
void zmina(int n, int m, int**a)
{
    int i, j, temp;
    for(i=0; i<n; i++)
		for(j=0; j<m; j++)
        {
            temp = a[1];
            a[1] = a[n-1];
            a[n-1] = temp;
        }
}
Функция елементов ниже нуля:
Код:
int vid_elem(int n, int m, int **a)
{
    int i, j, count;
    for(i=0; i<n; i++)
		for(j=0; j<m; j++)
        {
            if(a[i][j] < 0)
            {
            count++;
            }
        }
    return count;
}

Последний раз редактировалось DIQUON; 17.12.2012 в 20:27.
DIQUON вне форума Ответить с цитированием
Старый 17.12.2012, 20:28   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Сначала определитесь, что Вам нужно:
двумерного массива - в коде одномерный
первого и последнего - в коде меняются несколько в цикле (или меняются указатели на одномерные массивы - не могу по чужому коду сказать точно)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 17.12.2012, 20:32   #3
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Где тут код одномерного?
DIQUON вне форума Ответить с цитированием
Старый 17.12.2012, 20:55   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

temp = a[1] - обращение как к одномерному массиву (получим указатель на массив, т.к. int **a; a = new int *[n]; for(i=0; i<n; i++) a[i] = new int[m]; a - массив указателей на массивы)
Код:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
 
using namespace std;
 
void vvid(int, int, int**);
void vivid(int, int, int**);
void zmina(int, int, int**);
int vid_elem(int, int, int**);
int main()
 
{
    int n, m, i;
        cout << "How many string's?:";
        cin>> n;
        cout << "How many column's?:";
        cin>> m;
        int **a;
    a = new int *[n];
        for(i=0; i<n; i++)
            a[i] = new int[m];
        vvid(n, m ,a);
        cout << "Your matrix:" << endl;
        vivid(n, m, a);
    zmina(n, m, a);
        cout << "Your matrix after transformation:" << endl;
    vivid(n, m, a);
    cout << "Your array have [" << vid_elem(n, m ,a) << "] negative element's!";
        cin.get();
        cin.get();
        return 0;
}
 
void vvid(int n, int m, int**a)
{
    int i, j;
    for(i=0; i<n; i++)
        for(j=0; j<m; j++) {
            a[i][j] = rand()%100 - 50;
        }
}
 
void vivid(int n, int m, int**a)
{
    int i, j;
    for(i=0; i<n; i++) {
        for(j=0; j<m; j++) {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
}
 
void zmina(int n, int m, int**a)
{
    int temp = a[0][0];
    a[0][0] = a[n-1][m-1];
    a[n-1][m-1] = temp;
 
}
 
int vid_elem(int n, int m, int **a)
{
    int i, j, count = 0;
    for(i=0; i<n; i++)
        for(j=0; j<m; j++) {
            count += a[i][j] < 0;
        }
    return count;
}
Я так пока не понял, что Вы хотите поменять.
count = 0 - обязательно инициализировать начальным значением
count += a[i][j] < 0; - работает также, как и прибавление по условию (по крайней мере, считает правильно).

Пожалуйста. Не забывайте о кнопке Правка, а то можно получить штраф.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 17.12.2012 в 21:21.
BDA вне форума Ответить с цитированием
Старый 17.12.2012, 21:04   #5
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Хочу чтобы было так:
Введите ваши елементы:
4 5 6
7 9 8
Масив после трансформации:
8 5 6
7 9 4
Вот так должно быть,но не получается(
DIQUON вне форума Ответить с цитированием
Старый 17.12.2012, 21:07   #6
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Оу,понял,огромное вам спасибо!))
DIQUON вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вот код одномерного масива.Нужно чтобы он добавлял на начало 3 елемента со значением +2.Язык С или С++ ну или С Шарп. DIQUON Помощь студентам 9 09.11.2012 18:43
Найти в одномерном массиве индексы первого и последнего отрицательных элементов(с++) Борис. Помощь студентам 3 29.02.2012 20:49
Удалить прогу от первого до последнего байта Ksardas13 Общие вопросы C/C++ 1 08.04.2011 09:37
Перестановка в строке первого и последнего слова.. mihail0608 Общие вопросы C/C++ 16 08.12.2009 16:25
СОХРАНИЯ В ФАЙЛ ДВУМЕРНОГО ДИНАМИЧЕСКОГО МАСИВА!!!! _FL@ER_ Помощь студентам 2 23.06.2007 16:31