Špirála čísel v C – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Špirála čísel v C – C / C++ – Fórum – Programujte.comŠpirála čísel v C – C / C++ – Fórum – Programujte.com

 

Gregor
~ Anonymní uživatel
1 příspěvek
14. 3. 2013   #1
-
0
-

Neviem ako mam naprogramovať špirálu čísel . Napríklad mám rozmer 5 tak chcem aby mi to vy písalo čísla od 1 -25 do špirály. Je jedno, či začína v strede a ako sa točí. Môj kód pre čísla v riadkoch vyzerá následovne tak ten by som chcel upraviť na tu špirálu :

#include<stdio.h>
int main()
{
  int i,j,ss,s,v,vv,n,a=1,k=1;
  scanf("%d",&n);
 
  for(i=1;i<=n;i++)
  {
                 
      for(j=1;j<=n;j++)
      {
        printf("%3d",i*n-n+j);
      }
                   
      putchar('\n');
  }

  system("PAUSE");
  return 0;
}

Nahlásit jako SPAM
IP: 147.175.180.–
vitamin+8
Grafoman
14. 3. 2013   #2
-
0
-

Skus daco taketo, len to musis upravyt tak aby to vypisovalo cisla a nie hviezdicky (zaporne a viac ciferne) a zrejme nebude dobre zacinat priamo od stredu (tam su moc natlacene na sebe), ale to sa da upravyt zmenou konstant vo funkcii fnc().

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


#define MAX_X 30
#define MAX_Y 60


struct point{
	size_t x;
	size_t y;
};

// "rovnica spiraly", cim vecsie cislo, tym dalej od stredu:
point fnc(int n){
	double abs_n = abs(n);
	point p;
	
	//polomer:
	double rx =  ((double)MAX_X) * abs_n/80.;	
	double ry =  ((double)MAX_Y) * abs_n/80.;	
	
	//suradnice:
	p.x = lround(((double)MAX_X)/2. + rx*cos((0.3 * abs_n))); 
	p.y = lround(((double)MAX_Y)/2. + ry*sin((0.3 * abs_n)));
	
	return p;
}

int main(){
	char matrix[MAX_X][MAX_Y];
	
	//vynulovanie matice:
	for(size_t a = 0; a < MAX_X; ++a)
		for(size_t b = 0; b < MAX_Y; ++b)
			matrix[a][b] = ' ';

	//vytvorenie spirali do matice:
	for(int i = 0; i < 50; ++i){
		point p = fnc(i);	//nacita suradnice bodu pre cislo i
		if(p.x < MAX_X && p.y < MAX_Y)	//nesmie byt mimo matice
			matrix[p.x][p.y] = '*';
	}
		
	//vypis matice:
	for(size_t a = 0; a < MAX_X; ++a){
		for(size_t b = 0; b < MAX_Y; ++b){
			printf("%c", matrix[a][b]);
		}
		printf("\n");
	}
}
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 57 hostů

Podobná vlákna

Třídění čísel — založil Kaja

Kombinace cisel — založil Martin

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý