Заполнить двумерный массив змейкой - C (СИ)

  1. C1 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 #include <stdio.h> #include <conio.h> #include <iostream> void main( ) { int i,j; int s,l; int n,m; setlocale(0,""); printf("\n введите количество строк:");scanf("%d",&n); printf("\n введите количество столбцов:");scanf("%d",&m); int a[99][99]; for (i=0;i<n;i++){     s=i*m;     for(j=0;j<m;j++)     {         if(i%2!=0)         {             s=s-1;             printf("%d ",s);         }         else         {             l=j+1;             printf("%d ",l);         }       }     printf("\n");   } getch();                                                               }Нужно заполнить двумерный массив змейкой 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15 но у меня почему то постоянно выводит 1 2 3 4 5((( помогите сделать


textual

Код к задаче: «Заполнить двумерный массив змейкой - C (СИ)»

void main( )
{
    int i,n,m;
    int a[99][99];
    
    setlocale(0,"");
    printf("ââåäèòå êîëè÷åñòâî ñòðîê:");scanf("%d",&n);
    printf("ââåäèòå êîëè÷åñòâî ñòîëáöîâ:");scanf("%d",&m);
    for (i=0;i<n*m;i++)
    {
        if(i%(2*m)<m)printf("%3d",i+1);
        else printf("%3d",(i/m+1)*m-i%m);
        if(!((i+1)%m)) printf("\n");
    }
    getch();                                                              
}

СДЕЛАЙТЕ РЕПОСТ

11   голосов, оценка 3.909 из 5



