Strona 1 z 1

[+] Program rysujący pusty w środku kwadrat, nie działa

: 20 października 2007, 20:23
autor: frantic

Kod: Zaznacz cały

#include<stdio.h>
void rysuj_kwadrat(int n){
for(n = 1; n <= 10; n += 1){
if ((n == 1) || (n == 10))
printf("**************");
else
printf("*            *");
}
int main(){
rysuj_kwadrat;
return 0;
}

Kod: Zaznacz cały

gcc -o kw kwadrat.c
kwadrat.c: In function ‘rysuj_kwadrat’:                                                                           kwadrat.c:12: error: expected declaration or statement at end of input
ktos wie o co mu chodzi? bo ja sie mecze z tym juz pol godziny i nic :-(

: 20 października 2007, 20:45
autor: ponton

Kod: Zaznacz cały

int main(){ 
rysuj_kwadrat; 
return 0; 
}
¯eby wywołać funkcje, musisz dopisać nawiasy (). rysuj_kwadrat().

: 20 października 2007, 21:20
autor: thalcave

Kod: Zaznacz cały

#include<stdio.h>

void rysuj_kwadrat()
{
int n;
for(n = 1; n <= 10; n += 1)
if ((n == 1) || (n == 10))
printf("**************");
else
printf("*            *"); 
}


int main()
{
rysuj_kwadrat();
return 0;
}
to działa - ale żadnego efektu nie ma :-? ... sensownego

: 20 października 2007, 21:57
autor: Theq
przydalyby sie znaki konca linii

: 21 października 2007, 01:15
autor: cepe

Kod: Zaznacz cały

#include <stdio.h>

void RysujKwadrat(int);

int main()
{
	RysujKwadrat(10);
	return 0;
}

void RysujKwadrat(int n)
{
	int a,b;
	a = n;
	while (a--)
		printf("*");
	printf("\n");
	a = n - 2;
	while (a--)
	{
		printf("*");
		b = n - 2;
		while (b--)
			printf(" ");
		printf("*");
		printf("\n");
	}
	a = n;
	while (a--)
		printf("*");
	printf("\n");
}

Kod: Zaznacz cały

gcc ale_mi_sie_nudzi.c -o kwadrat
Enjoy!

: 21 października 2007, 11:27
autor: frantic
@ponton: wiem jak sie wywoluje funkcje ale chodzilo mi o to czemu ta moja nie chce dzialac :-) to wywolanie dopisalem na szybko, stad tez blad ;-)
@cepe: ten twoj jest dobry ale poprawilem moj kod, jest troche bardziej zwiezly niz twoj ;-)

Kod: Zaznacz cały

#include<stdio.h>
void rysuj_kwadrat(int n){
for(n = 1; n <= 10; n += 1){
if ((n == 1) || (n == 10))
printf("* * * * * * * * * * *\n");
else
printf("*                   *\n");
}}
int main(){
rysuj_kwadrat(20);
return 0;
}
brakowalo "}" po printf("* *"); :-P
widac czas juz do okulisty

: 23 października 2007, 00:12
autor: mlyczek
[quote="frantic"]

Kod: Zaznacz cały

void rysuj_kwadrat(int n){ 
for(n = 1][/quote]
1) Po co robisz funkcję z parametrem i przekazujesz do tej funkcji jakiś parametr, skoro go później w niej nie wykorzystujesz? Jeśli ta funkcja rysowałaby kwadrat o n wielkościo to miałoby to sens, ale skoro ona zawsze rysuje taki sam kwadrat niezależnie od n, to po co go przekazujesz do tej funkcji?

2) [quote="frantic"]brakowalo "}" po printf("* *")]
Bo piszesz strasznie wszystko zwarte i nieczytelne, jakbyś miał program napisany tak jak ten wyżej, ale choćby tylko około 100 linii to nic w nim nie znajdziesz. Nie lepiej (i przede wszystkim czytelniej napisać go tak:
[code]#include<stdio.h>

void rysuj_kwadrat(int n)
{ 
   for(n = 1; n <= 10; n += 1)
   { 
      if ((n == 1) || (n == 10)) 
          printf("* * * * * * * * * * *\n"); 
      else 
          printf("*                   *\n"); 
   }
} 

int main()
{ 
    rysuj_kwadrat(20); 

    return 0; 
}
Przydałyby sie jeszcze jakieś komentarze. Dobre nawyki wyrabiane już na początku są bardzo ważne. Bo tak jak teraz nauczysz się pisać, tak będziesz pisać i w przyszłości.

: 23 października 2007, 20:17
autor: frantic
co do wciec to masz racje, musze sie tego nauczyc :->
mlyczek pisze:Po co robisz funkcję z parametrem i przekazujesz do tej funkcji jakiś parametr, skoro go później w niej nie wykorzystujesz? Jeśli ta funkcja rysowałaby kwadrat o n wielkościo to miałoby to sens, ale skoro ona zawsze rysuje taki sam kwadrat niezależnie od n, to po co go przekazujesz do tej funkcji?
po prostu uczylem sie robienia funkcji z parametrem i tylko takich uzywalem dotychczas bo zwykle wykonywaly one jakies dzialania arytmetyczne, i tutaj masz racje a kod tez poprawilem bo trzeba sie tych dobrych nawykow uczycz :-D

Kod: Zaznacz cały

#include<stdio.h>
void rysuj_kwadrat(){
	int n]

co do komentarzy to w tym "programie" chyba nie ma czego komentowac bo funkcja ma dobra(chyba) nazwe i wiadomo co robi, jest tylko jedna petla wiec tak naprawde nie wiem co tu komentowac...
ale mniejsza z tym dopisuje [+] do tematu :-)