• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Матрицы

  • Автор темы Cleaner
  • Дата начала
C

Cleaner

Дана матрица размером 5х4. Поменять местами первую строку и строчку, в которой находиться нулевой элемент.
Написал программу, но как-то выглядит слишком ёмко:
#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
int A[j], i, j, a, b, c, d;
for(i=0;i<=4;i++)
for(j=0;j<=3;j++)
{
cout<<"A["<<i<<"]"<<"["<<j>>"]";
cin>>A[j];
}
A[0][0]=a; A[0][1]=b; A[0][2]=c; A[0][3]=d;
if(A[j]==0)
{
A[0][0]=A[0]; A[0][1]=A[1]; A[0][2]=A[2]; A[0][3]=A[3];
A[0]=a; A[1]=b; A[2]=c; A[3]=d;
break;
}
for(i=0;i<=4;i++)
{cout<<endl;
for(j=0;j<=3;j++)
{
cout<<A[j]<<" ";
}
cout<<endl;
}
}
Извините что без подсветки. ещё не освоил
 
R

rrrFer

сам программу писал?

Добавлено:

вот тут программа уже должна сломаться, ты создаешь массив в i строк и j столбцов. В i и j на этот момент находится мусор

Добавлено: вот эта строчка:
if(A[j]==0)
расположена после цикла, в этот момент i = 5, j = 4
если ты хотел создать массив из 5 строк и 4 столбцов - то A[5][4] находится за пределами массива (индексация с нуля)
 
R

rrrFer

чуть поправил твой код (не проверял и даже не запускал {возможны опечатки}).
Код:
#include <iostream>
int main() {
const int n = 5, m = 4;
int a[n][m];

for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) {
std::cout << "A[" << i << "]" << "[" << j >> "]";
std::cin >> a[i][j];
}

for (int j, t, i = 0; i < n; i++) {
for (j = 0; j < m; j++)
if (0 == a[i][j])
break;
if (j != m) {
for (j = 0; j < m; j++) {
t = a[i][j];
a[i][j] = a[0][j];
a[0][j] = t;
}
break;
}
}

for (int i = 0; i < n; i++) {
std::cout << std::endl;
for (int j = 0; j < m; j++)
std::cout << a[i][j] << " ";
std::cout << std::endl;
}
}
 
R

rrrFer

Извините что без подсветки. ещё не освоил
да ниче страшного, пиши и дальше без подсветки, она на этом форуме не работает (временно, но уже давно сломалась).
ЗЫ. Чтобы увидеть код, обрамленный тегами кода обнови страницу (у меня в FF тока так работает)

Добавлено:
мы заметили
Раньше на паскале работал
и это тоже заметно )
 
C

Cleaner

Да я понял спасибо) Чуть-чуть тупанул. В одномерных же массивах я подобное делал. Я не мог сообразить как поменять строки местами...

Добавлено: Да я понял спасибо) Чуть-чуть тупанул. В одномерных же массивах я подобное делал в начале. Я не мог сообразить как поменять строки местами...
 
C

Cleaner

кстати. Я возможно и дальше буду здесь находится и в будущем буду решать более сложные задачи. проблема в том что у меня нет электронного кошелька. можно ли просто за помощь ложить деньги на телефон и т.п. Потому что обязательно возникнут вопросы в ходе работы

Добавлено: помощь должна оплачиваться)))
 
R

rrrFer

платная помощь тут в отдельном разделе, но чаще всего помогают даром если видят что ты четсно пытался решить что-то самостоятельно )
 
C

Cleaner

А если ты пытался, но у тебя почти ничего не получилось и выкладывать, то что ты написал не имеет смысла?


Добавлено: А если ты пытался, но у тебя почти ничего не получилось и выкладывать, то что ты написал не имеет смысла?
 
R

rrrFer

link removed -это платный раздел со всякими школьными задачами )

Добавлено:
А если ты пытался, но у тебя почти ничего не получилось и выкладывать, то что ты написал не имеет смысла?
не бывает чтоб совсем ничего не получилось.

Ну например из последних тем: https://codeby.net/threads/49739.html

Дана символьная строка. Получить новую строку, взяв из исходной слово перед первым знаком вопроса. Если знак вопроса отсутствует, то вывести соответствующее сообщение

Я думаю он мог бы одним циклом в 2 строки найти позицию знака вопроса в строке.
Мог бы обнаружить что знака вопроса нет и вывести сообщение.
Ну и мог бы пройтись от знака вопроса по массиву к началу строки до первого пробела (чтобы выделить слово).

Задача бы решилась, но он даже не пытался (и не хочет), поэтому сразу пишет в платный раздел.
 
C

Cleaner

for (int j, t, i = 0; i < n; i++)
for (int i = 0; i < n; i++)
В этих строках пишет что ошибка. "Multiple declaration for'i'. Никак не могу разобраться( Даже переводчик не помогает(

Добавлено: for (int j, t, i = 0; i < n; i++)
for (int i = 0; i < n; i++)
В этих строках пишет что ошибка. "Multiple declaration for'i'. Никак не могу разобраться( Даже переводчик не помогает(

Добавлено: Да ты прав) Я решал подобное... И ещё буду решать.... хочу за границу поехать... Нужно попытаться) Паскаль не понадобился, перешёл поэтому на С++
 
R

rrrFer

В этих строках пишет что ошибка. "Multiple declaration for'i'. Никак не могу разобраться( Даже переводчик не помогает(
древний компилятор используешь.

Он тебе говорит что ты объявлять переменную i, которая уже объявлена.

Добавлено:
Код:
#include <iostream>
int main() {
const int n = 5, m = 4;
int a[n][m];
int j, t, i;

for (i = 0; i < n; i++)
for (j = 0; j < m; j++) {
std::cout << "A[" << i << "]" << "[" << j >> "]";
std::cin >> a[i][j];
}

for (j, t, i = 0; i < n; i++) {
for (j = 0; j < m; j++)
if (0 == a[i][j])
break;
if (j != m) {
for (j = 0; j < m; j++) {
t = a[i][j];
a[i][j] = a[0][j];
a[0][j] = t;
}
break;
}
}

for (i = 0; i < n; i++) {
std::cout << std::endl;
for (j = 0; j < m; j++)
std::cout << a[i][j] << " ";
std::cout << std::endl;
}
}

Добавлено: если решаешь задачи для себя - в аську постучи, скину ченить интересное )
еще можешь олимпиадные порешать типа вот этих: , тоже полезно и интересно.
 
C

Cleaner

Спасибо) У меня уже есть этот сайт) В свободное время захожу туда и нахожу что-нить интересненькое. Не обессудь, аськой не пользуюсь...

Добавлено: Спасибо) У меня уже есть этот сайт) В свободное время захожу туда и нахожу что-нить интересненькое. Не обессудь, аськой не пользуюсь...

Добавлено: Ооо... Я смотрю ты у меня уже в друзьях) У меня тут намечается ещё одна задачка, но пока ещё попотею сам над ней, если что обращусь... и откровенно скажу - Я не люблю оставаться в долгу... Нууу ты понимаешь меня)))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!