c
crak20Наурыз 25, 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, 12: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

    Пікірлер

    Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
    Кіріңіз немесе Тіркеліңіз
    OI
    • Ora Iro
    • Жел. 24, 2024, 3:38 Т.Ж.

    C++ - Тест 001. Первая программа и типы данных

    • Нәтиже:40ұпай,
    • Бағалау ұпайлары-8
    AD

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

    • Нәтиже:50ұпай,
    • Бағалау ұпайлары-4
    m
    • molni99
    • Қаз. 25, 2024, 10:37 Т.Қ.

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

    • Нәтиже:80ұпай,
    • Бағалау ұпайлары4
    Соңғы пікірлер
    ИМ
    Игорь МаксимовҚар. 22, 2024, 8:51 Т.Ж.
    Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
    Evgenii Legotckoi
    Evgenii LegotckoiҚаз. 31, 2024, 11:37 Т.Ж.
    Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
    A
    ALO1ZEҚаз. 19, 2024, 5:19 Т.Ж.
    Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
    ИМ
    Игорь МаксимовҚаз. 5, 2024, 4:51 Т.Ж.
    Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
    d
    dblas5Шілде 5, 2024, 8:02 Т.Ж.
    QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
    Енді форумда талқылаңыз
    Evgenii Legotckoi
    Evgenii LegotckoiМаусым 24, 2024, 12:11 Т.Қ.
    добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
    t
    tonypeachey1Қар. 15, 2024, 3:04 Т.Ж.
    google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
    NSProject
    NSProjectМаусым 4, 2022, 12:49 Т.Ж.
    Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
    9
    9AnonimҚаз. 25, 2024, 6:10 Т.Ж.
    Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

    Бізді әлеуметтік желілерде бақылаңыз