Tablica C++

D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0

Witam chcę napisać program który tworzy tablicę dwuwymiarową maksymalnie 10x10 później podaje numer wiersza oraz kolumny którą chcę tak jakby usunąć z tablicy i uzyskać nową tablicę taką jak poprzednia tylko bez tego wiersza i kolumny. Przykładowo mam tablicę 4x4 po wykonaniu programu ma powstać 3x3.
Taki kod udało mi się napisać ale niestety coś jest źle:
ad oraz bd są to te wiersze i kolumny które chcę usunąć.

Kopiuj
#include <iostream>
using namespace std;
int main (){
	int tab[10][10],tab1[10][10];
	int n=4,ad=2,bd=2,i=0,j=0,c=0; // wielkosc tablicy
	
	for (int a=0;a<n;a++){                   //wypelnienie tablicy
		for (int b=0; b<n; b++){
			tab[a][b]=c;
			c++;
		}
	}
	
	for (int a=0;a<n;a++){                  //wyswietlenie niezmienionej tablicy
		for (int b=0; b<n; b++){
			cout<<tab[a][b]<<" ";
		}
		cout<< endl;
	}
	
	
	for (int a=0;a<n;a++){                                              //usuniecie wiersza & kolumny
		for (int b=0;b<n;b++){
			if (ad!=a){	
				if (bd!=b){
					tab1[i][j]=tab[a][b];	
					j++;	
				}
				i++;
			}	
		}
	}


	cout<<endl<<endl;                                  //wyswietlenie zmienionej tablicy
	for (int a=0;a<n-1;a++){
		for (int b=0; b<n-1; b++){
			cout<<tab1[a][b]<<" ";
		}
		cout<< endl;
	}
} 
edytowany 2x, ostatnio: donex93
gośćabc
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Szczecin
  • Postów:500
0
Kopiuj
	for (int a = 0; a < n ; a++){
		if(a == ad) {
			continue;
		}
		for (int b = 0 ; b < n ; b++) {
			if(b == bd) {
				continue;
			}
			tab1[i][j] = tab[a][b];
			++j;
		}
		j = 0;
		++i;
	}
D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0

Dzięki Działa wszystko.

gośćabc
działać działa, a wiesz dlaczego?
D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0

Robię większy program który ma liczyć macierz odwrotną brakowało mi tylko tego elementu. Tak wiem dlaczego.

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:6 dni
2
Kopiuj
for(int y=0;y<n;++y) for(int x=0;x<n;++x) tab1[y-(y>ad)][x-(x>bd)]=tab[y][x];

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon
D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0

_13th_Dragon twój algorytm okazał się lepszy ponieważ jeśli tamten wyżej wrzuciłem do funkcji i wywołałem funkcję więcej niż raz źle liczył.

_13th_Dragon
Czyli nic nie zrozumiałeś, z tego co pokazał i powiedział @gośćabc
D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0

Możesz mi wytłumaczyć jak działa :

Kopiuj
 tab1[y-(y>ad)][x-(x>bd)]

bo nie bardzo rozumiem

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:6 dni
0

wartości logiczne są niejawnie (lecz szybko, szybciej niż skok) w C/C++ konwertowane do int na zasadzie:

Kopiuj
false -> 0
true -> 1

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.