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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2014, 17:37   #1
Карина Т_Т
Пользователь
 
Регистрация: 11.02.2014
Сообщений: 15
По умолчанию Переделать VBA под Си

Кто понимает,переделайте пожалуйста с одного языка на другой.Вот задача: Найти все числа из массива B (n), которые встречаются более чем в одной строке матрицы A (m, n)
Вот код :
Код:
Sub Кнопка1_щелчек()
Cells.Clear
    Dim Matr() As Integer
    Dim i, j, k, p As Integer
    Dim n, m As Long
    Dim c() As Integer
 'задаем произвольную матрицу
     n = InputBox("Введите количество строк", , 4)
     If n = "" Then Exit Sub
    m = InputBox("Введите количество столбцов", , 4)
    ReDim Matr(1 To n, 1 To m)
    'заполнение массива матрицы случайными числами
    For i = 1 To n
     For j = 1 To m
       Matr(i, j) = Int(Rnd() * 10) + 1
       Cells(i, j) = Matr(i, j)
      Next j
    Next i
    'задаем массив чисел, которые хотим проверить
    k = j
    ReDim a(1 To m)
    For k = 1 To m
        a(k) = Int(Rnd() * 10) + 1
        Cells(n + 2, k) = a(k)
        'Val (InputBox("Введите" & k & "-е" & " число массива"))
    Next k
    Cells(n + 2, m + 1) = "Числа для проверки"
    'проверить строки матрицы на совпадения
    For l = 1 To m
    kol = 0
      For i = 1 To n
        For j = 1 To m
            If Matr(i, j) = a(l) Then
              kol = kol + 1
              Exit For
            End If
        Next j
      Next i
      Cells(n + 3, l) = kol
    Next l
    Cells(n + 3, m + 1) = "В скольких строках встретилось"
End Sub
Карина Т_Т вне форума Ответить с цитированием
Старый 11.02.2014, 22:51   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,603
По умолчанию

GUI нужен?
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 12.02.2014, 16:00   #3
Карина Т_Т
Пользователь
 
Регистрация: 11.02.2014
Сообщений: 15
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
GUI нужен?
Нет,этого не нужно..Консоли хватит.
Карина Т_Т вне форума Ответить с цитированием
Старый 13.02.2014, 05:12   #4
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,603
По умолчанию

Возможно таким образом.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>

int main()
{
int** Matr;
int i, j, k, p;
long n, m;
int* c;
int* a;
int kol;
int f;
int g;

scanf("%d", &n);
scanf("%d", &m);

// выделение памяти под матрицу
Matr = (int**) malloc(m*sizeof(int*));

for(i=0;i<m;i++)
Matr[i] = (int*) malloc(n*sizeof(int));

// генератор случайных чисел
srand(time(0));

// заполнение матрицы случайными числами
for(i=0;i<m;i++)
for(j=0;j<n;j++)
Matr[i][j] = rand()%9;

// вывод матрицы
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%d ", Matr[i][j];
printf("\n");
}

// выделение памяти под массив B(n)
a = (int*) malloc(n*sizeof(int));

// заполнение массива случайными числами
for(j=0;j<n;j++)
a[j] = rand()%9;

// вывод массива
for(j=0;j<n;j++)
printf("%d ", a[j]);
printf("\n");

// поиск чисел из массива B которые встречаются более чем в одной строке
for(l=0;l<n;l++)
{
 kol = 0;
 g = 0;
 for(i=0;i<m;i++)
 {
  f = 0;
  for(j=0;j<n && f == 0;j++)
   if (Matr[i][j] == a[l])
     f = 1;
  if(f==1)
   g++;
 }
 if (g>=2)
  kol = kol+1;
}

printf("%d", kol);

return 0;
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"

Последний раз редактировалось challengerr; 13.02.2014 в 09:19.
challengerr вне форума Ответить с цитированием
Старый 13.02.2014, 09:22   #5
Карина Т_Т
Пользователь
 
Регистрация: 11.02.2014
Сообщений: 15
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
Возможно таким образом.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>

int main()
{
int** Matr;
int i, j, k, p;
long n, m;
int* c;
int* a;
int kol;
int f;
int g;

scanf("%d", &n);
scanf("%d", &m);

// выделение памяти под матрицу
Matr = (int**) malloc(m*sizeof(int*));

for(i=0;i<m;i++)
Matr[i] = (int*) malloc(n*sizeof(int));

// генератор случайных чисел
srand(time(0));

// заполнение матрицы случайными числами
for(i=0;i<m;i++)
for(j=0;j<n;j++)
Matr[i][j] = rand()%9;

// вывод матрицы
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%d ", Matr[i][j];
printf("\n");
}

// выделение памяти под массив B(n)
a = (int*) malloc(n*sizeof(int));

// заполнение массива случайными числами
for(j=0;j<n;j++)
a[j] = rand()%9;

// вывод массива
for(j=0;j<n;j++)
printf("%d ", a[j]);
printf("\n");

// поиск чисел из массива B которые встречаются более чем в одной строке
for(l=0;l<n;l++)
{
 kol = 0;
 g = 0;
 for(i=0;i<m;i++)
 {
  f = 0;
  for(j=0;j<n && f == 0;j++)
   if (Matr[i][j] == a[l])
     f = 1;
  if(f==1)
   g++;
 }
 if (g>=2)
  kol = kol+1;
}

printf("%d", kol);

return 0;
}
Спасибо,любезный ^_^
Карина Т_Т вне форума Ответить с цитированием
Старый 13.02.2014, 16:59   #6
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,603
По умолчанию

Извините, задача сделана неправильно.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделать под С++ T_h_i_s Помощь студентам 2 21.12.2012 16:49
задача с++(переделать под указатели) Tiva Помощь студентам 2 23.11.2011 12:57
переделать прогу под Linux Sparky Помощь студентам 4 26.05.2010 23:54
переделать под windows al072 C/C++ Сетевое программирование 13 16.02.2010 20:57
Переделать программу под структуры. Си++ Влад-mego Помощь студентам 0 12.04.2009 22:14