Skocz do zawartości

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

shyboy11

Zadanie użycia pętli w tablicy 2 wymiarowej c++

Rekomendowane odpowiedzi

Witam wszystkich.

Do tej pory radziłem sobie z programowaniem w języku c++ z prostymi zadaniami jednak ostatnio dostałem zadanie którego kompletnie nie potrafię ruszyć.

 

Treść zadania - Zapisz w języku c++ program wypełniający tablicę według wzoru.

1 5 5 5 5

4 2 4 4 4

3 3 3 3 3

2 2 2 4 2

1 1 1 1 5

 

Użyj stałych opisujących rozmiar tabeli oraz pętli.

 

Nie jestem w stanie sobie poradzić ani wyobrazić jak mógłbym to zapisać.

Prosiłbym o pomoc Was użytkownicy forum z góry dziękuję :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Najpierw wypisz

 

5 5 5 5 5

4 4 4 4 4

3 3 3 3 3

2 2 2 2 2

1 1 1 1 1

 

a jak już to będziesz mieć, to zastanów się jaki warunek dodać w pętli.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zwróć uwagę na to, co zostało zmienione, i w których polach, względem wersji "podstawowej" którą podał Jeż.

Numer kolumny i numer wiersza są takie same, a przechowywana cyfra też jest z nimi powiązana.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak wiem zaraz zostanę oblany kubłem zimnej wody pewnie za moją niewiedzę ale nie specjalnie rozumię nawet, dochodzę do mementu w którym oznaczam liczbę wierszy i kolumn zeruję ją i wyświetlam generalnie wygląda to tak

 

#define i 5
#define j 5

int tab[i][j]

int main(int, argc, char *argv[])
{
  for(int i=0; i<5; i++)
{   
  for (int j = 0; j<5: j++)
{
printf("%3d", tab[i][j])
}
printf("\n";
}
return 0;
}

 

i w tym momencie głupieję ponieważ zrozumiałem to do momentu wyzerowania, dalej idąc nie do końca wiem jak ja ją mam wypełnić tak jak zapisał ją Jeż o pętli nie wspominając. Nie mam bladego pojęcia jak ruszyć dalej z tym faktem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ty w ogóle próbujesz uruchamiać kod który piszesz?

 

Brak include'ów - bez nich nie ma printf'a w C++. W takim razie piszesz w C a nie C++, a to fajnie zaznaczyć od razu i nie robić zamieszania w nazwie tematu.

Wywal te define'y, bo robisz to źle. Zadeklarujesz stałe później.

Póki co nie używaj tablicy tylko wypisuj same indeksy których używasz (i,j).

 

Do tego brakuje paru literek, obecny kod nie jest poprawny składniowo. Na przyszłość umieszczaj kod w tagach CODE.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

shyboy11 - przecież to napisałeś w C. I zamiast korzystać z stałej symbolicznej #define, korzystaj z kwalifikatora const. Dyrektywa #define jest reliktem języka C, a piszesz, że uczysz się C++.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Do tej pory radziłem sobie z programowaniem w języku c++ z prostymi zadaniami

Aha, właśnie widać.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Już nie przesadzajcie z tym pociskiem C vs C++. Dla mnie są to na tyle podobne języki, że w zasadzie nie ma sensu rozróżniać na tym poziomie.

Poza tym kto broni używania printf-a w C++?

 

@shyboy11

Kompletnie nie rozumiesz co piszesz. Najpierw deklarujesz sobie stałe, a potem zmienne o tych samych nazwach, aż dziw że chce się to kompilować i działać. Tyle, że nawet nie próbowałeś tego zrobić, bo byś pytał o konkretne błędy kompilatora.

 

Proponuję na początek napisać pustą funkcję main, tak żeby skompilowało się i uruchomiło bez błędów. Potem zadeklaruj tablicę o stałych wymiarach i wypisz jej zawartość w pętlach.

Następnie zdefiniuj stałe określające rozmiary tablicy i wykorzystaj je w pętlach.

Dopisz pętle wypełniające zawartość tablicy, na początek tak jak MistycznyJeż zaproponował, a jak się uda, to dodaj wypełnianie odpowiednich wartości na przekątnej.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak więc piszę znowu trochę poczytałem i podszkoliłem się w c++ (o ile tak to można nazwać mam jedno pytanie tylko odnośnie wypełnień)

ponieważ tutaj zastosowałem ręczne wypełnianie bo pętlą mi ciągle nie wychodzi nie potrafię zadeklarować tej pętli w taki sposób żeby wypełniła mi jak z wzoru który poddał Jeż

#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;

#define L_WIERSZY 5
#define L_KOLUMN 5

int i,j,A[L_WIERSZY][L_KOLUMN];

int main()
{
for(i=0;i<L_WIERSZY;i++)
	for(j=0;j<L_KOLUMN;j++)
	{
		cout<<"wypisz wartosc:"<<endl;
		cin>>A[i][j];
	}


	for (int i=0;i<5;i++)
		for(int j=0;j<5;j++)
		{
			if(i==j)
			{
				A[i][j]=i+1;
			}
		}
		cout<<endl;
		for(j=0;j<L_KOLUMN;j++)
		{
			cout<<"\t";
			for(i=0;i<L_WIERSZY;i++)
			cout<<A[i][j]<<" ";
			cout<<"\n";
		}

		return 0;
}

 

Pytanie brzmi w jaki sposób mam zastąpić pętlę którą ręcznie wypełniam na normalną pętlę

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po prostu wpisz do tablicy wartość:

for(i=0; i<L_WIERSZY; i++)
{   for(j=0; j<L_KOLUMN; j++)
	{
		A[i][j] = /* tutaj obliczenie wartości zależnej od i oraz j */;
	}
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Już nie ważne zrozumiałem gdzie błąd robiłem :)

 

tutaj poprawiony już z dwoma pętlami

#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;

#define L_WIERSZY 5
#define L_KOLUMN 5

int i,j,A[L_WIERSZY][L_KOLUMN];

int main()
{
for(i=0;i<L_WIERSZY;i++)
for(j=0;j<L_KOLUMN;j++)
	{
		A[i][j]=5-j;
	}

	for(i=0;i<L_WIERSZY;i++)
	for(j=0;j<L_KOLUMN;j++)
		{
			if(i==j)
			{
				A[i][j]=i+1;
			}
		}
		cout<<endl;
		for(j=0;j<L_KOLUMN;j++)
		{
			cout<<"\t";
			for(i=0;i<L_WIERSZY;i++)
			cout<<A[i][j]<<" ";
			cout<<"\n";
		}

		return 0;
}

 

Temat do zamknięcia :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Popracuj nad wcięciami, bo coraz głębiej wcinasz mimo, że to ten sam poziom zagłębienia kodu.

 

Wypełnienie wartościami można zrobić na raz. Po prostu rozpatrujesz warunek i==j i korzystasz z else.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...