Laborator FAIMA #11 / An 1 Semestru 1

Se introduce de la tastatura un numar natural N > 2. Sa se calculeze limita:


calculand termenul N al sirului.
(aceasta limita este cunoscuta si sub numele de problema Basel)

Important! Gasiti aici documentul cu punctajele voastre la zi

Laborator FAIMA #10 / An 1 Semestru 1

Se introduc de la tastatura N numere reale. Sa se calculeze media lor armonica, pe baza formulei:


Programul trebuie sa continue sa primeasca seturi de numere pana la introducerea comenzii "stop". In cazul introducerii unor numere eronate, trebuie sa afiseze un mesaj de eroare.

Rezolvare - Laborator FAIMA #9 / An 1 Semestru 1


public class RezolvareFAIMA {

    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        String nl = "";
        while (!nl.equals("stop")) {
            nl = input.nextLine().toLowerCase();
            try {
                String[] sNumere = nl.split(",");
                if (sNumere.length == 3) {
                    double[] iNumere = new double[sNumere.length];
                    for (int i = 0; i < sNumere.length; i++) {
                        iNumere[i] = Double.parseDouble(sNumere[i]);
                    }
                    double[] rez = rezolvaEcuatie(iNumere);
                    if (rez == null) {
                        System.out.println("Ecuatia nu are radacini reale");
                    } else {
                        System.out.println("Radacinile sunt: "+rez[0]+","+rez[1]);
                    }
                } else {
                    System.out.println("Sunt necesare trei numere.");
                }
            } catch (Exception e) {
                if (!nl.equals("stop")) {
                    System.out.println("Numere incorecte");
                }
            }
        }
        System.out.println("Program terminat. O zi buna!");
    }

    private static double[] rezolvaEcuatie(double[] param) {
        double delta = Math.pow(param[1], 2) - 4 * param[0] * param[2];
        if (delta >= 0) {
            return new double[]{(-param[1] + Math.sqrt(delta)) / (2 * param[0]), (-param[1] - Math.sqrt(delta)) / (2 * param[0])};
        } else {
            return null;
        }
    }
}

Laborator FAIMA #9 / An 1 Semestru 1

Se citesc de la tastatura 3 numere intregi a, b, c, separate prin virgule, reprezentand parametrii unei ecuatii de gradul 2 a*x2+b*x+c=0. Sa se afiseze solutiile reale ale ecuatiei, sau mesajul "Ecuatia nu are solutii reale".

Exemple:

1,2,1
Solutii: 1,1
1,-2,1
Solutii: -1,-1
1,0,1
Solutii: -1,1
1,1,1
Solutii: Ecuatia nu are solutii reale

Rezolvare - Laborator FAIMA #8 / An 1 Semestru 1


public class RezolvareFAIMA {

public static void main(String args[]) {
Scanner input = new Scanner(System.in);
String nl = "";
while (!nl.equals("stop")) {
nl = input.nextLine().toLowerCase();
try {
String[] sNumere = nl.split(",");
if (sNumere.length > 1) {
int[] iNumere = new int[sNumere.length];
for (int i = 0; i < sNumere.length; i++) {
iNumere[i] = Integer.parseInt(sNumere[i]);
}
int cmmdc = iNumere[0], cmmmc = iNumere[0];
for (int i = 1; i < iNumere.length; i++) {
// Folosim algoritmul lui Euclid. Mai multe informatii despre CMMDC: http://en.wikipedia.org/wiki/Greatest_common_divisor
cmmdc = calculeazaCMMDC(cmmdc, iNumere[i]);
// Folosim reducerea la CMMDC. Mai multe informatii: http://en.wikipedia.org/wiki/Least_common_multiple
cmmmc = cmmmc * iNumere[i] / calculeazaCMMDC(cmmmc, iNumere[i]);
}
System.out.println("CMMMC: " + cmmmc + "; CMMDC: " + cmmdc);
} else {
System.out.println("Sunt necesare cel putin doua numere.");
}
} catch (Exception e) {
if (!nl.equals("stop")) {
System.out.println("Numere incorecte");
}
}
}
System.out.println("Program terminat. O zi buna!");
}

private static int calculeazaCMMDC(int a, int b) {
if (b == 0) {
return a;
} else {
return calculeazaCMMDC(b, a % b);
}
}
}

Laborator FAIMA #8 / An 1 Semestru 1

Se citește de la tastatură un șir de numere naturale separate prin virgulă. Se va afișa cel mai mare divizor comun al numerelor (CMMDC)și cel mai mic multiplu comun (CMMMC). Programul va continua să primească de lucru până la introducerea comenzii 'stop' și va afișa un mesaj de eroare dacă datele primite sunt incorecte.

Rezolvare - Laborator FAIMA #7 / An 1 Semestru 1


public class RezolvareFAIMA {

    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        String nl = "";
        while (!nl.equals("stop")) {
            nl = input.nextLine().toLowerCase();
            try {
                int n = Integer.parseInt(nl);
                System.out.println(aranjareFactorizare(factorizareSimpla(n)));
            } catch (Exception e) {
                if (!nl.equals("stop")) {
                    System.out.println("Numar incorect");
                }
            }
        }
        System.out.println("Program terminat. O zi buna!");
    }
    
    private static List< Integer > factorizareSimpla(Integer n){        
        if(n==1){
            return new LinkedList< Integer >();
        }else{
            for(int i=2;i<=n;i++){
                if(n%i==0){
                    List rec=factorizareSimpla(n/i);
                    rec.add(i);
                    return rec;
                }
            }
            return null;
        }
    }
    
    private static String aranjareFactorizare(List< Integer > factorizare){        
        HashMap< Integer,Integer > factoriUnici=new HashMap< Integer,Integer >();
        for(Integer factor:factorizare){
            if(factoriUnici.containsKey(factor)){
                factoriUnici.put(factor, factoriUnici.get(factor)+1);
            }else{
                factoriUnici.put(factor,1);
            }
        }
        String ret="";
        for(Integer factorUnic:factoriUnici.keySet()){
            ret+=""+factorUnic+(factoriUnici.get(factorUnic)>1?"^"+factoriUnici.get(factorUnic):"")+"*";
        }
        return ret.substring(0,ret.length()-1);
    }
}