c
crak2025 марта 2017 г. 21:19

Поворот Матрицы на 90 градусов

Первый раз поворачивает нормально второй раз не корректно по часовой стрелке

#include <iostream>
#include <fstream>
#include "Prochee.h"

using namespace std;


int main()
{

	fstream a;

	a.open("C:/Users/xpens/Desktop/word2.txt", ios::in);
	while (!a.eof())
	{
		a.getline(mas[y], 255, '\n');
		if (strlen(mas[y]) > x)
		{
			x = strlen(mas[y]);
		}
		y++;
	}
	a.close();

	Pchas();
	Pchas();

	system("PAUSE");
	return 0;
}
#pragma once
#include <iostream>
#include <fstream>

using namespace std;

char mas[256][256];
int x, y;

void Pchas() // по часовой
{
	int buf=0;
	char matr[256][256];
	for (int i = 0; i<x; i++)
	{
		for (int j = y - 1; j >= 0; j--)
		{
			//matr[i][j] = mas[j][i];
			//cout << mas[j][i] << " ";
			if (mas[j][i] > NULL)
			{
				matr[i][j] = mas[j][i];
				cout << mas[j][i] << " ";
			}
			else
			{
				mas[j][i] = ' ';
				matr[i][j] = mas[j][i];
				cout << mas[j][i] << " ";
			}

		}
		cout << "\n";
	}

	for (int i = 0; i < x; i++)
	{
		for (int j = y-1; j >=0; j--)
		{
			mas[i][j] = matr[i][j];
			if (mas[i][j] > NULL)
			{
				cout << mas[i][j] << " ";
			}

			
		}
		cout << "\n";
	}

	buf = x;
	x = y;
	y = buf;
	cout << endl;

}
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

1
Evgenii Legotckoi
  • 26 марта 2017 г. 10:53
  • Ответ был помечен как решение.

Перемудрили. И ещё этот пробел, который видимо выступает в качестве разделителя. Не лучше ли его игнорировать сразу при чтении из файла? Это же будет более грамотным подходом, чем пытаться его обрабатывать в процесс поворота матрицы.

#include <iostream>
#include <fstream>
#include <cstring>
#include "prochee.h"

using namespace std;

char line[256];

int main()
{

    fstream a;

    a.open("C:/Users/xpens/Desktop/word2.txt", ios::in);
    while (!a.eof())
    {
        a.getline(line, 255);
        int len = strlen(line);
        int j = 0;
        for (int i = 0; i < len; i++)
        {
            if (line[i] != ' ')
            {
                mas[rowsCount][j] = line[i];
                j++;
            }
        }
        if (strlen(mas[rowsCount]) > columnsCount)
        {
            columnsCount = strlen(mas[rowsCount]);
        }
        rowsCount++;
    }
    a.close();

    Pchas();
    Pchas();

    system("PAUSE");
    return 0;
}
#ifndef PROCHEE_H
#define PROCHEE_H

#include <iostream>

using namespace std;

char mas[256][256];
int columnsCount = 0;
int rowsCount = 0;

void Pchas() // по часовой
{
    char matr[256][256];

    for (int row = 0; row < rowsCount; row++)
    {
        for (int column = 0; column < columnsCount; column++)
        {
            matr[column][rowsCount - row - 1] = mas[row][column];
        }
    }

    swap(rowsCount, columnsCount);

    for (int row = 0; row < rowsCount; row++)
    {
        for (int column = 0; column < columnsCount; column++)
        {
            mas[row][column] = matr[row][column];
            cout << mas[row][column];
        }
        cout << endl;
    }

}

#endif // PROCHEE_H

Из общих замечаний:

  1. используйте именованные константы в виде rowsCount, columnsCount вместо x, y и т.д., если они носят глобальный характер.
  2. использование #pragma once не самая лучшая практика, эту директиву порой не так легко заметить в файле или наоборот пропустить её объявление. Лучше уж как в моём примере через #define и #ifndef

    Комментарии

    Только авторизованные пользователи могут публиковать комментарии.
    Пожалуйста, авторизуйтесь или зарегистрируйтесь
    Ua

    Qt - Тест 001. Сигналы и слоты

    • Результат:84баллов,
    • Очки рейтинга4
    Ua

    Qt - Тест 001. Сигналы и слоты

    • Результат:42баллов,
    • Очки рейтинга-8
    ОК

    Qt - Тест 001. Сигналы и слоты

    • Результат:47баллов,
    • Очки рейтинга-6
    Последние комментарии
    ИМ
    Игорь Максимов22 ноября 2024 г. 21:51
    Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
    Evgenii Legotckoi
    Evgenii Legotckoi31 октября 2024 г. 23:37
    Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
    A
    ALO1ZE19 октября 2024 г. 17:19
    Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
    ИМ
    Игорь Максимов5 октября 2024 г. 16:51
    Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
    d
    dblas55 июля 2024 г. 20:02
    QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
    Сейчас обсуждают на форуме
    f
    firstlunoxod15 февраля 2025 г. 13:46
    Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
    Дмитрий
    Дмитрий3 февраля 2025 г. 16:24
    Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
    NW
    Nayo Wai30 января 2025 г. 19:22
    не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
    n
    nkly3 января 2025 г. 12:52
    Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
    M
    Marsel17 августа 2023 г. 0:26
    OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

    Следите за нами в социальных сетях