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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2011, 20:42   #1
peace on you
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 27
По умолчанию Массивы в С++ из Pascal

Здравствуйте! У меня есть задача решенная в паскале, но мне ее надо сделать для Borland C++, надеюсь на ваше понимание.
Даны два целочисленных массива М(10) и К(10) проверьте совпадение
соответствующих элементов массивов. если они совпадают , то выведите
совпадающее значение , если не совпадают , то сделайте соответствующее
сообщение.
Код:
program p1;
var m,k:array[1..10] of integer;
i,j,s:integer;
begin
writeln('vvedite elementi massiva M');
for i:=1 to 10 do
begin
write('m',i,'=');
readln(m[i]);
end;
writeln('vvedite elementi massiva K');
for i:=1 to 10 do
begin
write('K',i,'=');
readln(k[i]);
end;
for i:=1 to 10 do
for j:=1 to 10 do
if m[i]=k[j] then write(m[i],' ') else S:=s+1;
if s=100 then write('ne sovpadaet');
readln
end.
Что то делать я уже начал, но без понятия в каком я направлении
Код:
#include <stdio.h>
#include <conio.h>
void main ()
{ float m[10], k[10]; int i,n;
printf ("input massiv m\n");
for (i=1; i<10; i++);
scanf("%f", &m[i]);
if (m[i]<1);
printf ("input massiv k\n");
for (i=1; i<10; i++);
scanf("%f", &k[i]);
if (k[i]<1);
не пойму как задать это уловие совпадения m=k, соответственно и этот вывод на экран.
peace on you вне форума Ответить с цитированием
Старый 30.10.2011, 20:58   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

0) В С/C++ элементы массивов нумеруются от нуля до n-1.
1) = в C/C++ - оператор присвоения (аналог :=); сравнение производится с помощью ==.
Соответственно, вот скорректированный код для приведённого Вами. Замечу, что приведённый код на Pascal решает отнюдь не описанную задачу.
Код:
#include <stdio>
#include <conio.h>

//запишем размер здесь, чтобы менять его одним действием
#define SIZE 10

//Правилом хорошего тона является main, возвращающий int
int main(void){
  //Заводим место под массивы
  float M[SIZE], K[SIZE];
  printf("Input array M:\n");
  //C++ позволяет объявлять индексы цикла "на лету"
  //Обратите внимание на границы - от 0 до SIZE-1
  for(int i=0; i<SIZE; ++i){
    scanf("%f", &M[i]);
  }
  printf("Input array K:\n");
  //Индекс, объявленный в предыдущем цикле, "умер" на выходе из цикла
  for(int i=0; i<SIZE; ++i){
    scanf("%f", &K[i]);
  }
  //Заводим загадочную переменную s, начальное значение неопределено
  int s;
  //Вложенный цикл, как в исходном коде:
  for(int i=0; i<SIZE; ++i){
    for(int j=0; j<SIZE; ++j){
      //Сравнение элементов
      if(M[i]==K[j]){
        //Вывод на экран числа, затем пробела. Функция аналогична scanf
        printf("%f ", M[i]);
      } else {
        ++s;
      }
    }
  }//Конец вложенного цикла
  //По всей видимости, условие такое
  if(s==SIZE*SIZE){
    //Управляющий символ \n в строке - это "перевод каретки", переход на новую строку
    printf("Doesn't match.\n");
  }
  //Ожидаем нажатия любой клавиши
  getch();
  //Принято при успешном завершении программы возвращать 0
  return 0;
}

Последний раз редактировалось Abstraction; 30.10.2011 в 21:01.
Abstraction вне форума Ответить с цитированием
Старый 30.10.2011, 21:20   #3
peace on you
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 27
По умолчанию

спасибо конечно, но хотелось бы это увидеть в более упрощённой форме, пытаюсь переделать под себя, ругается на многое.
Код:
#include <stdio.h>
#include <conio.h>
void main ()
{ float m[10], k[10]; int i ;
printf ("input massiv m\n");
for(int i=0; i<10; i++);
scanf("%f", &m[i]);
printf("input massiv k\n");
for(int i=0; i<10; i++);
scanf("%f", &k[i]);
int s;
for(int i=0; i<10; i++);
for(int j=0; j<10; i++) ;
if(m[i]==k[j]);
printf("%f", m[i]);
else s++;
if (s==10*10);
printf("ne sovpadayut.\n");
getch();
}

