Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2016, 22:40   #1
Yulia24*
Пользователь
 
Регистрация: 16.10.2016
Сообщений: 13
По умолчанию [Си]: В каждом столбце двумерного массива поменять местами первый отрицательный элемент и последний нулевой. Помогите найти ошибку

мне дана задача: В каждом столбце двумерного массива поменять местами первый отрицательный элемент и последний нулевой. Я написала код, но он не хочет рабоать, я не понимаю почему, найдите пожалуйста ошибку.
Код:
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,x,y,q,d,f,g,h,z;      // i j - индексы массива mas[0][2]
printf("Vvedite zna4enie strok=");
scanf("%d",&x);
 while(x<=0)     // на случай, если пользователь введет отрицательное количество строк
    {
        printf("error, kol-vo elementov >0 ");
        scanf("%d", &x);
    }
printf("\nVvedite zna4enie stolbcov=");
scanf("%d",&y);
 while(y<=0)     // на случай, если пользователь введет отрицательное количество столбцов
    {
        printf("error, kol-vo elementov >0 ");
        scanf("%d", &y);
    }
int M[x][y];
for(i=0;i<x;i++)     //пока циклы выполняются, прога будет запрашивать значения элемента
{
for(j=0;j<y;j++)
{
printf("\nVvedite zna4enie elementa [%d][%d]=",i,j);
scanf("%d",&M[i][j]);
}
}
for (i=0,q=0;;i++);
{
    if (q=y)
    {
        break;
    }
    if(M[i][q]<0)
    {
        d=i;
        f=q;
        return 0;
    }
    if (M[i][q]==0)
    {
        g=i;
        h=q;
    }
    if(i==x-1)
    {
        z=M[d][f];
        M[d][f]=M[g][h];
        M[g][h]=z;
        i=0;
        q++;
    }
}
for(i=0;i<y;i++)   // пока циклы выполняются,  выводится на экран весь получившийся массив
{
for(j=0;j<x;j++)
{
printf("[%d][%d]=%d\n",i,j,M[i][j]);
}
}
return 0;
}

Последний раз редактировалось Вадим Мошев; 20.11.2016 в 00:30.
Yulia24* вне форума Ответить с цитированием
Старый 20.11.2016, 00:29   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Первое, что в глаза бросилось
Цитата:
Код:
 if (q=y)
    {
        break;
    }
может, q == y ?
Вадим Мошев вне форума Ответить с цитированием
Старый 20.11.2016, 01:21   #3
Yulia24*
Пользователь
 
Регистрация: 16.10.2016
Сообщений: 13
По умолчанию

да точно, но программа после исправления все равно не работает.
Yulia24* вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица. Задана матрица X[N,N], где N<=15. В каждом столбце матрицы поменять местами минимальный элемент и элемент главной диагона _Marchel_ Паскаль, Turbo Pascal, PascalABC.NET 5 28.11.2015 16:23
В каждом столбце первый элемент поменять с последним элементом. _viktorija_ Паскаль, Turbo Pascal, PascalABC.NET 0 21.02.2014 22:13
Преобразовать массив: в каждом столбце поменять местами максимальный и первый элементы AFI Паскаль, Turbo Pascal, PascalABC.NET 5 17.05.2013 05:40
Turbo Pascal. В каждом нечетном по порядку слове поменять местами первый и последний символы cdc Помощь студентам 0 08.11.2012 14:21
В каджом столбце массива А поменять местами первый отрицательный элемент с последним элементом столбца. Carmen Помощь студентам 1 31.05.2011 19:41