Witam. Uczę się dopiero programować w języku C i mam takie zadanie https://zapodaj.net/d301bc6520604.jpg.html
Nie wiem jak zrobić taki układ gwiazdek i żeby w tych rzędach było ich tyle samo
char foo[] = {
69,107,114,97,110,58,10,42,42,42,42,42,42,42,42,42,42,42,42,42,10,84,101,
107,115,116,32,112,105,101,114,119,115,122,121,10,42,42,42,42,42,42,42,42,
42,42,42,42,42,10,42,32,42,10,32,42,32,42,10,32,32,42,32,42,10,32,32,32,42,
32,42,10
};
int main()
{
for(int i = 0; i < sizeof foo; i++)
printf("%c", foo[i]);
}
A da się jakoś prościej, bo dotąd takiego czegoś jeszcze na studiach nie mielismy
Zadałeś pytanie w taki sposób, że nikomu się nie chce poważnie odpowiadać. Przeredaguj je, wykaż minimum chęci, a wtedy chętnie pomożemy.
Jak napisać program wypisujący
Ekran:
**************
Tekst pierwszy
**************
* *
* *
* *
* *
Inaczej niż w kodzie mi się źle wyświetla
Tak lepiej :)
Generalnie to po prostu poszukaj przykładowego kodu dla Hello World w necie. Taki program wypisze napis "Hello world". Po prostu go przerób, żeby wypisał to, co Ty chcesz :)
I pamiętaj, że znak nowej linii to \n
Czyli muszę jakoś tak napisać żeby wyświetlało po równo gwiazdek i nie da się inaczej?
Z opisu zadania naprawdę nie wiadomo o co chodzi. Literalne wypisanie podanego tekstu zdaje się spełniać jego warunki, a wtedy żadnej logiki nie ma.
Jak chcesz, żeby było fajnie to możesz te gwiazdki taki wypisać:
const int STAR_COUNT = 4;
for (int i = 0; i < STAR_COUNT; i++) {
for (int j = 0; j < i; j++) {
printf(" ");
}
printf("* *\n");
}
Sorki, jak zrobiłem jakiegoś babola, napisane na szybko.
Co tutaj mam źle?
#include<stdio.h>
main()
{printf("Ekran:\n***************\n
tekst pierwszy\n***************\n
* *\n
* *\n
* *\n ")
}
C:\Users\x\Desktop\programowanie c\zadanie 1.c In function 'main':
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Warning] missing terminating " character
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Error] missing terminating " character
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Error] 'tekst' undeclared (first use in this function)
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Note] each undeclared identifier is reported only once for each function it appears in
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Error] expected ')' before 'pierwszy'
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Error] stray '' in program
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Error] stray '' in program
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Error] stray '' in program
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Error] stray '' in program
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Error] stray '' in program
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Warning] missing terminating " character
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Error] missing terminating " character
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Error] expected ';' before '}' token
C:\Users\x\Desktop\programowanie c\Makefile.win recipe for target '"zadanie 1.o"' failed
No bo tak nie można dzielić literału na linie.
Można tak:
printf("Ekran:\n***************\n"
"tekst pierwszy\n***************\n"
// etc
Proszę o pomoc za tydzień mam kolokwium
No i wszystkie wywołania powinieneś kończyć średnikiem.
Nie bój żaby, tydzień czasu to sporo.
Teraz mam coś takiego i układ gwiazdek się nie zgadza ale program się uruchamia
#include<stdio.h>
main()
{printf("Ekran:\n***************\n"
"tekst pierwszy\n***************\n"
"* *\n"
"* *\n"
"* *\n ");
}
Wypisujesz tylko to co jest wewnątrz ""
, a tam nie masz odstępów.
To co mam zrobić żeby układ gwiazdek był dobry?
W ten sposób?
#include<stdio.h>
int main() {
printf("Ekran:\n***************\nTekst pierwszy<znak_nowej_lini>***************\n* *\n * *\n * *\n * *");
}
@Nikto0: pogłówkuj trochę, poeksperymentuj.
Próbowałam przy pomocy, ale mi nie wyszło ktoś pomoże?
\t
'\n' jest nowa linia ' ' jest spacja. Teraz polacz wszystko co tu przeczytales w jedno
" * \n";
Może ktoś napisać tutaj kod źródłowy, bo mi nie wychodzi.
Dostałeś już kodów, dostałeś też komentarze do istniejącego.
printf(" a b\n");
printf( " a b\n");
printf(
" a b\n");
Odpal sobie ten kod i zastanów się dlaczego wypisuje co wypisuje.
Rozumiem dlaczego tak się dzieje w kodzie który napisałeś, ale jak próbuję zrobić spację to mam błędy
#include<stdio.h>
main()
{printf("Ekran:\n***************\n"
"tekst pierwszy\n***************\n"
'* *\n';
'* *\n';
'* *\n ');
}
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Warning] multi-character character constant [-Wmultichar]
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Error] expected ')' before '\x2a202a0a'
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Warning] multi-character character constant [-Wmultichar]
C:\Users\x\Desktop\programowanie c\zadanie 1.c [Warning] character constant too long for its type
C:\Users\x\Desktop\programowanie c\Makefile.win recipe for target '"zadanie 1.o"' failed
'X'
oznacza znak, nie ciąg znaków, @fasadin dał błędną radę - tutaj użyj ""
Żeby nie robić zadania za ciebie, ale dać jakąś sensowną podpowiedź:
printf("Line 1:\n"
"Line 2:\n"
" Indented line\n");
Ewentualnie każdą linię wypisz osobnym wywołaniem printf
, nikt się o to specjalnie nie obrazi:
printf("Line 1:\n");
printf("Line 2:\n");
printf(" Indented line\n");
@Nikto0: Mechatronika na PWSZ
Dziękuję. już działa :)