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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2009, 17:18   #21
МартинИ
Пользователь
 
Аватар для МартинИ
 
Регистрация: 23.12.2008
Сообщений: 47
По умолчанию

Упорядочить столбцы целочисленной прямоугольной матрицы по уменьшению количества одинаковых элеметов в каждом стобце.


Код:
#include<stdio.h>
#include<conio.h>
int main()
{clrscr();
 int x[100][100],i,j,n,m,t,a=0,k=0,p=0;
 printf("Vvedit kilkost strok masyvu: ");
 scanf("%d",&n);
 printf("Vvedit kilkost stovciv masyvu: ");
 scanf("%d",&m);
 for(i=0;i<n;i++)
 {
  for(j=0;j<m;j++)
  {
   printf("Vvedit chyslo x[%d,%d]=",i,j);
   scanf("%d",&x[i][j]);
  }
 }
 for(j=0;j<m;j++)
 {
  for(i=0;i<n;i++)
  {
   if((j%2==1)&&(x[i][j]=x[i+1][j]))k++;
   if((j%2==0)&&(x[i][j]=x[i+1][j])){p++;a++;}
   if(p<k)
   {t=x[i][j-1];
    x[i][j-1]=x[i][j];
    x[i][j]=t;
   }
   j=j-1;
   k=0;
   if(a==2) p=0;
 }}
 for(i=0;i<n;i++)
 for(j=0;j<m;j++)
 printf("x[%d,%d]=%d  ",i,j,x[i][j]);
 getch();
}

Вот написала код и меня он оч смущает.... То что он не выводит отсортрованной матрицы - это полбеды... Но на большее я додуматься не могу....
Люди - отвратительные. Эгоистичные. Шумные. Говорят ерунду. А подумав еще немножко, понимаешь, что ты абсолютно такой же, если не хуже...
МартинИ вне форума Ответить с цитированием
Старый 18.04.2009, 17:33   #22
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от МартинИ
Упорядочить столбцы целочисленной прямоугольной матрицы по уменьшению количества одинаковых элеметов в каждом стобце.
А что есть "количество одинаковых элементов"? Можете показать на примере?
Например, для матрицы:
Код:
1 3 4 7
1 3 5 4
2 4 6 4
6 3 5 7
Сколько в каждом столбце одинаковых элементов?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.04.2009, 17:45   #23
МартинИ
Пользователь
 
Аватар для МартинИ
 
Регистрация: 23.12.2008
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
А что есть "количество одинаковых элементов"? Можете показать на примере?
Например, для матрицы:
Код:
1 3 4 7
1 3 5 4
2 4 6 4
6 3 5 7
Сколько в каждом столбце одинаковых элементов?
в первом - две 1
во втором - три 3
в третем - две 5
а вот насчет четвертого... я думаю задача не расчитана на такое... и будет только одно число несколько раз повторяться... мне важен правильно написанный алгоритм...
Люди - отвратительные. Эгоистичные. Шумные. Говорят ерунду. А подумав еще немножко, понимаешь, что ты абсолютно такой же, если не хуже...
МартинИ вне форума Ответить с цитированием
Старый 18.04.2009, 17:47   #24
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вообще, если я правильно понял, то будет так:
Код:
#include<stdio.h>
#include<conio.h>

int main()
{
 int x[100][100],i,j,k,m,n,b,tmp,a;
 printf("Vvedit kilkost strok masyvu: ");
 scanf("%d",&m);
 printf("Vvedit kilkost stovciv masyvu: ");
 scanf("%d",&n);
 for(i=0;i<m;i++)
 {
  for(j=0;j<n;j++)
  {
   printf("Vvedit chyslo x[%d,%d]=",i,j);
   scanf("%d",&x[i][j]);
  }
 }
 //--------------

printf("\n");
for(i=0;i<n;i++,printf("\n"))
 for(j=0;j<m;j++)
  printf("%4d",x[i][j]);
//----------------------

for(j=0;j<n;j++)
 {
  x[m][j] = 0;
  for(i=1;i<m;i++)
   {
    b = 0;
    for(k=i-1; k>=0; k--)
     if(x[i][j]==x[k][j])
      b = 1;
    if(b==1) x[m][j]++;
    }
 }
//-----
for(j=0;j<n-1;j++)
 {
  a = j;
  for(k=j+1;k<n;k++)
   if(x[m][k]>x[m][a]) a=k;
  for(i=0;i<m+1;i++)
   {
    tmp = x[i][j];
    x[i][j] = x[i][a];
    x[i][a] = tmp;
   }
 }
//------------

printf("\n");
for(i=0;i<n;i++,printf("\n"))
 for(j=0;j<m;j++)
  printf("%4d",x[i][j]);

getch();
return 0;
}
Выводится исходная и конечная матрица (чтобы можно было сравнить).

