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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2008, 17:57   #1
TurboPaskal
Пользователь
 
Аватар для TurboPaskal
 
Регистрация: 13.04.2008
Сообщений: 14
По умолчанию ПОМОГИТЕ В С++!

Вот дам вам 3 задачи помогите пожалуста решыть, учитель задал эти лабы,а я немогу некак втупится в них, кто чем может помогите.
Вот текст задач:
1)Підрахувати кількість нульових елементів у матрях А(N, M) і B(M, N).
Підрахунок організувати як функцію.
2)Екран - судина з рідиною, яка кипить. На дні у випадковій точці утворюєтся булька;при русі вгору вона зростає, а на поверхні - лопаєтся.
3)Заповнити екран рисунком паркету "ялинка" з прямокутних дошок заданого розмыру.



заранье спасибо
TurboPaskal вне форума Ответить с цитированием
Старый 13.04.2008, 18:46   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Первая задача:

Код:

#include <conio>
#include <stdlib>
#include <iostream>

using std::cout;
using std::cin;

int calc(int **, int, int);

int main(int argc, char* argv[])
{

        int **a, **b;   //будущие матрицы
        int m, n;       //размерность
        int an=0, bn=0; //количество нулей
        cout<<"Enter number of lines:\n";
        cin>>m;
        cout<<"Enter number of columns\n";
        cin>>n;

        a=new int*[m];                    //выделяем память под первую матрицу
        for(int i=0; i<m; i++)
                a[i]=new int[n];

        b=new int *[n];                    //выделяем память под вторую матрицу
        for(int i=0; i<n; i++)
                b[i]=new int[m];

        for(int i=0; i<m; i++)             //забиваем первую матрицу нулями и единицами
        for(int j=0; j<n; j++)
        {
                a[i][j]=0+rand()%2;
        }

        for(int i=0; i<n; i++)
        for(int j=0; j<m; j++)              //забиваем вторую матрицу нулями и единицами
        {
                b[i][j]=0+rand()%2;
        }

        for(int i=0; i<m; i++)               //выводим первую матрицу (для наглядности)
        {
                for(int j=0; j<n; j++)
                {
                        cout<<a[i][j];
                        cout<<" ";
                }
                cout<<"\n";
        }

        cout<<"\n";

        for(int i=0; i<n; i++)
        {
                for(int j=0; j<m; j++)      //выводим вторую матрицу (для наглядности)
                {
                        cout<<b[i][j];
                        cout<<" ";
                }
                cout<<"\n";
        }
        an=calc(a,m,n);                       //вызываем функцию подсчета нулей для первой матрицы
        cout<<"Number of zeroes in the first matrix "<<an<<"\n";

        bn=calc(b,n,m);                       //вызываем функцию подсчета нулей для второй матрицы
        cout<<"Number of zeroes in the second matrix "<<bn<<"\n";

        getch();
        return 0;
}

int calc(int **k, int l, int c)
{
        int zeros=0;            //количество нулей

        for(int i=0; i<l; i++)
        for(int j=0; j<c; j++)
        {                                   //если элемент равен 0 то увеличиваем счетчик нулей
                if(k[i][j]==0)
                        zeros++;

        }
        return zeros;                           //возвращаем количество нулей
}
Остальные две сам думай, халявщик
MaTBeu вне форума Ответить с цитированием
Старый 13.04.2008, 19:06   #3
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Первая.
Код:
#include<iostream>
#include<Ctime>

using std::cout;
using std::endl;

void fill(int**a, int n, int m);
void print(int**a, int n, int m);
int countZero(int **a, int n, int m);


void main()
{
	srand((unsigned int)time(NULL));
	const int n = 5, m = 8;

	int **A = new int *[n];
	for(int i = 0; i < n; i++)
		A[i] = new int[m];

	int **B = new int *[m];
	for(int i = 0; i < m; i++)
		B[i] = new int[n];

	fill(A,n,m);
	fill(B,m,n);

	cout<<"Matrix A"<<endl;
	print(A,n,m);
	cout<<"Matrix B"<<endl;
	print(B,m,n);

	cout<<countZero(A, n, m)<<endl;
	cout<<countZero(B, m, n)<<endl;

}

void fill(int **a, int n, int m)
{
	for(int i = 0; i < n; i++)
	{
	   for(int j = 0; j < m; j++)
			a[i][j] = rand()%10;
	}
}

void print(int **a, int n, int m)
{
	for(int i = 0; i < n; i++)
	{
	   for(int j = 0; j < m; j++)
			cout<<a[i][j]<<" ";
	   cout<<endl;
	}
	cout<<endl;
}

int countZero(int **a, int n, int m)
{
	int count = 0;
	for(int i = 0; i < n; i++)
	{
		for(int j = 0; j < m; j++)
		{
			if(a[i][j] == 0)
				count++;
		}
	}
	return count;
}
Кажись, опоздала чуток...
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 13.04.2008 в 19:09.
ACE Valery вне форума Ответить с цитированием
Старый 14.04.2008, 12:48   #4
TurboPaskal
Пользователь
 
Аватар для TurboPaskal
 
Регистрация: 13.04.2008
Сообщений: 14
По умолчанию

Незнаю в чем причина, но выдает 15 ошыбок.
Нас например преподаватель в коледже учил писать не: count a print - но это одно и тож.
Может из-за того что посли count ставлятса "<<".
Хотя я неуверин, ище плохо знаю только начали учить С++ и сразу лабы тяжолые пошли.
Подскажите что делать?
Пищет типо неможет открыть модули .
TurboPaskal вне форума Ответить с цитированием
Старый 14.04.2008, 13:26   #5
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

А не проще ли чем тут просить, самому купить книжку, попросить разъяснение у преподователя? Как в старые добрые времена когда форымы были редкостью.
merax вне форума Ответить с цитированием
Старый 14.04.2008, 20:20   #6
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Листинг ошибок в студию! Мало ли, может у тебя компилятор не настроен...

merax +1.
Если хочешь разобраться в программировании лучше сам учи и практикуйся, нежели здесь спрашивать. Но если ты стоишь в тупике, и никаких домыслов по поводу решения задачи нет, то можно обратиться к знающим людям.

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

Последний раз редактировалось MaTBeu; 14.04.2008 в 20:29.
MaTBeu вне форума Ответить с цитированием
Старый 14.04.2008, 20:51   #7
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Цитата:
Сообщение от TurboPaskal Посмотреть сообщение
Незнаю в чем причина, но выдает 15 ошыбок.
Нас например преподаватель в коледже учил писать не: count a print - но это одно и тож.
Может из-за того что посли count ставлятса "<<"..
Во-первых, перед << пишется не count, а cout. И препод вас учил писать не print, а скорее всего, printf.
Во-вторых, скажите, какой у вас компилятор(или какой вижуал студией пользуетесь).
В-третьих, если пишите об ошибках, то потрудитесь выложить текст ошибки.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 17.04.2008, 08:28   #8
TurboPaskal
Пользователь
 
Аватар для TurboPaskal
 
Регистрация: 13.04.2008
Сообщений: 14
По умолчанию

Вот текст ошыбок:
Error :Unable to open include file 'IOSTREAM'
Error :Unable to open include file 'CTIME'
Error :Declaration syntax error
Error :Variable 'using' is initialized more than once
Error :Declaration syntax error
Error :Function 'srand' should have a prototype
Error :Function 'time' should have a prototype
Error :Undefind symbol 'NULL'
Error :Multiple declaration for 'i'
Error :Undefind symbol 'o'
Error :Undefind symbol 'count'
Error :Undefind symbol 'endl'
Error :Undefind symbol 'cont'
Error :Function 'rand' should have a prototype
Error : ) expected
TurboPaskal вне форума Ответить с цитированием
Старый 17.04.2008, 08:56   #9
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
По умолчанию

Нужно написать, тогда: iostream.h, ctime.h
Переменная using и переменная i объявлены где-то по два раза.
Error :Function 'srand' should have a prototype Error :Function 'time' should have a prototype, Error :Function 'rand' should have a prototype - эти ошибки возникают из-за того, что не подключен ctime.h
"о" - это скорее всего должен быть нуль, а написана буква.
Ну и естественно, как уже сказали, не count, а cout
Error :Undefind symbol 'endl'
Error :Undefind symbol 'cont' - тут, 'endl' непонятно компилятору, из-за того, что не подключен iostream.h, а 'cont' - это опять же, видимо, неверное написанный cout, но и верное бы написание не помогло, из-за той же причины.
Error : ) expected - здесь просто пропущена скобка, нужно внимательно просмотреть строку, на которую указывает компилятор.
oleg kutkov вне форума Ответить с цитированием
Старый 17.04.2008, 10:37   #10
TurboPaskal
Пользователь
 
Аватар для TurboPaskal
 
Регистрация: 13.04.2008
Сообщений: 14
По умолчанию

немного исправил, но всеровно есть немного вот:
Изображения
Тип файла: jpg Безымянный.jpg (21.8 Кб, 156 просмотров)
TurboPaskal вне форума Ответить с цитированием
Ответ


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