Rysowanie prostokąta ansi C

0

Jak narysować prostokąt w C jak najprościej? Ja na kartce mam pomysł, ale nie wiem jak przełożyć to na C. Czy ktoś pomoże? Ja spróbuję swój pomysł pokazać tu w C.

0

Tylko tu jest C++ a potrzebuję C.

0

W C też bez problemu można wywołać.

0

Chciałam to zrobić tablicą, bo muszę zapisać to do pliku.

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

FILE*plik;
int wysokosc, szerokosc;  //wielkosc tablicy
int pwysokosc, pszerokosc,r; //wymiary prostokata
int i;
int x, y;
int **tab;


int main()


{
	{
		printf("Podaj wysokosc tablicy \n");
		scanf("%d", &wysokosc);

		printf("Podaj szerokosc tablicy:\n");
		scanf("%d", &szerokosc);

	}

	tab = (int**)malloc(szerokosc, sizeof(*tab));
	for (i = 0; i < wysokosc; i++)
		tab[i] = (int**)malloc(wysokosc, sizeof(tab));

	printf("podaj wspolrzedna x\n");
	scanf("%d", &x);
	
	printf("podaj wspolrzedna y\n");
	scanf("%d", &y);

	{
		plik = fopen("Prostokat.pgm", "w");
		fprintf(plik, "P2\n# prostokat\n%d %d\n", szerokosc, wysokosc);

		for (p = 0; p<wysokosc; p++)
		{
			if (p<y)
			{
				for (r = 0; r<pszerokosc; r++)
					fprintf("%d ", 255);
			}
			if (p >= p && p <= (y + pwysokosc))
			{
				for (r = 0; r<x; r++)
					fprintf(plik, "%d ", 255);
				for (r >= x; r <= (x + pszerokosc); r++)
					fprintf(plik, "%d ", 0);
				for (r>(x + pszerokosc); r <= szerokosc; r++)
					fprintf(plik, "%d ");
			}
			if (p>(y + pwysokosc))
			{
				for (r = 0; r<szerokosc; r++)
					fprintf(plik, "%d ");
			}
			fprintf("\n", plik);
		}
		fclose(plik);

	}
	}
}
 

Chciałabym to zrobić, że użytkownik podaje współrzędne górnego rogu i dodawać aż będzie dana szerokość i analogicznie z wysokością. I nie wiem jak to zapisać w C. Dziękuję bardzo za pomoc.

0

To tak trzeba było od razu, potrzebujesz nie narysować prostokąt zaś stworzyć plik w formacie *.pgm z rysunkiem prostokąta.
Trochę brakuje ci danych oprócz wymiarów i pozycji prostokąta potrzebujesz wymiary obrazka.
Dane o prostokącie przelicz do left,top,right,bootom.
Po czym robisz pętle po y, x wg rozmiarów obrazka, dalej w zależności od tego czy potrzebujesz pełny prostokąt czy tylko kreski robisz jedno z:

  • fprintf(plik,(y==top)||(y==bottom)||(x==left)||(x==right)?"255 ":"0 ");
  • fprintf(plik,(top<=y)&&(y<=bottom)&&(left<=x)&&(x<=right)?"255 ":"0 ");
0

Myślałam że wymiarami obrazka będą wymiary tablicy. Ja mam problem, że rozumiem o co chodzi, ale dopiero uczę się w C i mam z tym problem jakich używać pętli i do czego.

0

Gdyby tak było to nie ma potrzeby pobrania x,y bo zawsze powinno być 0,0

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