Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Visual C++] матрица и функции пользователя, Помогите, пожалуйста с функции пользоват 
:(
    Опции темы
nastyaaa
Дата 31.3.2014, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 31.3.2014

Репутация: нет
Всего: нет



Нужно  разработать программу для работы с двумя матрицами А [4х4] и В [4х4]. Реализовать функции пользователя: ввод с клавиатуры значений матриц, вывод на экран, умножение матриц, поиск в матрице числа, заданного с клавиатуры. У меня получилось сделать  почти все, только не могу разобраться, как сделать функции пользователя так чтобы все работало вместе.
Вот  что у меня получилось.  Помогите, пожалуйста. smile 
1)
Код

#include <stdio.h>
#include <conio.h>
#define N 4
void main()
{
 int a[N][N];
 int b[N][N];
 int c[N][N];
 int i,j;
 int n,m;
 printf("vvdedite matricu%ix%i\n",N,N);
 for (i=0; i<N; i++)
 {
  printf("element %i-ryadka:\n",i+1);
  for (j=0; j<N; j++)
  {
   scanf("%i", &a[i][j]);
  }
 }
 printf("\n persha matrica \n");
 for(i=0; i<N; i++)
 {
  for(j=0; j<N; j++)
  {
   printf("%4i",a[i][j]);
  }
  printf("\n");
 }
 printf("vvdedite matricu%ix%i\n",N,N);
 for (j=0; j<N; j++)
 {
  printf("element %i-ryadka:\n",j+1);
  for (i=0; i<N; i++)
  {
   scanf("%i", &b[j][i]);
  }
 }
 printf("\n druga matrica\n");
 for(j=0; j<N; j++)
 {
  for(i=0; i<N; i++)
  {
   printf("%4i",b[j][i]);
  }
  printf("\n");
 }
 for (i=0; i<N; i++)
  for (j=0; j<N; j++)
   c[i][j]=0;
 printf("\n mnojennya matric\n");
 for(i=0;i<N; i++)
 {
  for(j=0; j<N; j++)
  {
   for(m=0; m<N; m++)
   {
    c[i][j]+=a[i][m]*b[m][j];
   }
  }
 }

 printf("\n itogovaya matrica\n");
 for(i=0; i<N; i++)
 {
  for(j=0; j<N; j++)
  {
   printf("%4i",c[i][j]);
  }
  printf("\n");
 }
getch();
}
2)
Код

#include "stdafx.h"
#include "stdio.h"
#include "iostream.h"
#include "conio.h"
#include "windows.h"
#include "time.h"
#include "stdlib.h"
char* Rus(const char* text);
int main()
{
    int i,j,k,l,g,h,ches,kilk;
    int mas1 [4][4];
    int mas2 [4][4];
    int mas3 [4][4];
    cout<<Rus("zadayte elementu massuvy 1 \n");
    for (i=0;i<4;i++)
    {
        for (j=0;j<4;j++)
        {
            cin>> mas1 [i][j];
        }
    }
    cout<<Rus("zadayte elementu massuvy 2  \n");
    for (k=0;k<4;k++)
    {
        for (l=0;l<4;l++)
        {
            cin>> mas2 [k][l];
        }
    }
    kilk=0;
    cout<<Rus("zadayte chislo dlya  poshuku  \n");
    cin>>ches;
    for (i=0;i<4;i++)
    {
        for (j=0;j<4;j++)
        {
            if(mas1 [i][j]==ches)kilk=kilk+1;
        }
    }
    cout<<Rus("kilkist chisel  ")<<ches<<" = "<<kilk<<endl;
}

char bufRus[256];
char * Rus(const char* text)
{
    CharToOem(text,bufRus);
    return bufRus;
Вот, а как вместе сделать не могу понять,  да еще и реализовать функции пользователя. smile 


Это сообщение отредактировал(а) Poseidon - 3.4.2014, 12:00
PM MAIL   Вверх
Guinness
Дата 1.4.2014, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: 2
Всего: 10



Для начала было бы неплохо разбить всё это дело на функции, а не фигачить это всё в двух main`ах.
PM MAIL   Вверх
nastyaaa
Дата 1.4.2014, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 31.3.2014

Репутация: нет
Всего: нет



Ввод

Код

void vvod(int a[N][N])
{
    printf("vvdedite matricu%ix%i\n",N,N);
    for (int i=0; i<N; i++)
    {
        printf("element %i-ryadka:\n",i+1);
            for (int j=0; j<N; j++)
                scanf("%i", &a[i][j]);
            
    }
}
Вывод

Код

void vivod(int a[N][N])
{
    for (int i=0; i<N; i++)
    {
        printf("\n");
            for (int j=0; j<N; j++)
                printf("%4i", a[i][j]);
            
    }
}
умнож
Код

void AxB(int a[N][N],int b[N][N],int c[N][N])
{
    for(imt i=0;i<N; i++)
        {
            for(int j=0; j<N; j++)
            {
                for(int m=0; m<N; m++)
                {
                    c[i][j]+=a[i][m]*b[m][j];
                }
            }
    }
}
Поиск

Код

int seach(int ches,int a[N][N])
{
    int kilk=0;
    for (int i=0;i<4;i++)
        {
        for (int j=0;j<4;j++)
            {
                if(a[i][j]==ches)
                    kilk=kilk+1;
            }
    }
return kilk;
}

Вот только  сделать меню в консоли c выбором этих функций (Оператор switch) у меня не получается.

Это сообщение отредактировал(а) Poseidon - 3.4.2014, 12:01
PM MAIL   Вверх
Guinness
Дата 2.4.2014, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: 2
Всего: 10



Я так понимаю на Си?
Код

#include <cstdio>

typedef enum
{
    MenuInputMatrix = 1,
    MenuOutputMatrix,
    MenuMultiplyMatrix,
    MenuSearchElementInMatrix,
    MenuExit,
    MenuUnknown
}
MenuItems;

MenuItems OutputMenuForUser()
{
    printf("Please choose menu item:\n");
    printf("1) Input new matrix\n");
    printf("2) Output matrix\n");
    printf("3) Multiply matrix\n");
    printf("4) Search element in matrix\n");
    printf("5) Exit\n");

    int c;
    while((c = getchar()) != '\n' && c != EOF);

    int menuItem = 0;
    // опасная вещь, но на уровне инста сойдет
    scanf("%d", &menuItem);
    return (MenuItems) menuItem;
}

int main()
{
    bool isExit = false;
    while(isExit == false)
    {
        MenuItems item = OutputMenuForUser();
        switch(item)
        {
        case MenuInputMatrix:
            printf("Processing matrix input...\n");
            break;
        case MenuOutputMatrix:
            printf("Processing matrix output...\n");
            break;
        case MenuMultiplyMatrix:
            printf("Processing matrix multiply...\n");
            break;
        case MenuSearchElementInMatrix:
            printf("Processing matrix search element...\n");
            break;
        case MenuExit:
            printf("Bye bye\n");
            isExit = true;
            break;
        default:
            printf("Unknown menu item\n");
            break;
        }
    }
    return 0;
}

Далее вместо моих printf`ов вставляешь свои функции. По хорошему вся математика у тебя должна быть в отдельном заголовочном файле. А работа с пользовательским вводом в другом, в данном случае устроит и main.

Это сообщение отредактировал(а) Guinness - 2.4.2014, 08:01
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.