c
crak2025 березня 2017 р. 11: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 р. 00: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

    Коментарі

    Only authorized users can post comments.
    Please, Log in or Sign up
    AD

    C++ - Тест 004. Указатели, Массивы и Циклы

    • Результат:50бали,
    • Рейтинг балів-4
    m
    • molni99
    • 26 жовтня 2024 р. 01:37

    C++ - Тест 004. Указатели, Массивы и Циклы

    • Результат:80бали,
    • Рейтинг балів4
    m
    • molni99
    • 26 жовтня 2024 р. 01:29

    C++ - Тест 004. Указатели, Массивы и Циклы

    • Результат:20бали,
    • Рейтинг балів-10
    Останні коментарі
    ИМ
    Игорь Максимов22 листопада 2024 р. 11:51
    Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
    Evgenii Legotckoi
    Evgenii Legotckoi31 жовтня 2024 р. 14:37
    Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
    A
    ALO1ZE19 жовтня 2024 р. 08:19
    Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
    ИМ
    Игорь Максимов05 жовтня 2024 р. 07:51
    Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
    d
    dblas505 липня 2024 р. 11:02
    QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
    Тепер обговоріть на форумі
    Evgenii Legotckoi
    Evgenii Legotckoi24 червня 2024 р. 15:11
    добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
    t
    tonypeachey115 листопада 2024 р. 06:04
    google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
    NSProject
    NSProject04 червня 2022 р. 03:49
    Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
    9
    9Anonim25 жовтня 2024 р. 09:10
    Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

    Слідкуйте за нами в соціальних мережах