Izpis dosežkov
Učenci so pisali test. Sestavi program, ki bo izpisal seznam učencev.
Pri vsakem učencu naj navede njegovo ime, število doseženih točk glede
na število možnih točk, dosežek v procentih (na desetine natančno)
ter ustrezno oceno. Kriterij določi sam sestavljalec. Primer izpisa
(izberi primerne presledke):
Meta 14.0t/22 63.6% OCENA: dobro(3)
Namig
Program naj prebere število učencev, število možnih točk, imena učencev ter njihove dosežene točke. Ustvari tabele učencev, doseženih točk in ocen.
Namig
Če ti je težko določiti kriterij, se lahko uporabiš naslednji "ne najbolj kruti" kriterij:
- pod 40% - nezadostno (1)
- več ali enako 40% a pod 60% - zadostno (2)%
- več ali enako 60% a pod 75% - dobro (3)
- več ali enako 75% a pod 90% - prav dobro (4)
- več ali enako 90% - odlično (5)
Namig
Izpis naredimo s pomočjo posebne zanke, v kateri s zgolj sprehodimo po tabelah in izpišemo ustrezne podatke.
Rešitev (Java)
import javax.swing.JOptionPane;
public class IzpisDosezkov {
public static void main(String[] args) {
// vhodni podatki
String stevilo = JOptionPane
.showInputDialog("Koliko učencev je v skupini?");
int n = Integer.parseInt(stevilo);
String moznihtock = JOptionPane
.showInputDialog("Koliko točk ima celoten test?");
int maxTock = Integer.parseInt(moznihtock);
String[] ucenci = new String[n];
double[] tocke = new double[n];
// zapomnimo si podatke za vsakega ucenca
for (int i = 0; i < n; ++i) {
String ime = JOptionPane.showInputDialog("Vpiši ime " + (i + 1)
+ ". učenca:");
ucenci[i] = ime;
String tc = JOptionPane
.showInputDialog("Koliko točk je dosegel(dosegla) " + ime
+ " ?");
double stTock = Double.parseDouble(tc);
tocke[i] = stTock;
}
// sestavimo tabelo ocen z upoštevanjem kriterija
String[] ocena = new String[n];
for (int i = 0; i < n; ++i) {
if (tocke[i] < 0.4 * maxTock)
ocena[i] = "nezadostno(1)";
if (tocke[i] >= 0.4 * maxTock && tocke[i] < 0.6 * maxTock)
ocena[i] = "zadostno(2)";
if (tocke[i] >= 0.6 * maxTock && tocke[i] <= 0.75 * maxTock)
ocena[i] = "dobro(3)";
if (tocke[i] > 0.75 * maxTock && tocke[i] < 0.9 * maxTock)
ocena[i] = "prav dobro(4)";
if (tocke[i] >= 0.9 * maxTock)
ocena[i] = "odlično(5)";
}
// izpis dosežkov po imenih
for (int i = 0; i < n; ++i) {
int p = (int) (tocke[i] * 10 / maxTock);
double procenti = p / 10.0;
System.out.println(ucenci[i] + " " + tocke[i] + "t/" + maxTock
+ " " + procenti + "% OCENA: " + ocena[i] + "\n");
}
}
}
Rešitev (C#)
using System;
using System.Collections.Generic;
using System.Text;
namespace IzpisDosezkov {
class IzpisDosezkov {
static void Main(string[] args) {
// vhodni podatki
Console.Write("Koliko učencev je v skupini? ");
String stevilo = Console.ReadLine();
int n = Int32.Parse(stevilo);
Console.Write("Koliko točk ima celoten test? ");
String moznihtock = Console.ReadLine();
int maxTock = Int32.Parse(moznihtock);
String[] ucenci = new String[n];
double[] tocke = new double[n];
// zapomnimo si podatke za vsakega ucenca
for (int i = 0; i < n; ++i) {
Console.Write("Vpiši ime " + (i + 1)
+ ". učenca: ");
ucenci[i] = Console.ReadLine();
Console.Write("Koliko točk je dosegel (dosegla) " + ucenci[i]
+ "?");
String tc = Console.ReadLine();
tocke[i] = Double.Parse(tc);
}
// sestavimo tabelo ocen z upoštevanjem kriterija
String[] ocena = new String[n];
for (int i = 0; i < n; ++i) {
if (tocke[i] < 0.4 * maxTock)
ocena[i] = "nezadostno(1)";
if (tocke[i] >= 0.4 * maxTock && tocke[i] < 0.6 * maxTock)
ocena[i] = "zadostno(2)";
if (tocke[i] >= 0.6 * maxTock && tocke[i] <= 0.75 * maxTock)
ocena[i] = "dobro(3)";
if (tocke[i] > 0.75 * maxTock && tocke[i] < 0.9 * maxTock)
ocena[i] = "prav dobro(4)";
if (tocke[i] >= 0.9 * maxTock)
ocena[i] = "odlično(5)";
}
// izpis dosežkov po imenih
for (int i = 0; i < n; ++i) {
int p = (int)(tocke[i] * 10 / maxTock);
double procenti = p / 10.0;
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-us");
Console.WriteLine(ucenci[i] + " " + tocke[i].ToString("F01", ci) + "t/" + maxTock
+ " " + procenti + "% OCENA: " + ocena[i] + "\n");
}
Console.ReadKey();
}
}
}
Rešitev (Python)
#!C:/Python30/python
#-*-encoding: utf-8 -*-
# -*- coding: latin-1 -*-
'''
Created on 2.7.2009
@author: fajdigap
'''
#vhodni podatki
n= int(input("Koliko učencev je v skupini?"))
maxTock= int(input("Koliko točk ima celoten test?"))
ucenci = []
tocke = []
#zapomnimo si podatke za vsakega ucenca
for i in range(n):
print("Vpiši ime %s. učenca" %(i+1))
ucenci.append(input())
print("Koliko točk je dosegel(dosegla)?" )
tocke.append(float(input()))
print(tocke)
print(ucenci)
# sestavimo tabelo ocen z upo�tevanjem kriterija
ocena =[]
for i in range(n):
if tocke[i] < 0.4 * maxTock:
ocena.append("nezadostno(1)")
elif tocke[i] >= 0.4 * maxTock and tocke[i] < 0.6 * maxTock:
ocena.append("zadostno(2)")
elif tocke[i] >= 0.6 * maxTock and tocke[i] <= 0.75 * maxTock:
ocena.append("dobro(3)")
elif tocke[i] > 0.75 * maxTock and tocke[i] < 0.9 * maxTock:
ocena.append("prav dobro(4)")
else:
ocena.append("odlično(5)")
#izpis dose�kov po imenih
for i in range(n):
procenti = tocke[i] * 100 / maxTock
print ('%s %d %d %d%% OCENA: %s ' %(ucenci[i],tocke[i],maxTock,procenti,ocena[i]))