Προς το περιεχόμενο
  • Εγγραφή
  • 3

C#: Πρόγραμμα υπολογισμού μέσου όρου.


costgial

Ερώτηση

Δημοσ. (επεξεργασμένο)

Καλησπέρα σας και καλή χρονιά να έχετε όλοι σας παιδιά, με ευτυχία και υγεία.
Παρακάτω θα δείτε ένα πρόγραμμα υπολογισμού του μέσου όρου από τον συνολικό αριθμό αριθμών που εισάγει ο χρήστης το οποίο το έφτιαξε με τις πιο βασικές γνώσεις που έχω αποκτήσει έως τώρα στη C#. 
Από εσάς θέλω τη γνώμη σας και τα σχόλια σας :)

using System;

namespace Averager
{
    class Program
    {
        static void Main(string[] args)
        {


            var runningTotal = 0.0;
            var countEntries = 0;


            while (true)
            {
                Console.Write("Enter a number to see the average or type \"quit\" to exit: ");
                var entry = Console.ReadLine();


                if (entry.ToLower() == "quit")
                {
                    break;
                }
                else
                {
                    try
                    {
                        var number = double.Parse(entry);

                        runningTotal += number;

                        if (entry != "0")
                        {
                            countEntries++;
                        }

                    }
                    catch (FormatException)
                    {
                        Console.WriteLine("Please type a valid numeric value");
                        continue;
                    }
                }

                Console.WriteLine("Your average = " + runningTotal / (double)countEntries);
                //Console.WriteLine(countEntries); //ο συνολικός αριθμός εισόδων αριθμών από τον χρήστη για τον υπολογισμό του μέσου όρου
            }

        }
    }
}

 

Επεξ/σία από costgial
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντήσεις 33
  • Δημιουργία
  • Τελευταία απάντηση

Συχνή συμμετοχή στην ερώτηση

Προτεινόμενες αναρτήσεις

  • 1
12 ώρες πριν, k33theod είπε

costgial

Ευχαριστώ γιατί δίνεις τροφή για σκέψη :)

Να πούμε επίσης ότι υπάρχει και η συνάρτηση Average() που επιστρέφει μέσo όρο για περιπτώσεις που έχουμε μεγάλα array με πολλές τιμές οπότε έκανα και εγώ ένα script που κάνω τη δουλεία με array χωρίς όμως ελέγχους για την είσοδο

Console.WriteLine("Δώσε αριθμούς για να υπολογίσω τον μέσo όρο (quit για έξοδο) ");
int counter = 0;
string entry;
double[] arithmoi = new double[50];
while ((entry = Console.ReadLine()) != "quit" && counter<50)
    arithmoi[counter++] = Double.Parse(entry);
Console.WriteLine($"Ο μέσος όρος των {counter} αριθμών είναι {arithmoi.Take(counter).Average()}");
            

εγώ δίνω τροφή για σκέψη όταν προσπαθώ να πάρω τροφή για προγραμματιστική σκέψη χεχε. Καλή σου χρονιά! :-D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 1
16 hours ago, Kostas Palaiologos said:
                        //avoid overflow
                        if (number < Double.MinValue)
                        {
                            number = Double.MinValue;
                        }
                        
                        if (number > Double.MaxValue)
                        {
                            number = Double.MaxValue;
                        }

Καταθέτω και εγώ τον όβολο μου. καλή χρονιά σε όλους

Αυτό το μέρος του κώδικα δεν κάνει απολύτως τίποτα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 0

using System;
using System.Collections.Generic;
using System.Linq;


namespace ConsoleApp1
{
    
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(
                "Avg:{0}", 
                ConsoleDoubleReader(
                    x => double.TryParse(x, out var _),
                    v => v.Equals("quit")
                    ).Average()
                );
            
            Console.Read();
        }
        static IEnumerable<double> ConsoleDoubleReader(Predicate<string> validate, Predicate<string> eof)
        {
            for (var input = Console.ReadLine(); !eof(input); input = Console.ReadLine())
                if (validate(input))
                    yield return Double.Parse(input);
                else
                    continue;
        }
    }
}