Похожие ответы
  1. Создать массив, заполнить 20 элементами, сложить и вывести на экран все кратные 3Добавлено через 4 минуты Помогите плиз

  1. Сформировать массив M, элементы которого mi = Cni , где: Cni = n! / i! (n - i)! , n = 20; i = 1,2,…, 5 Должно быть минимум две функции, первая - заполнение массива, вторая - вывод массива на экран.

  1. Дан массив размерности n. Заполнить массив случайными числами в диапазоне [-100;100]. Перевернуть массив: a[n-1]↔a[0], a[n-2]↔a[1] и т.д. Для работы с массивом использовать функцию. пример программыC1 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 // Обнулить в массиве отрицательные элементы #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; void func(int *a, int n) {     for (int i = 0; i < n; i++)         if (a[i] < 0) a[i] = 0; } int main() {     int *a;     int n;     srand(time(NULL));     printf("n= ");     scanf("%d", &n);     a = (int*)malloc(n*sizeof(int));     for (int i = 0; i

  1. C1 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 #include #include #include int main() {     setlocale(LC_ALL, "Russian");     int a[10][10];     printf ("Введите кол-во строк и столбцов не больше 10-ти\n");     int n, m;     printf ("Кол-во строк =");     scanf ("%d", &n);     printf ("Кол-во столбцов =");     scanf ("%d", &m);     int i, j;     for (i=0; i

  1. Вообщем есть задача считать файл в функции init(), а массивы строк получившиеся в итоге объявить так чтоб они были доступны глобально.C1 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 void init () {     size_t stringf;     FILE *file_name;       stringf=0;     file_name = fopen ("/home/test.txt","r");     while(fscanf(file_name, "%*[^\n]%*c") != EOF)         stringf++;       char text_array[(stringf+1)][128];       file_name = freopen ("/home/test.txt","r",file_name);     do {         stringf--;         fgets ((text_array[stringf]),128,file_name);     }while (stringf != 0);     fclose (file_name); }   int main() {    init();    printf ("%s",text_array[0]);    return 0; }Как объявить глобально text_array я ума не приложу, помогите пожалуйста.

  1. Доброго времени суток. Напишите программу, которая создает двумерный массив с 2 строками и 6 столбцами, рассчитайте значение функции x^2*tan(x) на интервале от -5 до 5 с шагом 2. В первую стоку массива занося значения х (от -5 до 5 с шагом 2), во вторую – решение функции x^2*tan(x) Неполучается никак. Спасибо

  1. Заполнить масив первыми n простых чисел Вроде сделал, но надо еще что б делитель увеличивался только до половины проверяемого числа. Не знаю куда приписать (i #include #define N 50   int main() { int i, num = 5, k = 2, mass[N]; mass[0] = {2}; mass[1] = {3};   for (i = 3; k < N; i+=2) {     if (i >= num ) {         mass[k] = num;         i = 3;         k++;         num+=2;     }     if (num%i == 0){         i = 5;         num += 2;     } } for (i = 0; i < N; i++)     printf("%d \t", mass[i]); return 0; }

  1. Создать квадратную матрицу целых чисел размером 9х9. В индивидуальных заданиях указано, какую обработку матрицы требуется выполнить. Если по условию задания матрицу следует заполнить случайными числами, рекомендуем выбирать эти числа из диапазона 0 - 99. Если по условию задания в матрицу следует записать ЛП - линейную последовательность чисел, имеется в виду последовательность: 1, 2, 3, ...

  1. Нужно создать 2 матрицы размером m,n и вектор B. Как сделать правильно через указатель?C1 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 /*   */     #include     int main() {     int m,n;     printf("Enter m ");     scanf("%f", m);       printf("Enter n ");     scanf("%f", n);       int *B = new int B[m];     int **A = new int  *(*(A + m) + n);     int **C = new int  *(*(C + m) + n);         for (int i = 0; i < m; ++i)         for(int j = 0; j < n; j++)     {         A[i][j] = new int[i][j];         C[i][j] = new int[i][j];     }     }

  1. Добрый день! В данном коде возможность добавления элементов (строки или столбца) в двумерный массив реализована посредством создания нового массива, копирования туда элементов из старого массива и добавления в необходимом месте новых элементов.C1 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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 #define _CRT_SECURE_NO_WARNINGS #define SIZE_OF_STRING 256 #include #include #include #include #include #include   bool is_String_Digit(char *Array); size_t input_Variables(void); void fill_Binary_Matrix(int **Binary_Matrix, int Amount_of_Elements); void show_Binary_Matrix(int *Binary_Matrix, int Amount_of_Elements, int Columns); int *adding_Elements(int *Binary_Matrix, int Strings, int Columns, int Choice); int select_Action(void);   int main() {     srand((int)time(NULL));     //-------------------------------------------------------------------------------- Создание и заполнение двумерного массива     puts("Enter amount of strings of array: ");     size_t variable_For_Strings = input_Variables();     //--------------------------------------------------------------------------------     puts("Enter amount of columns of array: ");     size_t variable_For_Columns = input_Variables();     //--------------------------------------------------------------------------------     int *binary_Matrix = (int *)malloc(sizeof(int) * (variable_For_Columns * variable_For_Strings));     fill_Binary_Matrix(&binary_Matrix, (variable_For_Columns * variable_For_Strings));     show_Binary_Matrix(binary_Matrix, (variable_For_Columns * variable_For_Strings), variable_For_Columns);     //-------------------------------------------------------------------------------- Добавление строк и стобцов путём уничтожения старого массива и создания нового     int choice = 0; //Переманная для выбора добавления строки или столбца     (1 == (choice = select_Action())) ? (variable_For_Strings++) : (variable_For_Columns++); // Вызываем функцию предлагающую сделать выбор, после чего, в зависимости от выбора, увеличиваем значение переменной хранящей количество стобцов, или строк, на единицу     binary_Matrix = adding_Elements(binary_Matrix, variable_For_Strings, variable_For_Columns, choice); // Собственно само добавление     show_Binary_Matrix(binary_Matrix, (variable_For_Columns * variable_For_Strings), variable_For_Columns);     puts("");     return 0; }   size_t input_Variables(void) {     char array[SIZE_OF_STRING] = { 0 };     size_t variable_For_Input_Variables = 0;     //--------------------------------------------------------------------------------     for (;;) {         fgets(array, SIZE_OF_STRING, stdin);         array[2] = '\0';         if (is_String_Digit(array)) {             variable_For_Input_Variables = atoi(array);             break;         }         else {             puts("W A R N I N G ! ! !\a\nIncorrect values!");             puts("Enter correct values: ");             continue;         }     }     //--------------------------------------------------------------------------------     return variable_For_Input_Variables; }   bool is_String_Digit(char *Array) {     if (!isdigit(Array[0])) {         return false;     }     for (int i = 0; (Array[i] != '\0') && (Array[i] != '\n'); i++) {         if (!isdigit(Array[i])) {             return false;         }     }     return true; }   void fill_Binary_Matrix(int **Binary_Matrix, int Amount_of_Elements) {     //--------------------------------------------------------------------------------     puts("Enter:\n\t1 - fill matrix only 0;\n\t2 - fill matrix random numbers.");     int choice = 0;     for (;;) {         choice = (int)input_Variables();         if ((choice < 1) || (choice > 2)) {             puts("W A R N I N G ! ! !\a\nIncorrect values!");             puts("Enter:\n\t1 - fill matrix only 0;\n\t2 - fill matrix random numbers.");             continue;         }         else break;     }     //--------------------------------------------------------------------------------     if (1 == choice) {         for (int i = 0; i < Amount_of_Elements; i++) {             (*Binary_Matrix)[i] = 0;         }     }     //--------------------------------------------------------------------------------     else {         for (int i = 0; i < Amount_of_Elements; i++) {             (*Binary_Matrix)[i] = 1 + rand() % 99;         }     }     //--------------------------------------------------------------------------------  }   void show_Binary_Matrix(int *Binary_Matrix, int Amount_of_Elements, int Columns) {     puts("-----------------------------------------------------------------------------");     for (int i = 1; i <= Amount_of_Elements; i++) {         printf("%-3d", Binary_Matrix[i-1]);         if ((0 == (i % Columns)) && (i > 2)) {             puts("");         }     } }   int select_Action(void) {     puts("Now you can add new string or new column in matrix.\nEnter: \n\t1 - you will create new string;\n\t2 - you will create new column.");     int choice = 0;     for (;;) {         choice = (int)input_Variables();         if ((choice < 1) || (choice > 2)) {             puts("W A R N I N G ! ! !\a\nIncorrect values!");             puts("Enter:\n\t1 - fill matrix only 0;\n\t2 - fill matrix random numbers.");             continue;         }         else break;     }     return (1 == choice) ? 1 : 2; }   int *adding_Elements(int *Binary_Matrix, int Strings, int Columns, int Choice) {     int *new_Binary_Matrix = NULL;     //--------------------------------------------------------------------------------     if (1 == Choice) {         int after_String = 0;         //-------------------------------------------------------------------------------- Проверка на превышение количества строк         for (;;) {             puts("Select the string after which you want to paste new string: ");             after_String = (int)input_Variables();             if ((after_String < 1) || (after_String > Strings)) {                 puts("W A R N I N G ! ! !\a\nIncorrect values!");                 continue;             }             else break;         }         //-------------------------------------------------------------------------------- Алгоритм добавления строки (Копируес старые эелементы в новую матрицу, на месте новой строки вставляем нули)         new_Binary_Matrix = (int *)malloc(sizeof(int) * (Strings * Columns));         for (int i = 0, j = 0, k = 0; i < (Strings * Columns); i++) {             //--------------------------------------------------------------------------------             if ((0 == (i % Columns)) && (i > 2)) {                 j++;             }             //--------------------------------------------------------------------------------             if (j != after_String) {                 new_Binary_Matrix[i] = Binary_Matrix[k];                 k++;             }             else {                 new_Binary_Matrix[i] = 0;             }         }     }     //--------------------------------------------------------------------------------     else {         int after_Column = 0;         //-------------------------------------------------------------------------------- Проверка на превышение количества стобцов         for (;;) {             puts("Select the column after which you want to paste new string: ");             after_Column = (int)input_Variables();             if ((after_Column < 1) || (after_Column > Strings)) {                 puts("W A R N I N G ! ! !\a\nIncorrect values!");                 continue;             }             else break;         }         //-------------------------------------------------------------------------------- Алгоритм добавления стобца (Копируес старые эелементы в новую матрицу, на месте нового столбца вставляем нули)         new_Binary_Matrix = (int *)malloc(sizeof(int) * (Strings * Columns));         for (int i = 0, j = 0, k = 0; i < (Strings * Columns); i++, j++) {             //--------------------------------------------------------------------------------             if ((0 == (i % Columns)) && (i > 2)) {                 j = 0;             }             //--------------------------------------------------------------------------------             if (j != after_Column) {                 new_Binary_Matrix[i] = Binary_Matrix[k];                 k++;             }             else {                 new_Binary_Matrix[i] = 0;             }         }     }     free(Binary_Matrix);     //--------------------------------------------------------------------------------     return new_Binary_Matrix; }Вопрос, возможно ли сделать эту операцию просто изменив старый массив. Если учесть, что массив в памяти занимает последовательное количество ячеек, которые выделяются при его создании, то это означает, что нужно выделить кусок памяти, на который нужно перенести указатель из определённого элемента старого массива, а также из нового куска памяти нужно сделать указатель из последнего элемента на старый массив. Это сложно, и я не знаю, какими средствами Си это вообще можно сделать. Собственно, имеет ли это вообще некий смысл, или предложенный предыдущий вариант является оптимальным?