Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2013, 08:19   #1
Siel
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 14
По умолчанию Программа C++==> Java

Всех приветствую,нужно переделать код из с++ под Java для среды NetBeans 7.2
Что делает программа,создаёт одномерный массив размером 10,находит в нём макс. и мин. элементы,и меняет элементы между ними местами(поплавок)
Код:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
void main(){
    int min, max, min_index, max_index;
    scanf("%d", &min);
    getchar();
    scanf("%d", &max);
    getchar();
    const int size = 10;
    int arr[size];
    srand ( time(NULL) );
    for (int i = 0; i < size; i++){
        arr[i] = rand()%(max - min + 1) + min;
        printf("%d, ", arr[i]);
    }
    printf("\r\n");
    min = arr[0];
    max = arr[0];
    min_index = 0;
    max_index = 0;
    for (int i = 1; i < size; i++){
        if (arr[i] < min) {
            min = arr[i];
            min_index = i;
        }
        if (arr[i] >= max) {
            max = arr[i];
            max_index = i;
        }
    }
    if (min == max) exit(0);
    int start, end;
    if (min_index > max_index) {
        start = max_index;
        end = min_index;
    } else {
        start = min_index;
        end = max_index;
    }
    int res_arr[size];
    for (int i = 0; i <= start; i++)
        res_arr[i] = arr[i];
    for (int i = 1; i <= end - start; i++)
        res_arr[start + i] = arr[end - i];
    for (int i = end; i < size; i++)
        res_arr[i] = arr[i];
    for (int i = 0; i < size; i++)
        printf("%d, ", res_arr[i]);
    getchar();
}
код рабочий нужно только переписать синтаксис под нетбинс,основная путаница у меня с строковыми переменными и переводами,нужно чтоб запросы были в консольном окне красиво,и вывод тоже консольный
в общем если кто перепишет буду очень благодарен

Последний раз редактировалось Siel; 15.10.2013 в 08:21.
Siel вне форума Ответить с цитированием
Старый 16.10.2013, 10:29   #2
Siel
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 14
По умолчанию

Неужели никто не может помочь?(
Код:
package javaapplication4;

// Импорт библиотеки графических компонентов Swing

import javax.swing.*;
import java.util.*;

public class JavaApplication4    // задание нового класса
{
    // описание главного метода  main  этого класса

    public static void main(String[] args) 
    {      
        	//описание переменных:	

int  n, vector_min, vector_max, min, max, i_min, i_max;   // целого типа
String input, text;         // строк класса String
 
	
		// вызов диалогового окна ввода исходных данных

        	input=JOptionPane.showInputDialog("Нижняя граница диапазона vector_min:");        
        	// преобразование из строкового значения в целое

		vector_min=Integer.parseInt(input);        
        	input=JOptionPane.showInputDialog("Верхняя граница диапазона vector_max:");
        	vector_max=Integer.parseInt(input);      
        	input=JOptionPane.showInputDialog("Размер вектора n:");
        	n=Integer.parseInt(input);       
        	// формирование строки вывода

		text="Значения входных переменных:\nvector_min=" + vector_min + "\nvector_max=" + vector_max + "\nn=" + n;     
        	// вызов диалогового окна эхо-печати
		JOptionPane.showMessageDialog(null, text);        
		//консольный вывод

		System.out.printf("vector_min=%d\nvector_max=%d\nn=%d\n", 
                            vector_min, vector_max, n);  
      
        	// создание вектора длиной  n  элементов

        	int vector[]=new int[n];	
		//консольный вывод

		System.out.println();
        	System.out.println("Исходный вектор:");    
   
   // создание объекта  Rand класса  Random - генератора случ. чисел 
        	// инициализация генератора случайных чисел, 
        	// привязка его к системному времени

        	Random Rand=new Random();                  
 
		// формирование вектора случайным образом
        	for (int i=0; i<n; i++)
		{
            	// получение очередного случайного числа в диапазоне
            	// от vector_min  до  vector_max	
	
            	vector[i]=Rand.nextInt(vector_max-vector_min+1) + vector_min;		
            	//консольный вывод элемента вектора

             	System.out.printf(" %4d", vector[i]);
		}
		//консольный вывод

		System.out.println();	

		// вычисления по заданному алгоритму
        	// максимальное и минимальное значения-
        	// начальные элементы вектора
		max = vector[0];
		i_max = 0;
		min = vector[0];
		i_min = 0;
	
		// поиск минимального и максимального элементов вектора
        	// и их индексов

        	for (int i=1; i<n ; i++)
		{
			if (vector[i] > max)
			{
				max = vector[i];
				i_max = i;
			}		
			if (vector[i] < min)
			{
				min = vector[i];
				i_min = i;
			}
		}	
		//консольный вывод

		System.out.printf("\nmax=%d  i_max=%d", max, i_max);
		System.out.printf("\nmin=%d  i_min=%d\n", min, i_min);                	
                //выполняем поплавок,вводим 2 новые переменные 
             int start, end;
             if (i_min>i_max) {
                  start=i_max;
                  end=i_min;
             }   else {
                 start=i_min;
                 end=i_max;
             }
    int vector2[]=new int[n];
    for (int i=0; i<=start; i++)
        vector2[i]=vector[i];
    for (int i=1; i<=end-start; i++)
        vector2[start+i]=vector[end - i];
         for (int i=end; i<n; i++)
             vector2[i]=vector[i];   

		//консольный вывод вектора

		System.out.println();
        	System.out.println("Выходной вектор:");	
for (int i=0; i<n; i++)
	    		System.out.printf("%5d", vector2[i]);
		System.out.println();		  
    }
}
Результат:
run

vector_min=1
vector_max=10
n=10

Исходный вектор:
1 9 3 7 7 9 5 2 1 8

max=9 i_max=1
min=1 i_min=0

Выходной вектор:
1 9 3 7 7 9 5 2 1 8
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 9 секунды)