То есть для матрицы
Код:
1 3 4 7
1 3 5 4
2 4 6 4
6 3 5 7
Будет:
1 столбец - 1 (один повтор для единицы)
2 столбец - 1 (3)
3 столбец - 1 (5)
4 столбец - 2 (один повтор 7 и один повтор 4)

===================================
Цитата:
в первом - две 1
во втором - три 3
в третем - три 4
А это точно так? Просто как-то не логично. Ведь есть один оригинал и один повтор.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 18.04.2009 в 17:49.
Sazary вне форума Ответить с цитированием
Старый 18.04.2009, 18:00   #25
МартинИ
Пользователь
 
Аватар для МартинИ
 
Регистрация: 23.12.2008
Сообщений: 47
По умолчанию

ммм, спасибо..
только выводить уже 2 одинаковые обработанные матрицы....
Люди - отвратительные. Эгоистичные. Шумные. Говорят ерунду. А подумав еще немножко, понимаешь, что ты абсолютно такой же, если не хуже...
МартинИ вне форума Ответить с цитированием
Старый 18.04.2009, 18:02   #26
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
только выводить уже 2 одинаковые обработанные матрицы....
Ошибаетесь Выводится исходная и конечная. Если они одинаковы, значит столбцы изначально расположены в нужном порядке.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.04.2009, 18:04   #27
МартинИ
Пользователь
 
Аватар для МартинИ
 
Регистрация: 23.12.2008
Сообщений: 47
По умолчанию

ой, извините...
не досмотрела, что вводим по строкам, а считает столбцы
Люди - отвратительные. Эгоистичные. Шумные. Говорят ерунду. А подумав еще немножко, понимаешь, что ты абсолютно такой же, если не хуже...
МартинИ вне форума Ответить с цитированием
Старый 20.04.2009, 19:03   #28
МартинИ
Пользователь
 
Аватар для МартинИ
 
Регистрация: 23.12.2008
Сообщений: 47
По умолчанию

10.53. Написать рекурсивную процедуру для ввода с клавиатуры последовательности чисел и вывода ее на экран в обратном порядке (окончание последовательности – при вводе нуля).

рекурсивная функция от процедуры чем-то отличаеться?

Код:
#include <iostream.h>
#include <conio.h>

int fun(int x[100],i,n);
{
 if(n<1)
  return x[i];
  
 int S;
 while(n>1)
  {for(i=n;i<0;i--)
   {

  cout<<x[i];

   
  }}
}

int main()
{
int y[j],j,m;
m=1;
for(j=0;j<m;j++)
{
cin>>y[j];
m++;
if(y[j]==0) {cout<<fun(y[j],j,m); continue;}
}
n=m;
getch();
return(0);
}
и выбивает ошибку на строке int fun(int x[100],i,n);
Люди - отвратительные. Эгоистичные. Шумные. Говорят ерунду. А подумав еще немножко, понимаешь, что ты абсолютно такой же, если не хуже...
МартинИ вне форума Ответить с цитированием
Старый 20.04.2009, 19:10   #29
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
int y[j],j,m;
Нельзя так.
Да и вообще, у вас про массив ни слова. Не нужен он вам.

Код:
#include <iostream.h>
#include <conio.h>

void fun()
{
 int a;
 cin>>a;
 if(a==0)
  { cout<<endl; return; }
 fun();
 cout<<a<<endl;
}

int main()
{
fun();
getch();
return 0;
}
И вся задача.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 01.05.2009, 15:30   #30
МартинИ
Пользователь
 
Аватар для МартинИ
 
Регистрация: 23.12.2008
Сообщений: 47
По умолчанию

спасибо за задачу!

11.134. В массиве храниться информация о максимальной скорости каждой из 40 марок легковых автомобилей. Определить скорости двух самых быстрых автомобилей.
Примечание: задачу решить, не используя два прохода по массиву.

Код:
#include<stdio.h>
#include<conio.h>
void main()
{float a[40],max1=-10,max2=-100;
int i;
clrscr();
 printf("\nKilkist avtomobiliv: 40");

 for(i=1;i<=40;i++)
 {printf("\nVvedit chyslo a[%d] = ",i);
  scanf("%f",&a[i]);
 }
 for(i=1;i<=40;i=i+2)
 {
 if(a[i]>max1) max1=a[i];
  if((a[i+1]>max2)) max2=a[i+1];
  }
 printf("\n%f, %f",max1,max2);
 getch();
}
оно все правильно считает и находит, но не рассматривает последнее число. как сделать, чтоб и последнее число учитывалось?
Люди - отвратительные. Эгоистичные. Шумные. Говорят ерунду. А подумав еще немножко, понимаешь, что ты абсолютно такой же, если не хуже...

Последний раз редактировалось МартинИ; 01.05.2009 в 15:47.
МартинИ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сборник задач по Delphi AngelOfDeath Свободное общение 10 09.02.2009 21:03
Книга по программированию микроконтроллеров на языке С sheremi Общие вопросы C/C++ 2 09.12.2008 00:30