get-trolled-2.jpg

  • Thanks 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 0
57 λεπτά πριν, παπι είπε
  Εμφάνιση κρυμμένου περιεχομένου

using System;
using System.Collections.Generic;
using System.Linq;


namespace ConsoleApp1
{
    
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(
                "Avg:{0}", 
                ConsoleDoubleReader(
                    x => double.TryParse(x, out var _),
                    v => v.Equals("quit")
                    ).Average()
                );
            
            Console.Read();
        }
        static IEnumerable<double> ConsoleDoubleReader(Predicate<string> validate, Predicate<string> eof)
        {
            for (var input = Console.ReadLine(); !eof(input); input = Console.ReadLine())
                if (validate(input))
                    yield return Double.Parse(input);
                else
                    continue;
        }
    }
}
  Εμφάνιση κρυμμένου περιεχομένου

get-trolled-2.jpg

Δε σου κρύβω ότι μπερδέφτηκα λιγάκι :D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 1

@παπι cool αλλά γιατί όχι λίγο ακόμα LINQ αντί για καστομιές;

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(
                "Avg:{0}", 
                ConsoleLineReader()
                    .TakeWhile(s => s !== "quit")
                    .Where(s => double.TryParse(s, out var _))
                    .Select(double.Parse)
                    .Average()
                );
            
            Console.Read();
        }

        static IEnumerable<string> ConsoleLineReader()
        {
            while (true) yield return Console.ReadLine();
        }
    }

;)

  • Like 1
  • Haha 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 0
8 ώρες πριν, costgial είπε

Δε σου κρύβω ότι μπερδέφτηκα λιγάκι :D

Δώσε της χρόνο, αυτη η γλωσσα εχει από τα καλύτερα syntax. Πραγματική ευχαρίστηση ναμγραφεις πανω της.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 0
Στις ‎05‎/‎01‎/‎2018 στις 8:29 ΜΜ, defacer είπε

@παπι cool αλλά γιατί όχι λίγο ακόμα LINQ αντί για καστομιές;

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(
                "Avg:{0}", 
                ConsoleLineReader()
                    .TakeWhile(s => s !== "quit")
                    .Where(s => double.TryParse(s, out var _))
                    .Select(double.Parse)
                    .Average()
                );
            
            Console.Read();
        }

        static IEnumerable<string> ConsoleLineReader()
        {
            while (true) yield return Console.ReadLine();
        }
    }

;)

Η καλύτερη λύση..!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 0

Αγαπητέ φίλε costgial, αν θέλεις να ασχοληθείς σοβαρά με τον προγραμματισμό, θα πρέπει πρώτα να μάθεις ποια είναι τα εργαλεία σου. Το να χρησιμοποιείς αυτά που σου προτείνουν χωρίς να τα γνωρίζεις δεν είναι λύση. Παράδειγμα: Πρέπει να ξέρεις ακριβώς πως λειτουργεί και γιατί το error handling και μετά,... να πάρεις ιδέες για το πώς θα το χρησιμοποιείς στον κώδικά σου.

Παρατήρησα οτι σου έχουν προτείνει κάποιες τεχνικές ή frameworks, κλπ (όπως το LINQ), που σε καμία περίπτωση δεν θα σε βοηθήσουν να μάθεις, και μάλλον θα σε μπερδέψουν. Γι' αυτό, το καλύτερο που έχεις να κάνεις είναι να ξεκινήσεις με κάποιο βιβλίο ή tutorials.

Τα αγγλικά είναι πολύ βασικά, γιατί μόνο με αυτά μπορείς να βρείς πραγματική βοήθεια στο διαδύκτιο. Μάθε να διαιρείς το πρόβλημα σε μικρότερα και να αναζητείς λύσεις γι' αυτά. Σου προτείνω το stackoverflow.

