Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Java] Массивы 
V
    Опции темы
Вероника
Дата 6.10.2009, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 16.9.2008

Репутация: нет
Всего: нет



помогите, пожалуйста :(

пользователю необходимо ввести общее количество дождя за каждый месяц, например, 1. месяц пользователь вводит число, 2. месяц, пользователь вводит число итд. после введения 12ого месяца, программа выводит средний дневной обьем дождя за год и потом, программа у пользоватeля спрашивает, за какой месяц он хотел бы увидет среднюю дневную температуру, пользователь вводит число месяца и получает среднюю дневнуютемпереатуру за выбранный месяц. 

Как изменить этот код, что бы он делал эти функции? 

Код

import java.util.*;
public class Rainfall {
    Scanner in=new Scanner(System.in);    
    public void initRain(double rain[][]) {
        for (int month = 1; month < rain.length; month++)
            for (int day = 1; day < rain[month].length; day++)
                rain[month][day] = Math.random() * 2.0;
    } 
    public double avgDailyRain(double rain[][]) {
        double total = 0;
        for (int month = 1; month < rain.length; month++)
            for (int day = 1; day < rain[month].length; day++)
                total += rain[month][day];
        return total/365;
    } 
    public double avgRainForMonth(double monthRain[], int nDays) {
        double total = 0;
        for (int day = 1; day < monthRain.length; day++)
            total = total + monthRain[day];
        return total/nDays;
    }
    public static void main(String args[]) {
        double rainfall[][] = new double[13][32];
        Rainfall data = new Rainfall();
        data.initRain(rainfall);
        System.out.println("average daily rainfall is " +  data.avgDailyRain(rainfall));
        System.out.println("average daily rainfall for May is " +  data.avgRainForMonth(rainfall[5],31));
    } 
}

PM MAIL   Вверх
ivanovpv
Дата 6.10.2009, 16:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: нет
Всего: 28



Цитата(Вероника @  6.10.2009,  13:29 Найти цитируемый пост)
помогите, пожалуйста :(

Добрый я сегодня...
Код

    public static void main(String args[])
    {
        double rainfall[][] = new double[12][31];
        double monthrain[] = new double[12];
        Rainfall data = new Rainfall();
        data.initRain(rainfall);
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String input = "";
        Double tmp_rain;
        try
        {
            for (int i = 0; i < monthrain.length; i++)
            {
                System.out.print("Введите количество осадков за " + (i + 1) + "-й месяц:");
                input = in.readLine();
                tmp_rain = new Double(input);
                monthrain[i] = tmp_rain.doubleValue();
            }
        }
        catch (Throwable th)
        {
            System.err.println("Неверный формат числа!");
            th.printStackTrace();
        }
        System.out.println("average daily rainfall is " + data.avgDailyRain(rainfall));
        System.out.println("average daily rainfall for May is " + data.avgRainForMonth(rainfall[5], 31));
    }


Да, и нумерация индексов в Java начинаются с "0"


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
Вероника
Дата 6.10.2009, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 16.9.2008

Репутация: нет
Всего: нет



ivanovpv, спасибо! А скажите пожалуйста, как правильно изменить эту часть и rain[month][day] = Math.random() * 2.0;, что бы программа читала среднее количество дневных осадков, которые вводит пользователь, и по этому количеству считала среднее за год? :(

Код

    public void initRain(double rain[][]) {
        for (int month = 1; month < rain.length; month++)
            for (int day = 1; day < rain[month].length; day++)
                rain[month][day] = Math.random() * 2.0;
    } 


Это сообщение отредактировал(а) Вероника - 6.10.2009, 16:52
PM MAIL   Вверх
ivanovpv
Дата 6.10.2009, 17:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: нет
Всего: 28



Вероника, 

Math.random() возвращает значение от 0 до 1. То есть код должен быть примерно такой:

Код

public void initRain(double rain[][], monthrain[]) 
   {
    double avgMonth;
        for (int month = 0; month < rain.length; month++)
        {
         avgMonth=0;
            for (int day = 0; day < rain[month].length-1; day++)
               {
                rain[month][day] = 2*Math.random() * monthrain[month]; //пытаемся масштабировать на среднее значение
                avgMonth+=rain[month][day];
               }
            rain[month][rain[month].length-1]=monthrain[month]*rain[month].length-avgMonth; //вычисляем последнее значение так чтобы выйти на среднее
            //правда здесь можно наскочить на отрицательное значение - так что смотрите сами как модифицировать код.
        }
    } 





--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
Вероника
Дата 6.10.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 16.9.2008

Репутация: нет
Всего: нет



а как можно заменить Math.random() на то, что пользователь вводит, т.е. убрать из кода и подавать вместо этого данные, которые пользователь вводит? я все сложила таким образом, вводить количество осадков можно, но среднее не считает, пишет 0 :(
Код

import java.util.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Rainfall {
   
    public void initRain(double rain[][], double monthrain[]) 
    {
     double avgMonth;
         for (int month = 0; month < rain.length; month++)
         {
          avgMonth=0;
             for (int day = 0; day < rain[month].length-1; day++)
                {
                 rain[month][day] = 2*Math.random() * monthrain[month]; 
                 avgMonth+=rain[month][day];
                }
             rain[month][rain[month].length-1]=monthrain[month]*rain[month].length-avgMonth;       
         }
     } 
    public double avgDailyRain(double rain[][]) {
        double total = 0;
        for (int month = 1; month < rain.length; month++)
            for (int day = 1; day < rain[month].length; day++)
                total += rain[month][day];
        return total/365;
    } 
    public double avgRainForMonth(double monthRain[], int nDays) {
        double total = 0;
        for (int day = 1; day < monthRain.length; day++)
            total = total + monthRain[day];
        return total/nDays;
    }
    public static void main(String args[])
    {
        double rainfall[][] = new double[12][31];
        double monthrain[] = new double[12];
        Rainfall data = new Rainfall();
        data.initRain(rainfall);
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String input = "";
        Double tmp_rain;
        try
        {
            for (int i = 0; i < monthrain.length; i++)
            {
                System.out.print("enter the amount of rainfall in " + (i + 1) + "month");
                input = in.readLine();
                tmp_rain = new Double(input);
                monthrain[i] = tmp_rain.doubleValue();
            }
        }
        catch (Throwable th)
        {
            System.err.println("wrong format of the number!");
            th.printStackTrace();
        }
        System.out.println("average daily rainfall is " + data.avgDailyRain(rainfall));
        System.out.println("average daily rainfall for May is " + data.avgRainForMonth(rainfall[5], 31));
    }}

PM MAIL   Вверх
powerOn
Дата 6.10.2009, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 1
Всего: 159



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Вероника
Дата 6.10.2009, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 16.9.2008

Репутация: нет
Всего: нет



я разобралась, где что надо было писать и что убирать, спасибо за помощь, у меня получилось smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.4926 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.