برنامه زیر را پیاده سازی بفرمائید.
این برنامه شامل چهار مرحله است که پشت سر هم به کاربر نمایش داده می شوند. مراحل موردنظر در تصویر نمایش داده شده اند.
نکته ها:
ارسال تمرین:
برنامه ای بنویسید که مجموع عناصر چند آرایه را محاسبه کند.
دو عدد N و L را از ورودی دریافت کند. در n خط بعدی، در هر خط یک آرایه به طول L با مقادیر بین 1 تا 100 قرار دارد.
مجموع عناصر آرایه ها به روش معمولی به صورت زیر محاسبه می شود:
public static void main(String[] args) throws InterruptedException {
Scanner scanner= new Scanner(System.in);
// read N & L
int N= scanner.nextInt(), L= scanner.nextInt();
int[][] arrs= new int[N][L];
// read arrays
for (int i = 0; i < N; i++) {
for (int j = 0; j < L; j++) {
arrs[i][j]= scanner.nextInt();
}
}
long start= System.currentTimeMillis();
// calculate sum of arrays
int[] sum= Arrays.copyOf(arrs[0], arrs[0].length);
for (int i = 1; i < N; i++) {
// add curr array to sum array
for (int j = 0; j < L; j++) {
sum[j] += arrs[i][j];
}
}
// print final sum
System.out.printf("Total time: %d ms%nFinal sum: %s%n", System.currentTimeMillis()-start, Arrays.toString(sum));
}
ورودی نمونه:
3 4
1 2 3 4
2 3 4 5
5 6 7 8
خروجی نمونه:
Total time: 0 ms
Final sum: [8, 11, 14, 17]
حال برنامه ای بنویسید که همین عمل را با استفاده از چند نخ انجام دهد. خروجی یک تفاوت جزئی با خروجی بالا دارد و آن تعداد نخ های مورد استفاده است:
Total time: 0 ms with 3 threads
Final sum: [8, 11, 14, 17]
نکته ها:
ارسال تمرین:
مثال نوشته شده از CardLayout سر کلاس رو می تونید در ادامه مشاهده کنید:
public class MainWindow extends JFrame {
public MainWindow() {
super("My first JFrame");
CardLayout cardLayout= new CardLayout();
JPanel cardPanel= new JPanel(cardLayout);
// center panel
JPanel centerPanel= new JPanel();
centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.PAGE_AXIS));
centerPanel.add(new JButton("Button 1"));
centerPanel.add(new JButton("Button 2"));
centerPanel.add(Box.createRigidArea(new Dimension(0, 10)));
centerPanel.add(new JButton("Button 3"));
cardPanel.add(centerPanel, "page1");
// ===========================
JPanel bottomPanel= new JPanel();
bottomPanel.setLayout(new BoxLayout(bottomPanel, BoxLayout.LINE_AXIS));
bottomPanel.add(new JButton("Button 1"));
bottomPanel.add(new JButton("Button 2"));
bottomPanel.add(new JButton("Button 3"));
cardPanel.add(bottomPanel, "page2");
getContentPane().add(cardPanel, BorderLayout.CENTER);
JPanel toolbarPanel= new JPanel(new FlowLayout());
JButton preButton= new JButton("Pre");
preButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cardLayout.previous(cardPanel);
}
});
toolbarPanel.add(preButton);
JButton nextButton= new JButton("Next");
nextButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cardLayout.next(cardPanel);
}
});
toolbarPanel.add(nextButton);
getContentPane().add(toolbarPanel, BorderLayout.PAGE_END);
pack();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true);
}
}
برنامه ای بنویسید که یک فرهنگ لغت را پیاده سازی کند.
بعد از اجرای برنامه به صورت زیر عمل کنید:
نکته ها:
ارسال تمرین:
برنامه ای بنویسید که نتایج لیگ شاهرود را دریافت کرده و جدول لیگ را رسم کند.
در ابتدای ورودی یک عدد n آورده می شود که تعداد تیم ها را مشخص می کند. سپس n رشته دنبال هم آورده می شوند که نام تیم ها می باشند.
در ادامه، در هر خط نتیجه یک بازی قرار می گیرد. نتیجه یک بازی به چند شکل متفاوت قابل ارائه است.
در پایان ورودی نیز عدد 1- قرار می گیرد.
در همه مثال های زیر، تیم اول بازی را 3 بر 1 از تیم دوم برده است.
Team1 3 Team2 1
Team1 Team2 3-1
Team1 Team2 [3-1]
Team1-Team2 (3-1)
هر برد 3 امتیاز و هر مساوی 1 امتیاز دارد. هر دو تیم، فقط یک مرتبه باهم بازی می کنند. جدول نتایج را به فرمت زیر رسم کنید.
Team Name Num of Plays Win Lost Drawn Points
======= ======== === === === ====
Team1 3 2 0 1 7
Team2 3 1 1 1 4
Team3 2 1 1 0 3
Team4 2 0 2 0 0
یک مثال از ورودی برنامه که منجر به خروجی بالا می شود:
4
Team1 Team2 Team3 Team4
Team1 Team2 3-3
Team1 5 Team3 1
Team1 Team4 [4-2]
Team2-Team3 (1-2)
Team2-Team4 (2-1)
-1
نکته ها:
ارسال تمرین:
public static void main(String[] args) {
StringBuilder sb= new StringBuilder("ali");
for (int i = 0; i < 10000000; i++) {
sb.append("-ali");
}
String testStr= sb.toString();
long start= System.currentTimeMillis();
String[] splited1= testStr.split("-");
int counter1=0;
for (int i = 0; i < splited1.length; i++) {
counter1++;
}
long end= System.currentTimeMillis();
System.out.println("Time: " + (end-start) + " - counter1: " + counter1);
start= System.currentTimeMillis();
int counter2=0;
StringTokenizer st= new StringTokenizer(testStr, "-");
while(st.hasMoreTokens()) {
st.nextToken();
counter2++;
}
end= System.currentTimeMillis();
System.out.println("Time: " + (end-start) + " - counter2: " + counter2);
}
برنامه ای بنویسید که کلاس زیر را توسعه دهد.
کلاس BaseManager دارای مشخصات زیر است. موارد انتزاعی را به شکل مناسب دوباره نویسی کنید.
2 3 4 ....>
--------- ---------- ----------
1011 0102 0023
در تابع main اعمال زیر را به ترتیب ذکر شده انجام دهید:
نکته ها:
ارسال تمرین:
کلاس BaseManager:
public abstract class BaseManager {
private String number;
private int base;
public BaseManager(String number, int base) {
changeValue(number, base);
}
public final void changeValue(String number, int base) {
this.number= number;
this.base= base;
}
// convert number from base to newBase and return
public abstract String convertToBase(int newBase);
// sum [this.number with this.base] and [number with base] and return result in this.base
public abstract String sumInBase(int number, int base);
// print number in base
public abstract void print();
// print number in base 2..16
public abstract void printInAllBases();
}
بعد از تولد دخترم، روی یک نرم افزار برای کمک به مادرها کار می کردم که خداروشکر به اتمام رسید.
دانشجوهایی که برنامه نویسی اندروید می کنن، می تونن نرم افزار رو دانلود کنن و بررسیش کن.