Последний раз редактировалось peace on you; 30.10.2011 в 21:36.
peace on you вне форума Ответить с цитированием
Старый 30.10.2011, 21:50   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Можно бы писать, на что именно ругается - тогда задача отвечающих сведётся, по большому счёту, к переводу с компиляторского на человеческий.

Выкидывать скобки было посредственной идеей, ставить где ни попадя ; - очень плохой идеей. for выполняет либо содержимое следующих непосредственно за ним операторных скобок (begin/end в Паскале, {} в C++), либо одно выражение, до первой точки с запятой. В данном случае, все четыре цикла прокрутятся десять раз, не делая ровным счётом ничего. То же относится и к if. Скажите, откуда вообще взялась идея завершать каждую строку точкой с запятой?
Abstraction вне форума Ответить с цитированием
Старый 30.10.2011, 21:55   #5
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Вот проще на Си :
Код:
#include <stdio.h>
#include <conio.h>
void input( float *m, unsigned size)
{
   float *p = m;
   while ( p != m + size)
      scanf( "%f", p++);
}
int equal( float *m1, float *m2, unsigned size)
{
   float *p = m1;
   while ( p != m1+size)
      if ( *p++ != *m2++) return 0;
   return 1;
}
int main ()
{ 
   float m[10], k[10];
   printf ("input massiv m\n");
   input( m, 10);
   printf("input massiv k\n");
   input( k, 10);
   if ( equal( m, k, 10)) printf("sovpadayut.\n");
   else printf("ne sovpadayut.\n");
   getch();
   return 0;
}

Последний раз редактировалось An1ka; 31.10.2011 в 09:29.
An1ka вне форума Ответить с цитированием
Старый 30.10.2011, 22:18   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

An1ka,
Цитата:
если они совпадают, то выведите совпадающее значение
Это даже если забыть о том, что программа зациклится.
Abstraction вне форума Ответить с цитированием
Старый 31.10.2011, 04:26   #7
peace on you
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 27
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>
void main ()
{ float m[10], k[10]; int i;
printf ("input massiv m\n");
for(int i=0; i<10; i++);
scanf("%f", &m[i]);
}
printf("input massiv k\n");
for(int i=0; i<10; i++);{
scanf("%f", &k[i]);
}
int s;
for(int i=0; i<10; i++);{
for(int j=0; j<10; i++);{
if(m[i]==k[j]);{
printf("%f", m[i]);
}else{
s++;
}
}
}
if (s==10*10);{
printf("ne sovpadayut.\n");
}
getch();
}
попытался разделить...
Изображения
Тип файла: jpg 213.JPG (61.0 Кб, 32 просмотров)
peace on you вне форума Ответить с цитированием
Старый 31.10.2011, 09:12   #8
peace on you
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 27
По умолчанию

вот она вся программа, без всякого лишнего
Код:
#include <stdio.h>
#include <conio.h>
void main ()
{ float m[10], k[10]; int i;
printf ("input massiv m\n");
for(int i=0; i<10; i++)
scanf("%f", &m[i]);
printf("input massiv k\n");
for(int i=0; i<10; i++)
scanf("%f", &k[i]);
for(int i=0; i<10; i++);
if(m[i]==k[i])
printf("%f", m[i]);
else;
printf("ne sovpadayut \n");
getch();
}
peace on you вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal массивы angelok231 Паскаль, Turbo Pascal, PascalABC.NET 2 13.06.2011 17:54
Массивы [pascal] Rulyas Помощь студентам 14 10.09.2009 00:12
Pascal: массивы Juventus91 Помощь студентам 2 06.09.2009 14:21
массивы Pascal -ushёl- Помощь студентам 3 23.03.2009 06:45
Pascal. Массивы Danilyuk Помощь студентам 1 22.01.2008 19:56