В двумерном массиве поменять местами определенные столбцы - C (СИ)

  1. Например массив: 1 2 3 8 4 5 6 8 7 1 0 7 9 0 2 3 выбираем поменять 1 и 3, но можно и другие, сделать так чтоб можно было выбирать.. результат: 3 2 1 8 6 5 4 8 0 1 7 7 2 0 9 3C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include <stdio.h> #include <windows.h> #include <time.h>   #define K 3     int main() {     int i,j,mass[K][K];     srand(time(NULL));     for(i=0;i<K;i++)     {       for(j=0;j<K;j++)       {         mass[i][j]=rand()%2;         printf("%2d",mass[i][j]);       }       printf("\n");     }     printf("\n");     ones(mass);     system("pause"); }


textual

Код:

include <stdio.h>
#include <windows.h>
#include <time.h>
 
#define K 3
 
 
int main()
{
    int i,j,mass[K][K], k, s,  n;
    srand(time(NULL));
    for(i=0;i<K;i++)
    {
      for(j=0;j<K;j++)
      {
        mass[i][j]=rand()%2;
        printf("%2d",mass[i][j]); 
        printf(" "); 
      }
      printf("\n");
    }
    printf("\n");
    printf("ГЉГ*êîé ñòîëáåö "); 
    scanf("%d", &k); 
    printf("\n"); 
    printf("C ГЄГ*ГЄГЁГ¬ Г*ГіГ¦Г*Г® ïîìåГ*ГїГІГј ìåñòГ*ìè? "); 
    scanf("%d", &s); 
    n=0; 
    for(i=0;i<K;i++) 
      { 
       n=mass[k][i]; 
       mass[k][i]=mass[s][i]; 
       mass[s][i]=n; 
       } 
    //âûâîäèì Г*Г* ГЅГЄГ°Г*Г* 
    for(i=0;i<K;i++) 
    { 
     for(j=0; j<K; j++)
      { 
       printf("%2d",mass[i][j]);
       printf(" "); 
       }
       printf("\n"); 
     }   
    printf("\n"); 
   // ones(mass);
    system("pause");
}


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

  1. Не могу нормально отсортировать элементы структуры с помощью быстрой сортировки. Программа просто, не прекращается, как будто цикл бесконечный. Не могу понять где ошибка. HELP!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 #include #include #include #include #include #include struct Product {     char name[15]; }; int N; struct Product A[100]; struct Product X[1]; int Check_Input() {     char buf[BUFSIZ];     char junk;     int Input;     bool ok = false;     while (!ok)     {         _textcolor(7);         fputs("Введите количество товара: ", stdout);         fflush(stdout);         if (fgets(buf, BUFSIZ, stdin) == NULL)         {             if (!ferror(stdin))             {                 fputs("Вход не доступен!\n", stderr);                 exit(EXIT_FAILURE);             }             else             {                 perror("stdin");                 clearerr(stdin);                 continue;             }         }         if (sscanf(buf, "%d %c\n", &Input, &junk) != 1)         {             _textcolor(4);             fputs("Неправильный ввод!\n", stderr);             continue;         }         if (Input <= 0 || Input > 99)         {             _textcolor(4);             fputs("Неправильный ввод!\n", stderr);             continue;         }         ok = true;     }     return Input; } void speed2_inc_dec1_flat1(int l, int r) {     int k=(r + l) / 2;  //находят  центральный элемент     printf("%d\n",k);     A[N+1]=A[k];     printf("%s\n",X[1].name);     int i = l;     int j = r;     while (i <= j)     {         while //(A[i].name[0] > X[1].name[0])             (strcmp(A[i].name,A[N+1].name)<0)             i++;         while //(A[i].name[0] < X[1].name[0])             (strcmp(A[i].name,A[N+1].name)>0)             j++;         if (i <= j)         {             A[N] = A[j];             A[j] = A[i];    //<----Обмен переменными             A[i] = A[N];             i++;             j--;         }     }     if (i < r)         speed2_inc_dec1_flat1(i, r);     if (l < j)         speed2_inc_dec1_flat1(l, j); } void Output(struct Product *array, int size) {     for(int i = 0; i < size; i++)     {         printf("%s\n", array[i].name);     } } void Input(struct Product *array, int size) {     for(int i = 0; i < size; i++)     {         printf("Введите элемент №%d: ", i+1);         scanf("%s", &array[i].name);     } } int main(int argc, char *argv[]) {     setlocale(LC_ALL, "ru");     system("cls");     N=Check_Input();     Input(A,N);     Output(A,N);     speed2_inc_dec1_flat1(0,N-1);     Output(A,N); }

  1. Добрый вечер! Не подскажите где ошибка? При запуске программы вылезает окно с ошибкой. Вроде часть где массив заполняется верна. Само задание: В заданном массиве A[N][N] найдите суммы элементов в каждой строке. Сформируйте одномерный массив S[N], содержащий полученные суммы, расположенные в порядке возрастания.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 #define _CRT_SECURE_NO_WARNINGS #include #include #include int main() {   int **a;  // указатель на массив   int n,sum ;   printf("Enter n: ");     scanf("%i", &n);    int i=0, j=0;     a = (int**)malloc(n * sizeof(int));   // Ввод элементов массива   for (i = 0; i

  1. Здравствуйте! Вопрос наверное крайне глупый, но выходит ошибка. Задача такова, что нужно считать все символы в массиве и переписать их в ином виде. Например первый массив "XXYYYGXX", во второй массив нужно прописать "2X3YG2X", то есть указать сколько раз символы повторились. так же в работе нужно использовать только указатели и только динамические массивы. Выходит нужен второй массив, куда будут переписываться измененные значения. Первый план, который пришел в голову: 1) Подсчитываем одинаковые подрядидущие символы (count) 2) как только символы перестали повторяться, переписываем во второй массив текущее количество count и текущий элемент 3) Обнуляем count и смещаем индекс второго массива на 1 4) Повторяем пункт 1C1 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 void input(char *arr, int *siz) //забиваем первый массив символами {   gets_s(arr, *siz); }   void dec(char *arr, char *arr_2, int *count) {   for (*arr; *arr != '\0'; *arr++)   {     if (*arr == *(arr + 1)) //если текущий элемент равен следующему     {       *count++;     }     if (*arr != *(arr + 1) && *arr == *(arr - 1)){ //если текущий элемент не равен следующему, НО равен предыдущему (таким образом мы не учитываем символы, которые не имеют пары)        char c = *count + '0'; //переводим счетчик в символьный тип, для дальнейшей записи.   //*********************************** //А вот здесь нужно сделать пункт 2) и 3), т.е. переписать значения во второй массив. Что у меня и не получается.... //***********************************     }     } }   void output(char *arr, char *arr_2) {   printf("%s\n", arr);   printf("%s", arr_2);   }   void main() {   int siz = 1024;   char *arr = (char*)malloc(siz*sizeof(char)); //выделяем память под динамический массив   int count = 0;   //int siz_2 = 1024;   //char *arr_2 = (char*)malloc(siz_2*sizeof(char));     input(arr, &siz);   dec(arr, arr_2, &count);   output(arr, arr_2);     free(arr); //освобождаем память   //free(arr_2);     system("pause"); }

  1. Что я делаю неверно? Вроде все должно работать, ан-нет, ругается.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #define N 9 #include void main() {     int i = 0, s[N], c = 0, k = 0;     for (i = 0; i < N; i++)     {         scanf_s("%d ", &s[i]);     }     for (i = 0; i < N / 2; i++)     {         c = s[i];         s[i] = s[N - i];         s[N - i] = c;     }     for (i = 0; i < N; i++)         printf("%d ", s[i]);     scanf_s("%d", &k); }

  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 #include #include #include   int main() {     srand(time(NULL));     int N;     printf("N=");     scanf("%u",&N);//%u     int *tab;     tab = (int *)malloc(sizeof(int) * N);        for(int i=0; imaximum)            {                maximum=tab[i];            }        }       printf("\n");     printf("Minimum %u",minimum);     printf("\n");     printf("Maximum %d",maximum);     return 0; }Заранее спасибо!

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

  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 #include #include #include #define n 4 #define m 5   int main() { int X[n][m]; int B[m]; int i,j,v; srand(time(0));   for (i=0; i 0 && *(*X+i*m+j)%5 == 0) B[j] += *(*X+i*m+j); } printf ("%3d",*(*X+i*n+j)); }Подскажите как исправить код (работа с указателями в двумерном массиве) Работает не правильно, буду благодарен за помощь) Указатели вообще не понимаю) не останьтесь равнодушными))

  1. C++1 2 3 4 5 6 7 8 9 10 11 12 13 // HW.cpp : Defines the entry point for the console application. //   #include "stdafx.h" #define MAXLINE 10   int _tmain(int argc, _TCHAR* argv[])   {     char s[2];     s[0] = 'p';     s[1] = '\n';     printf("%s", s); }Visual Studio 2008 Создаю массив char, заполняю элементами, но туда попадают лишние символы (во вложении), которые я "не заказывал". Откуда они? Возможно, стоит использовать другой компилятор?

  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 char** x_global_array; //Заполняется из файла size_t x_global_array_size;   void init()//Тут массив заполняется строками {     size_t stringf=0;     FILE *file_name;       file_name = fopen ("text.txt","r");     while(fscanf(file_name, "%*[^\n]%*c") != EOF)         stringf++;       x_global_array_size=stringf;     x_global_array = malloc(stringf* sizeof(char*) );       file_name = freopen ("text.txt","r",file_name);     do {         stringf--;         x_global_array[stringf] = malloc(128*sizeof(char));         fgets ((x_global_array[stringf]),128,file_name);         x_global_array[stringf][strlen(x_global_array[stringf]) - 1] = 0;     }while (stringf != 0);     fclose (file_name); }   void test(char* x, char* y, char* z) //функция которая должна вернуть указатели {     x=x_global_array[0];     y=x_global_array[1];     z=x_global_array[2];     puts(x); //тут все выдает правильно }   void main() {    char* x;    char* y;    char* z;    test (x, y ,z);    puts(x); //Тут какие то кракозябры }