Задача. Дан массив [latex]A(n)[/latex]. Все положительные его элементы поместить в начало массива [latex]B(n)[/latex], а отрицательные элементы- в начало массива [latex]C(n)[/latex]. Подсчитать количество тех и других.
Входные данные 3 | -1 | 2 | 0 | Выходные данные 1 | 2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> using namespace std; int main() { int n=0,otr=0,pol=0; scanf("%d",&n);//размеры массива double A[n],B[n],C[n];//создаем три массива for(int i=0;i<n;i++)// цикл для ввода значений массива и сортировки { cin >> A[i]; A[i]>=0?B[pol++]=A[i]:C[otr++]=A[i];//В данной строке команда printf используется вместо двух ifов,чтобы было приятнее глазу, Если элемент из массива А положительный,то в массив В добавляем новый элемент и увеличиваем счетчик на 1, а если отрицательно, то в массив С } cout << "Negative " << otr << " Positive " << pol << endl;//выводим количество отрицательных и положительных чисел return 0; } |
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is public. */ class Ideone { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int n = in.nextInt(), p = 0, o = 0; int[] A = new int[n], B = new int[n], C = new int[n]; for(int i = 0; i < n; i++){ A[i] = in.nextInt(); if(A[i] >= 0) B[p++] = A[i]; else C[o++] = A[i]; } System.out.println("Positive:"+p + " Negative:"+o); } } |
— Как всегда. Метки, пробелы, тесты, таблицы, заголовки.
— Дополнительно к Вашим обычным проблемам ещё и задание не выполнено. Ничего не подсчитано, ни в какие массивы не помещено…
— «Два цикла можно объединить в один,чтобы выглядело приятнее=)» Вот к чему это? Нужно — поместите, не нужно — не помещайте. А так к кому этот текст? К последующим поколениям, которые будут доделывать Вашу работу?
Нет, пора Вам за ум браться. Он у Вас точно есть, я же вижу.
Количество отрицательных и количество положительных выводит(что и требовалось в задании). Надо еще вывести элементы Массива B и C? Все подсчитывается и помещается в принтф’е.
— Как всегда. Метки, пробелы, тесты, таблицы, заголовки.
— Была бы ссылка на ideone, проверил бы. Но каким образом тут может что-то выводиться?
Кстати, можно объединить — B[pol++]=A[i], если задать правильное начальное значение для pol
Вы правы, так удобнее даже будет, вот ссылка на программу, там еще для проверки правильного начального значения переменной выводятся значения массивов http://ideone.com/e9Ch9C
Что печатает 11-я строка? printf(«»,A[i]>=0?B[pol]=A[i],pol++:(C[otr]=A[i],otr++));
Понятно, что вы хотите занести элемент в один из массивов. Но printf тут лишний.
Зачтено. Хотя использование условной операции вместо оператора не совсем оправдано. Но я не уверен. А сомнения трактуются в пользу студента.
P.S. Одно из важных отличий дешевого велосипеда/автомобиля/костюма от дорогого — внимание к деталям. С оформлением текста записки и программы точно также. Потратьте однажды полчаса своего времени, чтобы выяснить где программисты и верстальщики ставят пробелы и всю жизнь Вас никогда не будут принимать за школьника.
Java-версия засчитана, 5 баллов.
Хотя странно, что Вы не распечатываете полученные массивы.