Ο προγραμματισμός (το coding που λέμε), έχει τα εξής που πρέπει να κατανοήσεις και να έχεις πάντα στο νου σου:

  • Σύνταξη (basic, flow control, exceptions, arrays, types, κλπ)
  • Design patterns
  • OOP (Object Oriented Programming)
  • Memory Management (garbage collection, reference counting, manual, ...)
  • Error handling
  • Threading

Δεν σε βοήθησα στο συγκεκριμένο σου πρόβλημα, αλλά είμαι σίγουρος οτι σε βοήθησα σε όλα τα μελλοντικά σου!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 0
Στις 1/26/2018 στις 2:21 ΜΜ, vapon είπε

Αγαπητέ φίλε costgial, αν θέλεις να ασχοληθείς σοβαρά με τον προγραμματισμό, θα πρέπει πρώτα να μάθεις ποια είναι τα εργαλεία σου. Το να χρησιμοποιείς αυτά που σου προτείνουν χωρίς να τα γνωρίζεις δεν είναι λύση. Παράδειγμα: Πρέπει να ξέρεις ακριβώς πως λειτουργεί και γιατί το error handling και μετά,... να πάρεις ιδέες για το πώς θα το χρησιμοποιείς στον κώδικά σου.

Παρατήρησα οτι σου έχουν προτείνει κάποιες τεχνικές ή frameworks, κλπ (όπως το LINQ), που σε καμία περίπτωση δεν θα σε βοηθήσουν να μάθεις, και μάλλον θα σε μπερδέψουν. Γι' αυτό, το καλύτερο που έχεις να κάνεις είναι να ξεκινήσεις με κάποιο βιβλίο ή tutorials.

Τα αγγλικά είναι πολύ βασικά, γιατί μόνο με αυτά μπορείς να βρείς πραγματική βοήθεια στο διαδύκτιο. Μάθε να διαιρείς το πρόβλημα σε μικρότερα και να αναζητείς λύσεις γι' αυτά. Σου προτείνω το stackoverflow.

Ο προγραμματισμός (το coding που λέμε), έχει τα εξής που πρέπει να κατανοήσεις και να έχεις πάντα στο νου σου:

  • Σύνταξη (basic, flow control, exceptions, arrays, types, κλπ)
  • Design patterns
  • OOP (Object Oriented Programming)
  • Memory Management (garbage collection, reference counting, manual, ...)
  • Error handling
  • Threading

Δεν σε βοήθησα στο συγκεκριμένο σου πρόβλημα, αλλά είμαι σίγουρος οτι σε βοήθησα σε όλα τα μελλοντικά σου!

Ευχαριστώ πολύ για την απαντηση φίλε μου. Επειδή μου αρέσει ο προγραμματισμός και ειδικά η γλώσσα C#, άλλαξα πορεία. Τι εννοώ; Πήρα ένα βιβλίο στα Ελληνικά που αναλύει τη φιλοσοφία του OOP μέσω της C++. Αυτό το έκανα, διότι τα Αγγλικά μου είναι φτωχά και έτσι είχα ένα προβληματάκι με το να ξεκινήσω με ένα Αγγλικό βιβλίο της C#. Σκοπός μου είναι μόλις τελειώσω το Ελληνικό βιβλίο και έχω αποκτήσει μια βασική ιδέα να ξεκινήσω ένα ξενόγλωσσο βιβλίο για τη C#. 
Ευχαριστώ και πάλι για την απάντηση σου! :-D 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 0
41 λεπτά πριν, liakos18 είπε

Off-topic αλλά η ταξινόμηση των μηνυματών με βάση τη βαθμολογία κάνει κάποια νήματα όπως αυτό αρκετά δύσκολα στην παρακολούθηση...

Επιτέλους περίμενα πότε θα το σχολιάσει αυτό κάποιος.

Είναι μια αηδία και μισή. Δεν καταλαβαίνω τι περιμένουν για να το βγάλουν.
Δεν είναι Q&A το insomnia, forum είναι για να γίνονται συζητήσεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.