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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2010, 22:07   #1
Димьчик
Новичок
Джуниор
 
Регистрация: 18.11.2010
Сообщений: 3
По умолчанию Число во всех строчках на Си

Ребят! помогите пожалуйста с задачей! я уже весь мозг сломал чтоб ее написать ничего не получается

Задача: "Дан двухмерный массив все элементы массива упорядочены по возрастанию нужно найти и вывести число встречающееся во всех строчках если такого нет вывести сообщение"
Димьчик вне форума Ответить с цитированием
Старый 18.11.2010, 23:38   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

обращайтесь, выполню за символическое вознаграждение
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 19.11.2010, 01:06   #3
pm-mc
Новичок
Джуниор
 
Аватар для pm-mc
 
Регистрация: 17.11.2010
Сообщений: 2
По умолчанию

Если все элементы массива по условию упорядочены, то достаточно проверить на наличие повторяющихся элементов только первую и последнюю строки (хотя можно и только ее первый элемент). Пример такого массива:

1 3 4 6
6 6 6 6
6 6 6 6
6 7 9 9

Иначе нарушится условие упорядоченности.

Код:
#include <iostream>

using namespace std;

int main()
{
    int a[3][3];
    cin >> a[0][0] >> a[1][0] >> a[2][0];
    cin >> a[0][1] >> a[1][1] >> a[2][1];
    cin >> a[0][2] >> a[1][2] >> a[2][2];
    int i;
    for (i=0; i<=2; i++){
        if (a[i][0]==a[0][2]){
            cout << "Repeated: " << a[i][0] << endl;
            break;
        }
        else{
            cout << "No repeated" << endl;
        }
    }
    return 0;
}
pm-mc вне форума Ответить с цитированием
Старый 19.11.2010, 01:24   #4
Димьчик
Новичок
Джуниор
 
Регистрация: 18.11.2010
Сообщений: 3
По умолчанию

тут числа вводятся с клавиатуры в разнобой например
0 1 5 8
1 4 6 9
2 3 5 9
Димьчик вне форума Ответить с цитированием
Старый 19.11.2010, 10:09   #5
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

это решается легко, покажи хотя бы свои наработки, что ты думал как сделать, а не просто ждал, когда кто-нибудь тебе сделает это

скажу словесный алгоритм
1. объявить дополнит массив длиной в строку матрицы,т.е. N, сюда будем кидать повторяющиеся элементы
2. далее, берем первы элемент из первой строки и сравниваем ее с каждым элементом второй строки, если совпадают - кидаем в наш доп массив
3. сравниваем уже каждый элемент из доп массива с третьей строкой, и если совпадения элемента из допмассива не найдено в третьей строке - обнуляем этот элемент из допмассива
4. и так далее с каждой последующей строкой аналогично п.3
5. в допмассиве у нас будут элементы, к-рые есть во всех строках

если своих наработок нет, а решение нужно срочно и приведенный мною алгоритм не помог - обращайся, выполню за символическое вознаграждение))
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 19.11.2010, 10:24   #6
Димьчик
Новичок
Джуниор
 
Регистрация: 18.11.2010
Сообщений: 3
По умолчанию

вот моя наработка но она косячно работает
Код:
#include <stdio.h>
#include <conio.h>
void main ()
{
int a[3][3];
int m,n,i,j,z,k;
printf ("Vvedite kolichestvo strok m:");
scanf ("%d", &m);
printf ("Vvedite kolichestvo stolbcov n:");
scanf ("%d", &n);
printf ("Vvedite massiv:");
for (i=0; i<m; i++)
for (j=0; j<n; j++)
scanf ("%d", &a[i][j]);
k=0;
i=0;
z=0;
while (z<n)
{
for (i=1; i<m; i++)
{ j=0;
while ((a[0][z]>=a[i][j])&&(j<n))
{
if (a[0][z]==a[i][j])
{k=k+1;
j=n;
}
}
}
if (k==m-1)
{printf ("Rezultat:\n");
printf ("%d", a[0][z]);
z=n;
}
else
{
z++;
k=0;
}
}
if (k!=m-1)
printf ("Takogo chisla net");
getch ();
}

а как элементы кинуть в дополнительный массив????

Последний раз редактировалось Stilet; 20.11.2010 в 19:59.
Димьчик вне форума Ответить с цитированием
Старый 20.11.2010, 19:22   #7
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

держи нямку

Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main() {
  int *matr = NULL;
  int N = 0, i, j, h = 0, flag = 1;
  printf("Enter dimension matrix: ");
  scanf("%u", &N);
  matr = (int *)calloc(N * N, sizeof(int));
  if (matr) {
    printf("Enter elements matrix to a string with a spaces\n");
    for (i = 0; i < N; i++)
      for (j = 0; j < N; j++)
        scanf("%i", &matr[i *N + j]);
    printf("Identical elements in this matrix---\n");
    for (i = 0; i < N; i++) {
      for (j = 1; j < N; j++) {
        for (h = 0; h < N; h++) {
          if (matr[i] == matr[j * N + h]) {
            flag++;
            break;
          }
        }
      }
      if (flag == N)
          printf("%i ", matr[i]);
      flag = 1;
    }
    free(matr);
  }
  else {
    printf("Unknown erorr memory\n");
  }
  printf("\n\n\tPress any key for exit...");
  flushall();
  getchar();
  return 0;
};
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]

Последний раз редактировалось RUSt88; 20.11.2010 в 19:24.
RUSt88 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имена всех секций всех ini-файлов (DELPHI) Dj_SheLL Помощь студентам 7 10.10.2010 17:44
2. Совершенным числом называется число, равное сумме всех делителей, меньших, чем оно само. Например, 28= Sos1 Помощь студентам 7 08.06.2010 01:08
Запросите у пользователя положительное число А и найдите сумму всех натуральных чисел из промежутка [1,A] white_angel73 Паскаль, Turbo Pascal, PascalABC.NET 13 22.04.2010 23:35
Text Box: размещение текста на разных строчках Blondy Microsoft Office Access 12 05.04.2010 17:24
Вставить число после всех элементов массива, кратных 3 Mclaren Помощь студентам 0 10.11.2009 02:40