Algorytm na zamianę s-tego wiersza z s-tą kolumną.

0

Witam. Mam takie zadanko. Nie wiem jak napisać algorytm na zamianę wiersza z kolumną. Dodam, że muszę to zrobić w C. Niżej zamieszczam kod programu. (bez tego algorytmu)
Dzięki za pomoc.

Napisz program, który w tabeli o n wierszach i n kolumnach zamienia s-ty wiersz z s-tą kolumną,
gdzie s jest numerem wiersza i kolumny, na przecięciu których jest umieszczony element maksymalny głównej
przekątnej. Liczbę naturalną n oraz elementy tabeli podaje użytkownik. Można założyć, że n jest nie większe niż 25.
#include <stdio.h>

int main()
{
printf("Program zamienia n-ty wiersz z n-ta kolumna. \n");

	int n; // Liczba wierszy i kolumn
	int i, j; 
	int tab[25][25];
	int max = 0;

	printf("Podaj ilosc wierszy i kolumn:");
	while (scanf_s("%d", &n) != 1 || getchar() != '\n' || n>25)
		{
			printf("Podano bledne dane, poprawe je. ");
			printf("\nPodaj poprawna liczbe: ");
			while (getchar() != '\n')		//czyszczenie bufora
				;
		}
	

	printf("\nPodaj teraz dane tablicy:\n");

	for (i = 0; i<n; i++) 
	{
		for (j = 0; j<n; j++) 
		{
			printf("Podaj liczbe dla pola w tablicy (%d,%d):", i, j);
			while (scanf_s("%d", &tab[i][j]) != 1 || getchar() != '\n' )
			{
				printf("Podano bledne dane, poprawe je. ");
				printf("\nPodaj poprawna liczbe: ");
				while (getchar() != '\n')		//czyszczenie bufora
					;
			}
		}
	}

	printf("\nA oto jak wyglada twoja tablica:\n");

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			printf("%d\t", tab[i][j]);
		}
		putchar('\n');
	}

	//Kod znajdujący wartość max w danym wierszu i kolumnie

	for (i = 0, j = 0; i<n; i++, j++) 
	{
		if (max < tab[i][j]) 
		{
			max = tab[i][j];
		}
	}
	printf("Maksymalna wartosc z glownej przekatnej to: %d", max);

	//Kod zamieniający miejscami wiersz i kolumnę względem wartości max




printf("\n\nAutor programu: Bartosz Rozanski \n");
printf("Koniec programu.\n");
return 0;
}
1

Tutaj masz rozwiązanie:

 #include <iostream>
#include <stdio.h>

int main() {
	printf("Program zamienia n-ty wiersz z n-ta kolumna. \n");

	int n; // Liczba wierszy i kolumn
	int i, j;
	int tab[25][25];
	int max = 0;

	printf("Podaj ilosc wierszy i kolumn:");
	while (scanf("%d", &n) != 1 || getchar() != '\n' || n > 25) {
		printf("Podano bledne dane, poprawe je. ");
		printf("\nPodaj poprawna liczbe: ");
		while (getchar() != '\n')
			//czyszczenie bufora
			;
	}

	printf("\nPodaj teraz dane tablicy:\n");

	for (i = 0; i < n; i++) {
		for (j = 0; j < n; j++) {
			printf("Podaj liczbe dla pola w tablicy (%d,%d):", i, j);
			while (scanf("%d", &tab[i][j]) != 1 || getchar() != '\n') {
				printf("Podano bledne dane, poprawe je. ");
				printf("\nPodaj poprawna liczbe: ");
				while (getchar() != '\n')
					//czyszczenie bufora
					;
			}
		}
	}

	printf("\nA oto jak wyglada twoja tablica:\n");

	for (i = 0; i < n; i++) {
		for (j = 0; j < n; j++) {
			printf("%d\t", tab[i][j]);
		}
		putchar('\n');
	}

	//Kod znajdujący wartość max w danym wierszu i kolumnie
	int s;
	for (i = 0, j = 0; i < n; i++, j++) {
		if (max < tab[i][j]) {
			max = tab[i][j];
			s = i;
		}
	}

	printf("Maksymalna wartosc z glownej przekatnej to: %d\n", max);
	printf("Liczba s to: %d\n", s);
	int temp;

	//Kod zamieniający miejscami wiersz i kolumnę względem wartości max
	for (i = 0; i < n; i++) {
		temp = tab[s][i];
		tab[s][i] = tab[i][s];
		tab[i][s] = temp;
	}

	for (i = 0; i < n; i++) {
		for (j = 0; j < n; j++) {
			printf("%d\t", tab[i][j]);
		}
		putchar('\n');
	}

	printf("\n\nAutor programu: Bartosz Rozanski \n");
	printf("Koniec programu.\n");
	std::cin >> i;
	return 0;
}

wartość max jest nieważna, ważna jest kolumna i wiersz w której max jest zapisany.

0

Super. Dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1