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

Нужно найти в массиве элемент и заменить его на другой - C++

Восстановить пароль Регистрация
 
lj23lj
1 / 1 / 0
Регистрация: 15.11.2011
Сообщений: 34
23.04.2012, 23:01     Нужно найти в массиве элемент и заменить его на другой #1
задание: есть двумерный массив хранящий информацию о проданных билетах в кинотеатр. количество рядов в
кинотеатре-36, количество мест в одном ряду-80.если место проданно, то ячейка заполнена 1,
если не проданно 0. составить программу продажи билетов в кинотеатр. Если место нашлось, то переволим его в состояние проданное и предлагаем продолжить ввод или выйти.
Осужествить при помощи двух функций.
Мой план: Заполнили матрицу 36х80 рандомно числами 1 и 0. Потом передали эту матрицу в другую функцию (func) и там просим пользователя ввести ряд и место. Если оно свободно, то пишем "место есть" и продаём его. если его там нет, то или повторяем ввод или выходим из программы.
то что не работает: матрица первоначальная заполняется. Но со второй функции начинается беда.
мой код:
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
// bilety.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
const int r=36, m=80,i=0,j=0;
int main()
{
    setlocale(LC_CTYPE, "Russian"); 
        
    int arr [r][m]={0};
    srand(time(0));
    for (int i=0; i<r;i++)
    {
        for (int j=0; j<m;j++)
        {
            arr[j]=rand()%2;
            cout<<arr[i][j];
        }
        cout<<endl;
        
    }
 
    
}
int func (int arr[m], int r,int m)
{
    int r2=0,m2=0,z=0,count=1;
while (z!=-1)
{
count++;
 
    cout<<"Введите ряд и место: "<<endl;
    cin>>r2>>m2>>"\n";
        if (arr[r2][m2]==0)
        {
            cout<<"Билет есть", arr[r2][m2]=1;
        }
        
    else cout<<"Билета нет", cout<<"Закончить ввод?"<<endl;
    cin>>z;
        
}


подскажите Пожалуйста что нужно исправить?Заранее огромнейшее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2012, 23:01     Нужно найти в массиве элемент и заменить его на другой
Посмотрите здесь:

C++ в матрице К(7,7) найти минимальный элемент и заменить его на значение среднего
C++ найти максимальный элемент в массиве и удалить его
C++ В каждой строке матрицы найти максимальный элемент и заменить его на противоположный
C++ Найти наименьший элемент 3-го столбца, заменить его на среднее арифметическое
C++ Найти первый максимальный элемент массива и заменить его нулём
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
23.04.2012, 23:10     Нужно найти в массиве элемент и заменить его на другой #2
Вообще если отбросить ошибки то у тя чо то не так в самой логике программы а так вот исправил(работает - запускается но не правильно)
C++ (Qt)
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
const int r=36, m=80,i=0,j=0;
int main()
{
setlocale(LC_CTYPE, "Russian");
 
int arr [r][m]={0};
srand(time(0));
 for (int i=0; i<r;i++)
 {
  for (int j=0; j<m;j++)
  {
   arr[i][j]=rand()%2;
   cout<<arr[i][j];
   }
  cout<<endl;
 }
 
 
}
int func (int arr[m][r], int r,int m) //Г’ГіГІ áûëГ* îøèáî÷êГ*
{
 int r2=0,m2=0,z=0,count=1;
 while (z!=-1)
  {
   count++;
   cout<<"Ââåäèòå ðÿä ГЁ ìåñòî: "<<endl;
   cin>>r2>>m2; //Г’ГіГІ áûëГ* îøèáî÷êГ*
 
    if (arr[r2][m2]==0){
     cout<<"Áèëåò ГҐГ±ГІГј";
     arr[r2][m2]=1;
    }
 
else cout<<"ÁèëåòГ* Г*ГҐГІ", cout<<"Г‡Г*ГЄГ®Г*Г·ГЁГІГј ââîä?"<<endl;
cin>>z;
 
}
} //Г’ГіГІ áûëГ* îøèáî÷êГ*
lj23lj
1 / 1 / 0
Регистрация: 15.11.2011
Сообщений: 34
23.04.2012, 23:21  [ТС]     Нужно найти в массиве элемент и заменить его на другой #3
cactus09 , спасибо.

А в чём может быть ошибка построения программы тогда?

а-то много чего пробовал изменять...не выходит. И да, в коде забыл добавить return, т.к ф-ия должна же чего-то выводить......
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
23.04.2012, 23:25     Нужно найти в массиве элемент и заменить его на другой #4
lj23lj, return 0; говорит системе то, что програма работала и завершила свои действия без ошибок так что особо это повлиять не может
lj23lj
1 / 1 / 0
Регистрация: 15.11.2011
Сообщений: 34
23.04.2012, 23:36  [ТС]     Нужно найти в массиве элемент и заменить его на другой #5
ой, нужно вернуть массив изменённый. мы ведь его изменили, если нашлось это. то надо передать это изменение в функцию main.
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
23.04.2012, 23:37     Нужно найти в массиве элемент и заменить его на другой #6
Вот переделал - ты просто забыл вызвать func
C++ (Qt)
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
const int r=36, m=80,i=0,j=0;
 
int func (int arr[r][m])
{
 int r2=0,m2=0,count=1;
 bool z=true;
 while (z)
  {
   count++;
   cout<<"Ââåäèòå ðÿä ГЁ ìåñòî: "<<endl;
   cin>>r2>>m2; 
 
    if (arr[r2][m2]==0){
     cout<<"Áèëåò ГҐГ±ГІГј";
     arr[r2][m2]=1;
    }
 
else {cout<<"ÁèëåòГ* Г*ГҐГІ", cout<<"Г‡Г*ГЄГ®Г*Г·ГЁГІГј ââîä?"<<endl;
      cin>>z;}
 
}
} 
 
 
int main()
{
setlocale(LC_CTYPE, "Russian");
 
int arr [r][m]={0};
srand(time(0));
 for (int i=0; i<r;i++)
 {
  for (int j=0; j<m;j++)
  {
   arr[i][j]=rand()%2;
   cout<<arr[i][j];
   }
  cout<<endl;
 }
 
func(arr);
 
 system("PAUSE");
}
Yandex
Объявления
23.04.2012, 23:37     Нужно найти в массиве элемент и заменить его на другой
Ответ Создать тему
Опции темы

Текущее время: 14:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru