Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Простые функции


Автор: 18652tasha 21.1.2009, 00:56
Выполнить упражнение оформив каждый пункт задания в виде функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.
Код

//---------------------------------------------------------------------------
#pragma hdrstop
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
//---------------------------------------------------------------------------
#pragma argsused
void main()
{
int flag;
int a[8][8] =  { { 1, 2, 3, 4, 5, 6, 7, 8 },
                 { 1,-2, 3, 4, 5, 6, 7 ,8 },
                 { 6, 7, 4, 4,-5, 1, 2, 3 },
                 { 2, 4, 5, 6, 1, 2, 1, 8 },
                 { 9, 2, 3, 6, 4, 1, 0, 1 },
                 { 2, 1, 3, 7, 5, 8, 4,-4 },
                 { 7, 7, 2, 1, 0, 4, 5, 2 },
                 { 3, 3, 4, 2, 1, 4, 2,-1 } };

   const int n=8;
    cout<<"\nIshodna matriza a[i][j]:\n";
     for (int i=0; i<n; ++i)
     {
        for (int j=0; j<n; ++j)
           cout<<a[i][j]<<" ";
        cout<<"\n";
     }
    for (int i=0; i<n; ++i)
    {
       bool flag = true;
       for (int j=0; j<n && flag; ++j) flag = (a[i][j] == a[j][i]);
       if (flag) printf ("%d stroka ravna %d stolbcu \n",i,i);
    }
    for (int i=0; i<n; ++i)
    {
       bool flag = false;
       for (int j=0; j<n && !flag; ++j)  flag = (a[i][j] < 0);
       if (!flag) continue;
       int sum =0;
       for (int j=0; j<n; ++j)  sum+= a[i][j];
       printf ("summa otric.el. stroki %d  ravna %d \n",i,sum);
    }
getch();
     }

помогите... smile 

Автор: mes 21.1.2009, 01:02
Цитата(18652tasha @  20.1.2009,  23:56 Найти цитируемый пост)
помогите... smile  

а чего не получается то ?
У тя весь код логически по функциям разделен. Просто оформляшь каждый блок for  в виде функции и передаешь туда указатель на массив и размерность.
а потом улучшаешь код путем выноса printf и другой не нужной информации за пределы функции.

Автор: 18652tasha 21.1.2009, 01:08
кхм, я до сего момента о функциях редко слышала, чтоб его это задание, я думала все с ним, так нет нашла в своем варианте еще эту приписку про ф-ции, а уже завтра экзамен...

Автор: mes 21.1.2009, 01:40
Цитата(18652tasha @  21.1.2009,  00:08 Найти цитируемый пост)
кхм, я до сего момента о функциях редко слышала, чтоб его это задание, я думала все с ним, так нет нашла в своем варианте еще эту приписку про ф-ции, а уже завтра экзамен... 

надо бы чаще уроки посещать )

Добавлено через 10 минут и 20 секунд
вот примитивное разбиение на функции, но думаю на текущем этапе будет тебе достаточно :
Код

void f1 (int **a, int n) // так как матрица квадратная рамерность одна
{
     for (int i=0; i<n; ++i)
     {
        for (int j=0; j<n; ++j)
           cout<<a[i][j]<<" ";
        cout<<"\n";
     }
}

void  f2  (int **a, int n)
{
    for (int i=0; i<n; ++i)
    {
       bool flag = true;
       for (int j=0; j<n && flag; ++j) flag = (a[i][j] == a[j][i]);
       if (flag) printf ("%d stroka ravna %d stolbcu \n",i,i);
    }
}

void f3  (int **a, int n)
{
    for (int i=0; i<n; ++i)
    {
       bool flag = false;
       for (int j=0; j<n && !flag; ++j)  flag = (a[i][j] < 0);
       if (!flag) continue;
       int sum =0;
       for (int j=0; j<n; ++j)  sum+= a[i][j];
       printf ("summa otric.el. stroki %d  ravna %d \n",i,sum);
    }
}
int main()
{
  int ** a;
  int n = 8;
// тут динамическое создание массива :
//

 f1(a,n);
 f2(a,n);
 f3(a,n);

// тут удаление массива
getch();
}

название для функций придумай самостоятельно ...

Автор: 18652tasha 21.1.2009, 01:54
нам вообще С не преподавали, препод дал каждому вариант с задачей и все. Делайте сами. Я ходила пару раз, но какой толк- препод куда нидь уйдет и все, а толкового от него ответа не дождешься. Вот так вот.

Автор: mes 21.1.2009, 01:57
Цитата(18652tasha @  21.1.2009,  00:54 Найти цитируемый пост)
нам вообще С не преподавали

а какой язык преподавали ? 

Автор: 18652tasha 21.1.2009, 02:08
Образно выражаясь, нас не обучали, препод сказал можете не ходить на занятия (а в конце семестра все нужно сдать на С или С++ или на каком то он еще говорил языке)- мы все коллективно не ходили на технологию программирования. А так в прошлом году был Delphi.

Автор: mes 21.1.2009, 02:13
Цитата(18652tasha @  21.1.2009,  01:08 Найти цитируемый пост)
Образно выражаясь, нас не обучали, препод сказал можете не ходить на занятия - мы все коллективно не ходили на технологию программирования. 

без комментариев..

Автор: Kallikanzarid 21.1.2009, 07:12
18652tasha, надо сказать, ты понимаешь больше, чем большинство идиотов-"штудентов", которые тут просят помочь. Еще бы инициативу: кодинг - это такая вещь, которой проще научиться в 13 лет, программируя крестики-нолики, чем посещая лекции.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)