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.
Tylko tu jest C++ a potrzebuję C.
W C też bez problemu można wywołać.
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.
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 ");
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.
Gdyby tak było to nie ma potrzeby pobrania x,y bo zawsze powinno być 0,0