Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Двумерный массив. Программу написать используя указатели и строковые функции. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Скринсейвер http://www.cyberforum.ru/cpp-beginners/thread384751.html
У меня задание стоит такое: Сделать утилиту, котороя управляла бы скринсейвером. Вот в чем вопрос: если у меня же есть екзешники скринсейверов, как сделать утилиту,которая настраивала бы их роботу:...
C++ Задача на С++ Добрый день! Прошу помощи в такой задаче: Пользователь вводит размер таблицы (sizeX sizeY) и начальную боковую ячейку (startX startY), с которой нужно начинать действия. Согласно этим условиям... http://www.cyberforum.ru/cpp-beginners/thread384720.html
C++ Дан одномерный массив. Получить из исходного массива матрицу K-го порядка.
Дан одномерный массив. Получить из исходного массива матрицу K-го порядка. Лишние элементы одномерного массива игнорируются. Если элементов не хватает, то оставшиеся элементы матрицы полагаются...
Задача на строки C++
Очень нужно) заранее спасибо:) **При написании программ использовать нуль–терминированные строки и работать только с типом char . Длина каждой строки не превосходит 300 символов. Словом, входящим...
C++ помогите пожалуйста с решением http://www.cyberforum.ru/cpp-beginners/thread384709.html
Учитывая последовательность (N) круглых, квадратныч и фигурныч скобок. Узнайте, можно ли добавить цифры и арифметические операции, чтобы вы могли получить правильное арифметическое выражение. вход...
C++ Дайте совет как вывести простые несократимые дроби в порядке возрастания. Надо вывести в порядке возрастания все простые несократимые дроби из интервала (0;1), знаменатели которых не превосходят заданного P<=9. Набрасал этот код, но если m > 4, то уже неверно. ... подробнее

Показать сообщение отдельно
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
17.11.2011, 07:01
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
typedef int Value;
typedef Value *Row;
typedef Row *Matrix;
 
 
int firstColumnWithZero(Matrix matrix, size_t height, size_t width) {
  int i, j;
  for (i = 0; i < height; ++i)
    for (j = 0; j < width; ++j)
      if (matrix[i][j] == 0)
        return j;
  return -1;
}
 
Value sumEvenNegatives(Row row, size_t width) {
  Value result = 0;
  int i;
  for (i = 0; i < width; ++i)
    if ((row[i] < 0) && (row[i] % 2 == 0))
      result += row[i];
  return result;
}
 
void quickSort(Matrix matrix, size_t height, size_t width,
  Value (*predicate)(Row, size_t)) {
  int i = 0, j = height;
  Row temp;
  Value pivot;
 
  pivot = predicate(matrix[height >> 1], width);
  do {
    while (predicate(matrix[i], width) > pivot) i++;
    while (pivot > predicate(matrix[j], width)) j--;
 
    if (i <= j) {
      temp = matrix[i];
      matrix[i] = matrix[j];
      matrix[j] = temp;
      i++; j--;
    }
  } while ( i<=j );
 
  if (j > 0) quickSort(matrix, j, width, predicate);
  if (height > i) quickSort(matrix + i, height - i, width, predicate);
}
 
void printMatrix(Matrix matrix, size_t height, size_t width,
  Value (*predicate)(Row, size_t)) {
  int i, j;
  for (i = 0; i < height; ++i) {
    printf("Row %3d | ", i);
    for (j = 0; j < width; ++j)
      printf("%4d", matrix[i][j]);
    printf(" | %5d\n", predicate(matrix[i], width));
  }
}
 
int main(int argc, char *argv[]) {
  srand(time(0));
  size_t width = 10;
  size_t height = 15;
  int i, j;
  Matrix matrix = (Matrix)malloc(sizeof(Row) * height);
  for (i = 0; i < height; ++i) {
    matrix[i] = (Row)malloc(sizeof(Value) * width);
    for(j = 0; j < width; ++j)
      matrix[i][j] = rand() % 101 - 50;
  }
  
  printMatrix(matrix, height, width, sumEvenNegatives);
  
  int columnWithZero = firstColumnWithZero(matrix, height, width);
  if (columnWithZero >= 0)
    printf("Number of first column with zero is %d.\n", columnWithZero);
  else
    printf("No zeroes in any column.\n");
 
  quickSort(matrix, height - 1, width, sumEvenNegatives);
 
  printf("\nSorted:\n");
  printMatrix(matrix, height, width, sumEvenNegatives);
  
  for (i = 0; i < height; ++i)
    free(matrix[i]);
  free(matrix);
  return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru