Forme geometriche

Stato
Discussione chiusa ad ulteriori risposte.

kr1pn0$

Utente Silver
14 Ottobre 2008
69
5
0
70
ecco un semplice esercizio, lo potete fare in qualsiasi linguaggio,
l'obbiettivo e' disegnare una qualsiasi forma geometrica e che ne richieda le dimensioni,
esempio
rettangolo
Codice:
###############
###############
###############
Codice:
######
######
######
######
######
######
Dovrebbe essere un quadrato xD
ecco il mio codice,
forma scelta:
Codice:
rettangolo/ quadrato
Codice:
class GRAFFITTO
  def initialize(width, height)
    @width = width
    @height = height
  end
  def paint
    x = 0
    y = 0
    while x < @height
      y = 0
      while y < @width
	print "#"
	y += 1
      end	
      print "\n"
      x += 1
    end
  end
end
puts "Inserisci la larghezza"
width = gets.chomp.to_i
puts "Inserisci l'altezza"
height = gets.chomp.to_i
gr = GRAFFITTO.new(width, height)
gr.paint
 
Per ora fa rettangoli:
[Python]
Codice:
#!/usr/bin/python
height=int(raw_input("Altezza: "))
width=int(raw_input("Larghezza: "))
for i in range(0, height):
    print "#"*width
 
versione pessima in c++
volevo usare una classe ma non è che abbia strafatto...
Codice:
#include <iostream>
using namespace std;

class dynmatr
{
public:

	dynmatr()	{this->Init=false;this->BasePtr=NULL;};
	~dynmatr()	{if(this->Init)delete [] this->BasePtr;};
	void init(int asc,int ord);
	char getel(int asc=0, int ord=0);
	void setel(int asc,int ord, char el);

private:
	char** BasePtr;
	bool Init;
};


void dynmatr::init(int asc,int ord)
{
	this->BasePtr = new char* [asc];
	for(int i = 0; i < asc; i++)
		this->BasePtr[i] = new char[ord];

	if(BasePtr!=NULL)	{ this->Init=true; }
};

char dynmatr::getel(int asc,int ord)
{
	return this->BasePtr[asc][ord];
};


void dynmatr::setel(int asc,int ord,char el)
{
	this->BasePtr[asc][ord]=el;
}


int main()
{
	int asc,ord;
	dynmatr Matrix;
	cout<<"inserisci le ascisse:"<<endl;
	cin>>asc;
	cout<<"inserisci le ordinate:"<<endl;
	cin>>ord;
	Matrix.init(asc,ord);
	
	cout<<endl;

	for (int i=0;i<asc;i++)
	{
		for(int j=0;j<ord;j++)
		{
			Matrix.setel(i,j,'+');
			cout<<Matrix.getel(i,j);
		}
		cout<<endl;
	}
	
	return 0;
}
è in allocazione dinamica cosa che mi permetterà futuri sviluppi, ho un'ideeina per il cerchio....
però non è che sia sto programmone.. usando delle librerie grafiche sto programma... 2 secondi e ciao
 
in Python:
Codice:
def disegnaRettangolo(larghezza, altezza):
	latoLarghezza = ''
	for i in range(0, larghezza):
		latoLarghezza += '#'
	for i in range(0, altezza):
		print latoLarghezza
in C++:
Codice:
#include <iostream>
using namespace std;

void disegnaRettangolo(int larghezza, int altezza) {
     char latoLarghezza[larghezza];
     for (int i = 0; i <= larghezza; i++) {
         latoLarghezza[i] = '#';
         }
     for (int i = 0; i <= altezza; i++) {
         cout << latoLarghezza << "\n";
         }
}


int main()
{
    int LARGHEZZA = 5, ALTEZZA = 10;
    disegnaRettangolo(LARGHEZZA, ALTEZZA);
    system("PAUSE");
}

in Java:
Codice:
public class Main {

    static void DisegnaRettangolo (int altezza, int larghezza) {
        char[] latoLarghezza = new char[larghezza];
        for (int i = 0; i < larghezza; i++) {
            latoLarghezza[i] = '#';
        }
        for (int i = 0; i <= altezza; i++) {
            System.out.println(latoLarghezza);
    }
}

    public static void main(String[] args) {
       DisegnaRettangolo(50,60);
    }

}

E qui mi fermo :p
 
Cavolo. HackLife l'ha già fatto in java. Allora lo faccio con il vb appena ho tempo! :D Pero lo faccio con grafica e tutto.
 
jkkl ha detto:
Cavolo. HackLife l'ha già fatto in java. Allora lo faccio con il vb appena ho tempo! :D Pero lo faccio con grafica e tutto.
naaa in vb non vale è troppo facile c'è il cotrollo shape....
 
giusto per fare un'esempio della classe Graphics:
classe Cerchio:
Codice:
import java.awt.*;

public class Cerchio extends Canvas{
    public void paint(Graphics gr){
        gr.setColor(Color.red);
        gr.drawOval(20,20,70,70);
        gr.fillOval(100,20,70,70);
    }
}

classe Usa:
Codice:
import javax.swing.*;

public class Usa extends JFrame{
   Cerchio cerchio=new Cerchio();
   public static void main(String[] args){
       new Usa();
    }
    public Usa(){
       add(cerchio,"Center");
       setVisible(true);
       setSize(200,200);
       cerchio.repaint();
    }
}
otteniamo:
immaginejdr.jpg
 
vabbeh dai perchè no...
in actionscript, semplicisiimo:

classe Geom:
Codice:
package{
import flash.display.Sprite;
public class Geom extends Sprite{
		
  public function new_circle(_r:Number=1,_c:uint=0x99ccff):Sprite{
    var _circle:Sprite=new Sprite();
    _circle.graphics.beginFill(_c);
    _circle.graphics.drawCircle(0,0,_r);
    return _circle;
  }

  public function new_rept(_w:Number,_h:Number,_c:uint=0xcfc55):Sprite{
    var _rpt:Sprite=new Sprite();
    _rpt.graphics.beginFill(_c);
    _rpt.graphics.drawRect(0,0,_w,_h);
    return _rpt;
  }

}
}

classe per il test:
Codice:
package {
  import flash.display.Sprite;
  import Geom;
  public class gex extends Sprite{

    public function gex(){
      var _g:Geom=new Geom();
      var cerchio:Sprite=_g.new_circle(10);
      var rept:Sprite=_g.new_rept(50,20);
      addChild(rept);
      addChild(cerchio);
      cerchio.y=cerchio.x=100;
      rept.x=rept.y=130;
    }

  }
}


compilare con:
Codice:
# mxmlc gex.as

risultato:
 
Stato
Discussione chiusa ad ulteriori risposte.