Сообщение от Casero
C++ | ||
|
- Пожалуйста, не жалейте букв на комментарии. Я не смог понять для чего предназначены эти переменные. А лучше уделите немного времени для того, чтобы придумать название для переменной, которое будет говорить само за себя без всяких комментариев (для примера можете посмотреть мой код, приведенный ниже).
- Если i и j — переменные цикла, то их стоит объявлять только при описании цикла for (что у Вас в коде и так сделано. Получилось повторное объявление переменных i и j)
- Объявлять переменные в одну строку конечно можно, но так делать не рекомендуется. Лучше написать еще раз тип_данных имя_переменной для удобочитаемости кода. В этой же строке можно и проинициализировать переменную значением, например, нулем (пример из кода, приведенного ниже):
Сообщение от Casero
Использовать указатели.
Заполнить двумерный числовой массив Z целыми числами. Найти первый нечетный элемент массива и номер строки и столбца, где он находится. Затем поменять местами первый нечетный и максимальный элемент массива.
Старался не сильно отходить от императивного стиля программирования, выбранного Вами. Однако, разбил на блоки для последующего удобства перехода к процедурному стилю программирования (Например, у Вас в коде массив заполняется случайными значениями в том же вложенном цикле, что и распечатывается. Я же разбил на два разных цикла.).
Про стили программирования объясняют «на пальцах» по этой ссылке
C++ | ||
|
Пример работы можно увидеть на скриншоте, прикрепленном к сообщению.
P.S.: Можно избавиться от переменных oddNum и max, заменив их на переменную tmp и выполнить перестановку с использованием буфера (переменной tmp). Таким образом можно сократить количество переменных и сэкономить ресурсы Однако, я считаю, что вышеприведенная реализация нагляднее.
0
У меня есть двумерный массив. Мне нужно подсчитать количество чётных его элементов и вывести это количество на экран. Как это сделать?
import random
random.seed()
m = input('Количество столбцов > ') # количество столбцов
n = input('Количество строк > ') # количество рядов
M = [[random.randint(-100, 100) for _ in range(eval(m))] for _ in range(eval(n))]
for V in M:
for e in V:
print(e, end=', ')
print()
задан 12 дек 2019 в 20:55
1
import random
random.seed()
m = input('Количество столбцов > ') # количество столбцов
n = input('Количество строк > ') # количество рядов
M = [[random.randint(-100, 100) for _ in range(eval(m))] for _ in range(eval(n))]
for V in M:
for e in V:
print(e, end=', ')
print()
even = 0
for V in M:
for e in V:
if e % 2 == 0:
even += 1
print(even)
P.s. в этом сообществе принято излагать свой вариант решения, каким бы он ни был, чтобы его можно было подправить, а не просить решать задачу за вас
ответ дан 12 дек 2019 в 21:05
ЕвгенийЕвгений
4,4872 золотых знака8 серебряных знаков28 бронзовых знаков
import random
random.seed()
m = input('Количество столбцов > ') # количество столбцов
n = input('Количество строк > ') # количество рядов
M = [[random.randint(-100, 100) for _ in range(int(m))] for _ in range(int(n))]
count = 0
for V in M:
for e in V:
if not e & 1:
count += 1
print(count)
ответ дан 12 дек 2019 в 21:06
asdasd
1,8053 золотых знака13 серебряных знаков27 бронзовых знаков
Ну на коленке как-то так:
import random
def even_values(mtx: list) -> list:
new = []
for row in range(mtx.__len__()):
for col in range(mtx[row].__len__()):
if mtx[row][col] % 2 == 0:
new.append(mtx[row][col])
return new
if __name__ == '__main__':
random.seed()
m = int(input('Количество столбцов > ')) # количество столбцов
n = int(input('Количество строк > ')) # количество рядов
print(even_values([[random.randint(-100, 100) for _ in range(m)] for _ in range(n)]).__len__())
Или без создания самой матрицы:
random.seed()
m = int(input('Количество столбцов > ')) # количество столбцов
n = int(input('Количество строк > ')) # количество рядов
print(sum(1 if random.randint(-100, 100) % 2 == 0 else 0 for _ in range(m * n)))
ответ дан 12 дек 2019 в 21:28
Ole LukøjeOle Lukøje
3,8951 золотой знак9 серебряных знаков33 бронзовых знака
Ребята, пожалуйста, помогите проверить мою программу (C#) и исправить ошибки! Очень нужно)))
У меня вот такая задача.
Написать программу, которая определит четные и нечетные элементы двумерного массива, потом сосчитает процентное соотношение между количествами четных и нечетных чисел.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace kz { class Program { static void Main(string[] args) { int k = 0; int[,] kz; int m; int n; kz = new int[m,n]; for (int i = 0; i < kz.GetLength(0); i++) { for (int j = 0; j < kz.GetLength(1); j++) { if (kz(i, j) % 2 == 0) z += 1; Console.WriteLine(z);} {if (kz(i, j) % 2 != 0) k += 1; Console.WriteLine(k); } } { int k; int z; int [,] kz; double percent(k); double percent(z); Console.Write(z); string st = Console.ReadLine(); int z = int.Parse(st); Console.Write(k); st = Console.ReadLine(); int k = int.Parse(st); double percent(k)== k/z*100; double percent(z)==100- k/z*100; Console.WriteLine(percent(k)); Console.WriteLine(percent(z));} { Public Static Int32 GetPercent(Int32 z, Int32 k); { If(z==0); return 0; return (Int32) (k/(z/100M));} class Program { Static void Main (String[]args) { Console.WriteLine(kz.GetLength); int m=int.Parse (Console.ReadLine()); int n=int.Parse (Console.ReadLine()); poskz = new poskz (); int i, j; int [,] kz = new int [m, n]; for (i=0; i<m; i++) for (j=0; j<n; j++) kz[i,j]= int.Parse (Console.ReadLine()); for (i=0; i<m; i++) for (j=0; j<n; j++) Console.Write(kz(i,j)+ ""); Console.WriteLine (); float C= object.percent(k) (kz, m, n); float C= object.percent(z) (kz, m, n); Console.WriteLine(kz); } } } } } } } }
Найти все нечетные числа в двумерном массиве
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Newbie Рейтинг (ф): 0 |
Привет всем Вот интересует такой вопрос «Найти все нечетные числа в двумерном массиве», как вот это задачу сделать? Поиск над главной диагональю Четное/нечетное #include<stdio.h> Но как бы надо объединить Сообщение отредактировано: #Nii — 01.10.08, 18:17 |
maxim84_ |
|
int i,j; int array[5][5]={{0,1,2,3,4,5}, {0,1,2,3,4,5}, {0,1,2,3,4,5}, {0,1,2,3,4,5}}; for(i = 0; i < 5; i++) { for(j = 0; j < 5; j++) { if( array[i][j]%2 ) printf(«%dn», array[i][j] ); } } Сообщение отредактировано: maxim84_ — 01.10.08, 18:24 |
#Nii |
|
Newbie Рейтинг (ф): 0 |
Щас проверю Добавлено 01.10.08, 18:44 Цитата #include<stdio.h> for(i = 0; i < 5; i++) сия прога не пашет Добавлено 01.10.08, 18:45 {0,1,2,3,4,5}, в этих строках |
maxim84_ |
|
ой…ошибся:
int array[5][5]={{0,1,2,3,4}, {0,1,2,3,4}, {0,1,2,3,4}, {0,1,2,3,4}, {0,1,2,3,4}}; |
#Nii |
|
Newbie Рейтинг (ф): 0 |
Цитата #include<stdio.h> for(i = 0; i < 5; i++) Вот это идет и правильно выдает, только теперь надо запрос поставить чтоб в матрице можно было свои числа ставить, а он потом бы из них выбирал |
maxim84_ |
|
ну а подумать?? ну елси не хочется:
for(i = 0; i < 5; i++) for(j = 0; j < 5; j++) { printf( «input number of cell[%d][%d]», i ,j ); scanf(«%d», array[i][j] ); } |
#Nii |
|
Newbie Рейтинг (ф): 0 |
Цитата ну а подумать?? Я бы с удовольствием, но не можется. не чем. -) Добавлено 01.10.08, 19:23 Добавлено 01.10.08, 19:32 Цитата #include «iostream.h» int main(int argc, char* argv[]) for (j=0; j<y;j++) printf(«We have a matrix nr»); Вот эту можно использовать для этого |
maxim84_ |
|
ого… ты зачем все переврал?
#define MATRIX_ROW 10 #define MATRIX_COL 10 int i,j; int array[MATRIX_ROW][MATRIX_COL]; for(i = 0; i < MATRIX_ROW; i++) { for(j = 0; j < MATRIX_COL; j++) { printf( «input number of cell[%d][%d]», i ,j ); scanf(«%d», &array[i][j] ); } } for(i = 0; i < MATRIX_ROW; i++) { for(j = 0; j < MATRIX_COL; j++) { if( array[i][j]%2 ) printf(«%dn», array[i][j] ); } } |
#Nii |
|
Newbie Рейтинг (ф): 0 |
Почему-то в ответе всегда выводится — «337» и все Сообщение отредактировано: #Nii — 01.10.08, 20:11 |
ufo |
|
#Nii, код с студию, полностью. OFFTOP: у тебя подпись не скомпилится (C/C++ регистрозависимый язык) Сообщение отредактировано: ufo — 01.10.08, 22:17 |
#Nii |
|
Newbie Рейтинг (ф): 0 |
вот весь код Цитата #include «iostream.h» for(i = 0; i < MATRIX_ROW; i++) for(i = 0; i < MATRIX_ROW; i++); Добавлено 02.10.08, 03:52 Цитата OFFTOP: у тебя подпись не скомпилится (C/C++ регистрозависимый язык) , Сообщение отредактировано: #Nii — 02.10.08, 03:53 |
maxim84_ |
|
Цитата Почему-то в ответе всегда выводится — «337» и все независимо от того какие данные поступают? Цитата Вот интересует такой вопрос «Найти все нечетные числа в двумерном массиве» а 337 разве четное? я не проверял, но вроде должно все работать… |
ufo |
|
Ага. Должно. Но оно не работает:
#include <stdio.h> #define MATRIX_ROW 3 #define MATRIX_COL 3 int main(void) { int i, j; int array[MATRIX_ROW][MATRIX_COL]; for(i = 0; i < MATRIX_ROW; i++) { for(j = 0; j < MATRIX_COL; j++) { printf( «input number of cell[%d][%d]», i ,j ); scanf(«%d», &array[i][j] ); } } printf(«i = %dn», i); i = 0; for(i = 0; i < MATRIX_ROW; i++); { printf(«i = %dn», i); for(j = 0; j < MATRIX_COL; j++) { printf(«cell[%d][%d] = %dn», i, j, array[i][j]); // if( array[i][j]%2 ) // printf(«%dn», array[i][j] ); } } return 0; }
bash-3.1$ ./a.out input number of cell[0][0]1 input number of cell[0][1]2 input number of cell[0][2]3 input number of cell[1][0]4 input number of cell[1][1]5 input number of cell[1][2]6 input number of cell[2][0]7 input number of cell[2][1]8 input number of cell[2][2]9 i = 3 i = 3 cell[3][0] = 3 cell[3][1] = 1 cell[3][2] = -1078338208 Добавлено 02.10.08, 05:13 |
#Nii |
|
Newbie Рейтинг (ф): 0 |
Цитата а 337 разве четное? Дело не в этом, дело в том что я другие цифры вводил |
ufo |
|
#include <stdio.h> #define MATRIX_ROW 3 #define MATRIX_COL 3 int main(void) { int i, j; int array[MATRIX_ROW][MATRIX_COL]; for(i = 0; i < MATRIX_ROW; i++) { for(j = 0; j < MATRIX_COL; j++) { printf( «input number of cell[%d][%d]», i ,j ); scanf(«%d», &array[i][j] ); } } for(i = 0; i < MATRIX_ROW; i++) { for(j = 0; j < MATRIX_COL; j++) { if( array[i][j]%2 ) printf(«%dn», array[i][j] ); } } return 0; } рабочий пример. |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- ПОМОЩЬ СТУДЕНТАМ
- Следующая тема
[ Script execution time: 0,0617 ] [ 15 queries used ] [ Generated: 28.05.23, 04:20 GMT ]
Как найти все чётные числа в двумерном массиве и сохранить их в файл?
Здравствуйте, мне нужно найти все чётные числа в двумерном массиве и сохранить их в файл.
Написал вот такой код, но он не работает. Подскажите, пожалуйста, в чем дело и как исправить?
static void ex6(int[][] A, int n, int m) throws IOException {
FileWriter fw = new FileWriter("ParCol.txt");
int[][] posA = new int[n][m];
for(int i = 0; i < A.length; i++) {
for(int j = 0; j < A.length; j++) {
if(A[i][j] % 2 == 0) {
posA[i][j] = A[i][j];
}
}
}
fw.write(n + " " + m + "n");
for(int i = 0; i < posA.length; i++) {
for(int j = 0; j < posA[i].length; j++) {
fw.write(posA[i][j] + " ");
}
fw.write("n");
}
}
-
Вопрос заданболее трёх лет назад
-
789 просмотров
Пригласить эксперта
1. Вложенный цикл у Вас некорректен.
Вместо for(int j=0;j <A.length; j++)
нужно прописать for(int j=0 ;j<A[i].length; j++)
.
A.length для двумерного массива — это количество строк, а A[i].length — количество элементов в каждой i-й строке этого массива. То есть Вы сначала получаете строку в виде массива, потом перебираете каждый элемент полученного массива-строки.
2. Размерность массива A — исходя из п. 1. n = A.length, m = A[0].length. То есть можно так (при условии, что массив не пустой): int[][] posA=new int[A.length][A[0].length]
, и тогда параметры n и m не нужны.
-
Показать ещё
Загружается…
28 мая 2023, в 02:05
7000 руб./за проект
27 мая 2023, в 23:03
10000 руб./за проект
27 мая 2023, в 22:55
1000 руб./за проект