Вопрос,почему индексы минимальных и максимальных значений выводятся на 1 меньше чем есть на самом деле(как сделать чтобы 0 не учитывался?),и почему выводится такойже вектор,код немножко с другими переменными нежели в 1 посте,но суть программы также,нужно выполнить поплавок,помогите плз разобраться где ошибка...

Последний раз редактировалось Siel; 16.10.2013 в 10:43.
Siel вне форума Ответить с цитированием
Старый 16.10.2013, 11:10   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вопрос,почему индексы минимальных и максимальных значений выводятся на 1 меньше чем есть на самом деле
они выводятся как есть (напоминаю, что нумерация в массивах идёт ОТ НУЛЯ!)
если при выводе пользователю Вы (и он) считаете, что массивы нумеруются от 1 (единицы), то банально добавляйте единицу при выводе результата:
Код:
		System.out.printf("\nmax=%d  i_max=%d", max, i_max+1);
		System.out.printf("\nmin=%d  i_min=%d\n", min, i_min+1);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.10.2013, 11:12   #4
Siel
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 14
По умолчанию

Благодарю,а насчёт поплавка есть мысли?,точнее почему выводится оригинальный массив вместо изменёного поплавком,цикл вроде верный
Siel вне форума Ответить с цитированием
Старый 16.10.2013, 12:35   #5
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

Сортировка пузырьком
Код:
import java.util.Random;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int arraySize;
        Random rand = new Random();

        System.out.print("Array size:");
        arraySize = sc.nextInt();
        array = new int[arraySize];

        System.out.println("Print array:");
        for (int i = 0; i < array.length; i++) {
            array[i] = rand.nextInt((10 - 1) + 1) + 1;
            System.out.println(array[i]);
        }

        System.out.println();

        array = bubbleSort(array);

        System.out.println("Print sort array:");
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }

        sc.close();
    }

    public static int [] bubbleSort(int [] a){
        int swap;
        for (int i = 0; i < a.length; i++){
            for (int j = 0; j < a.length; j++){
                if (a[i] < a[j])  {
                    swap = a[i];
                    a[i] = a[j];
                    a[j] = swap;
                }
            }
        }
        return a;
    }
    private static int[] array;
}
ultimatet41 вне форума Ответить с цитированием
Старый 16.10.2013, 12:54   #6
Siel
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 14
По умолчанию

Так ошибки у меня нет,однако
run:
vector_min=1
vector_max=30
n=10

Исходный вектор:
17 9 23 1 19 22 26 18 3 27

max=27 i_max=10
min=1 i_min=4

Выходной вектор:
17 9 23 1 3 18 26 22 19 27

поплавок сработал
помогите реализовать случай когда между минимальным и максимальным элементом находится только 1 элемент и поплавок не выполним(вывод на экран мол сорри выполнить не возможно и т.д)

Если макс\мин элемент не в единственном экземпляре(повторяются) у меня берутся самые крайние,допустим если есть несколько минимальных и несколько максимальных и есть случай когда между макс\мин элементами только один,программа использует именно его
Допустим у нас есть 4 числа 2 макс и 2 минимальных,между первым макс и первым мин находится 1 элемент,тогда программа пойдёт на поиск других таких же значений и попытается выполнить поплавок там,или же она просто исключит эти значения и найдёт другие максимальные и минимальные без тех что были исключены и попробует выполнить поплавок там,возможно ли такое в моём коде?

Последний раз редактировалось Siel; 16.10.2013 в 13:07.
Siel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа в java Cawwa Общие вопросы по Java, Java SE, Kotlin 1 27.03.2013 22:06
Программа на JAVA romanln2012 Фриланс 1 29.10.2012 20:14
Программа на Java elris Фриланс 4 21.10.2011 21:44
программа на JAVA! lera93 Помощь студентам 4 20.12.2010 12:22
Программа на Java Серега13 Фриланс 1 13.04.2010 21:24