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

Сдвиг элементов в столбце на две позиции вниз по кругу - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Цикл: Вычислить значение выражение http://www.cyberforum.ru/cpp-beginners/thread1089190.html
y=45x/(5!-44x/(4!-43/(3!-42x/(2!-4x/(1-x))))) С решением и цикл с предусловием плз
C++ Отпечатать расстояния от начала координат для тех точек,которые принадлежат кругу с заданным радиусом, и число таких точек. 1)Значение f(k) заключено между значениями t1= -a - √(b+m), t2=√(a+b+m),но не равно нулю. 2)Дана матрица из 2 столбцов и 10 строк.Первый элемент каждой строки представляет абсциссу,второй ординату из 10 точек плоскости.Отпечатать расстояния от начала координат для тех точек,которые принадлежат кругу с заданным радиусом, и число таких точек. http://www.cyberforum.ru/cpp-beginners/thread1089160.html
Замена первой строки на последнюю C++
Вот моя рабочая программка: #include "stdafx.h" #include <iostream> #include <time.h> using namespace std; int main() { int j, k, N, M, a, b; srand(time(NULL)); cout << "(N x M), N="; cin >> N; // Вводим размерность
C++ нарисовать треугольник
#include<iostram> using namespace std; void main(){ int x; cin >>x; if (x %2 ==0) x++; for ( int i=0; i<x/2; i++){ for ( int j=0;j<x; j++){
C++ Русские символы в консоли выводятся нормально, латиница - нет http://www.cyberforum.ru/cpp-beginners/thread1089155.html
Добрый день. Подскажите пожалуйста, столкнулся с следующей проблемой, когда вывожу в консоль русские символы все выводится нормально, пока не начинаю выводить переменные. К примеру конструкция: cout<<name; Выведет на экран иероглифы, в то же время когда строка: cout<<"русский текст"; Выведет вполне читаемые русские символы. Заранее спасибо за помощь.
C++ Добавление строки в массив Добрый день! Поставил себе задачу написать класс для работы со строками (куча разнообразных методов). В данный момент застрял над реализацией метода для добавления строк в массив, код принял следующий вид: #include <iostream> using namespace std; //словарь class stroka { public: подробнее

Показать сообщение отдельно
happin3ss
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 6
04.02.2014, 17:23     Сдвиг элементов в столбце на две позиции вниз по кругу
Добрый день уважаемые программисты.
Начал изучать С++ очень и очень недавно. И вот возникла такая проблема. Написал программу, которая сдвигает элементы в каждом столбце матрицы на две позиции вниз по кругу, если количество элементов расположенных между первыми минимумом или максимумом в этих столбцах больше 1 (в противном случае в соответствующих столбцах все остается без изменений). Вроде все замечательно, все считает верно, но есть один недостаток: выводится матрица повернутой на 90 градусов (столбцы являются строками, строки - столбцами). Сделано это потому, что я не знаю как написать код для сдвига сверху вниз (уж поймите правильно - новичок), и вышел из этой ситуации таким образом (сдвиг происходит как-бы строки, которая является столбцом, вправо).
Вот сам код:
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "windows.h"
#include "stdio.h"
#include "math.h"
 
#define MaxNumber 65535
#define N 4//Кол-во строк N
#define M 5//Кол-во элементов M
#define EditNumber 2//Насколько смещаем массив в право(EditNumber>0)
 
void RotateRigth(int *oldmass, int L, int k){
    int *newmass=(int *)malloc(L*sizeof(int));
    int *mass=(int*)oldmass;
    while(k!=0){
        for (int i=0;i<L;i++) {
            if(i-1<0) newmass[i]=mass[L-1];
            else newmass[i]=mass[i-1];
        }
        for(int i=0; i<L;i++){
            mass[i]=newmass[i];
        }
        k--;
    }
    free(newmass);
}
 
 
 
int main(){
    /*Создание и инициализация матрицы*/
    int mass[N][M]={{3,4,2,0,5},{7,2,6,3,4},{8,6,5,10,12},{8,12,9,15,21}};
 
        printf ("Old Matrix:\n\n")
for(int n=0; n<N;n++){
        for(int m=0; m<M;m++){
            printf("%d ",mass[n][m]);
        }
        printf("\n");
}
    
 
      for(int n=0; n<N;n++){
        /*Находим id ячейки, где лежат макс и мин значения*/
        int max[2]={0,(-1*MaxNumber)};//max[0] - id ячейки; max[1] - максимальное число число(но в данный момент оно минимальное)
        int min[2]={0,MaxNumber};
        for(int m=0; m<M;m++){
            if(mass[n][m]<min[1]){
                min[1]=mass[n][m];
                min[0]=m;
            }
            if(mass[n][m]>max[1]){
                max[1]=mass[n][m];
                max[0]=m;
            }   
        }
        /*Сдвигаем если нужно наш массив*/
        if((int)fabs((float)(max[0]-min[0]))-1>1)//находим модуль разности и вычитам 1, если больше 1 смещаем массив направо на значение EditNumber
            RotateRigth(&*mass[n],M,EditNumber);
    }
    /*Выводим матрицу*/
    printf ("\nNew Matrix:\n\n");
    for(int n=0; n<N;n++){
        for(int m=0; m<M;m++){
            printf("%d ",mass[n][m]);
        }
        printf("\n");
    }
    system("pause");
    return 0;
}
Надеюсь, вы сможете помочь мне с кодом.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru