Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import std.stdio;
- import std.file;
- import std.string;
- import std.conv;
- int main(char[][]argv)
- {
- pasaAlumnosNotas();
- writef("");
- string name;
- name = readln();
- return 0;
- }
- //Caso de prueba, un programa que lea archivos txt del usuario el cual debera sacar el promedio de notas del archivo leido.
- void pasaAlumnosNotas(){
- try{
- File file = File("Alumnos.txt", "r"); //archivo a leer
- while (!file.eof()) {
- string line = chomp(file.readln());
- writeln("Nombre Alumno -", line);
- writeln("Manejo Excepciones Del Lenguaje!");
- writeln("-----------------------------------");
- manejoExcepcionesLenguaje(line);
- writeln("-----------------------------------");
- writeln("Manejo Excepciones Del Usuario!");
- manejoExcepcionesPorUsuario(line);
- }
- }catch(Exception e){
- writeln(e.msg);
- }
- }
- //Para este ejemplo usaremos un txt
- void manejoExcepcionesLenguaje(string nombreAlumno){
- //archivo leido no existe
- //al ingresar el total de notas se ingresa un 0, lo que hace que division sea por 0
- //al ingresar el total de notas se ingresa un char o algun otro simbolo que no sea un numero
- double calculopromedio=0;
- try{
- File A = File(nombreAlumno~".txt", "r"); //archivo que se leera
- while (!A.eof()) {
- string line = chomp(A.readln());
- writeln("Nota - ",line);
- double b = to!double(line);
- calculopromedio=b+calculopromedio;
- }
- writef("ingrese total de notas del alumno "~nombreAlumno~" - ");
- string a;
- a = readln();
- double totalnotas= parse!double(a);
- double promedioalumno = calculopromedio/totalnotas;
- writeln(promedioalumno);
- A.close();
- }catch(Exception ex){
- writeln(ex.msg);
- }
- }
- void manejoExcepcionesPorUsuario(string nombreAlumno){
- double calculopromedio=0;
- double contadorNotas=0;
- double cantidadmaximadenotas=5;
- double contadorNotasreales=0;
- bool saltar= false;
- try{
- File A = File(nombreAlumno~".txt", "r"); //archivo que se leera
- while (!A.eof()) {
- string line = chomp(A.readln());
- double b = to!double(line);
- if(b>=10 && b<=70){
- contadorNotas=contadorNotas+1;
- if(contadorNotas<=cantidadmaximadenotas || contadorNotas==0){
- contadorNotasreales++;
- writeln("Nota - ",line);
- calculopromedio=b+calculopromedio;
- }else{
- writeln("Se exedio del maximo de notas. Revise al archivo txt");
- saltar=true;
- break;
- }
- }else{
- writeln("Hubo una nota erronea! revise el archivo txt");
- saltar=true;
- break;
- }
- }
- if(saltar==false){
- bool salida=false;
- writef("ingrese total de notas del alumno "~nombreAlumno~" - ");
- string a;
- a = readln();
- double totalnotas= parse!double(a);
- while(salida!=true){
- if(contadorNotasreales == totalnotas){
- double promedioalumno = calculopromedio/totalnotas;
- writeln(promedioalumno);
- salida=true;
- }else{
- writeln("La cantidad de notas del alumno ingresadas es incorrectas!, Ingreselas nuevamente, ");
- writef("ingrese total de notas del alumno "~nombreAlumno~" - ");
- string x;
- x = readln();
- totalnotas= parse!double(x);
- }
- }
- A.close();
- }else{
- writeln("");
- }
- }catch(Exception ex){
- writeln(ex.msg);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement