Форум программистов, компьютерный форум CyberForum.ru

Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) - C++

Восстановить пароль Регистрация
 
Black_wh!
 Аватар для Black_wh!
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 14
28.12.2012, 06:19     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #1
Всем доброго времени суток!)
В общем имею такую великолепную чтуку, она должна говорить мне, похожи ли массивы или нет, массив должен задаваться рандомно. В общем вроде написано все правильно, ошибок в си нет, я ее запускаю а она просто черная, эх...



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#pragma once
#include <iostream>
#include <stdio.h>
 
 
using namespace std;
 
#include "q.h"
 
int main()
{
    setlocale(LC_ALL, "Russian_Russia.1251");
    int a[5],b[5],z,i,j;
    for(i=0;i<=4;i++)
        cin>>a[i];
    for(i=0;i<=4;i++)
        cin>>b[i];
    z=0;
        for(i=0;i<=4;i++)
            for(j=0;j<=4;j++)
            {
                if(a[i]==b[j])z++;
            }
            if(z==4)
                cout<<"Массивы похожи"<<endl;
            else
                cout<<"Массивы не похожи"<<endl;
            return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2012, 06:19     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?)
Посмотрите здесь:

Цикл: правильно или нет? C++
Посмотрите работает или нет. C++
C++ симафор или нет?
C++ Палиндром или нет?
Полиндром или нет? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
jonson
 Аватар для jonson
231 / 204 / 61
Регистрация: 18.03.2010
Сообщений: 749
28.12.2012, 06:48     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #2
Цитата Сообщение от Black_wh! Посмотреть сообщение
ошибок в си нет, я ее запускаю а она просто черная, эх...
Тут телепатов и экстрасенсов нет. Пожалуйста конкретнее, в чем проблема то?
Black_wh!
 Аватар для Black_wh!
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 14
28.12.2012, 07:31  [ТС]     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #3
Ну она запускается, а на экране ничего нету, просто черный экран ) Не считает ничего, ничего не показывает...вот скрин
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
28.12.2012, 07:45     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #4
Black_wh!, а вы значения массивов не пробовали вводить?
Black_wh!
 Аватар для Black_wh!
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 14
28.12.2012, 07:53  [ТС]     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #5
Я дно в с++, мне показали как нужно написать, я написал ) Я незнаю как значение ввести, они же вроде должны рандомно подбираться если не указывать ? Я про a[5] или a[5]={1,2,3,4,5}
Nagdiel
 Аватар для Nagdiel
114 / 114 / 3
Регистрация: 23.12.2012
Сообщений: 195
28.12.2012, 09:52     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #6
Ничего у Вас рандомно не генерируется...

Вот эти строчки
C++
1
2
3
4
 for(i=0;i<=4;i++)
        cin>>a[i];
    for(i=0;i<=4;i++)
        cin>>b[i];
ясно говорят о том, что элементы массивов вводятся с клавиатуры
Learx
1032 / 839 / 85
Регистрация: 31.03.2010
Сообщений: 2,465
28.12.2012, 12:14     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #7
C++
1
 cin>>a[i];
Это команда получить значение с консоли. то есть вы руками должны указать все значения массива.

Более того алгоритм проверки неверный. Так как если есть повторяющиеся числа то это исказит результат.
Например для массивов 1,1,2,3 и 1,1,4,5 выдаст что они равны, а для 1,1,2,3 и 1,1,2,3 скажет что не равны

Добавлено через 2 минуты
почитайте учебник по порядку. а то вы взялись за сложный пример пока не знаете основ..
-=ЮрА=-
Заблокирован
Автор FAQ
28.12.2012, 12:30     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #8
Black_wh!, конечно фразой
Цитата Сообщение от Black_wh! Посмотреть сообщение
В общем вроде написано все правильно, ошибок в си нет, я ее запускаю а она просто черная, эх...
ты конечно убил (там ведь ввод элементов ниже идёт), ну да ладно вот код под то что ты хотел
Цитата Сообщение от Black_wh! Посмотреть сообщение
Я про a[5] или a[5]={1,2,3,4,5}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
using namespace std;
 
bool bSameArr(int m, int * srs, int * cmp);
 
int main()
{
    int a[] = {1,2,3,4,5,6};
    int b[] = {1,2,3,4,5};
    int c[] = {1,2,2,4};
    int sizeA = sizeof(a)/sizeof(a[0]);
    int sizeB = sizeof(b)/sizeof(b[0]);
    int sizeC = sizeof(c)/sizeof(c[0]);
    cout<<"Comp arrays A, B"<<endl;
    if(bSameArr(sizeA < sizeB ? sizeA : sizeB, a, b))
        cout<<"Arrays are the same"<<endl;
    else
        cout<<"Arrays not the same"<<endl;
    cout<<"Comp arrays A, C"<<endl;
    if(bSameArr(sizeA < sizeC ? sizeA : sizeC, a, c))
        cout<<"Arrays are the same"<<endl;
    else
        cout<<"Arrays not the same"<<endl;
    cout<<"Comp arrays B, C"<<endl;
    if(bSameArr(sizeB < sizeC ? sizeB : sizeC, b, c))
        cout<<"Arrays are the same"<<endl;
    else
        cout<<"Arrays not the same"<<endl;
    return 0;
}
 
bool bSameArr(int m, int * srs, int * cmp)
{
    bool bSame = true;
    for(int i = 0; i < m && bSame; i++)
        bSame = (srs[i] == cmp[i]);
    return bSame;
}
Миниатюры
Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?)  
RedAXE
-10 / 0 / 0
Регистрация: 12.12.2012
Сообщений: 43
28.12.2012, 13:35     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #9
Эта работает,вроде.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream> //подключае
#include <stdlib.h>
#include <time.h> 
 
using namespace std;
 
int main()
{
  int a[6],b[6];
  int z=0;
  
    
  srand(time(NULL));
    for(int i=0;i<6;i++)
        {   
            a[i]=rand()%10;
        }                    
   srand(rand());
    for(int i=0;i<6;i++)
        {
            b[i]=rand()%10;
        }
    
  cout<<"Первый массив"<<endl;
  for(int i=0;i<6;i++)
      cout<<a[i];
  
  cout<<endl;
  
  cout<<"Второй массив"<<endl;
  for(int i=0;i<6;i++)
      cout<<b[i];
      
  cout<<endl;  
  
  for(int i=0;i<6;i++){
      for(int ii=0;ii<6;ii++)
            if((a[i])==(b[ii]))
            {   
                ++z;
                b[ii]=0;
                break;
                i++;
            }
            
        }
          
  
  if(z>=4) 
  cout<< "Массивы похожи,кол-во совпадений :  "<<z<<endl;
  else 
  cout<<"Мало совпадений,кол-во совпадений :  "<<z<<endl;       
  }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2012, 15:09     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?)
Еще ссылки по теме:

C++ Вывести на экран слова, в которых все символы повторяющиеся, или сообщение «Нет», если требуемых слов нет
C++11 в production, да или нет? C++
C++ Конструктор Шредингера "нет подходящего конструктора по умолчанию", хотя он есть

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Learx
1032 / 839 / 85
Регистрация: 31.03.2010
Сообщений: 2,465
28.12.2012, 15:09     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #10
RedAXE, ваш алгоритм еще более ошибочен, так как %10 может вернуть и 0.
Обнулением чисел вы генерируете еще большее количество ошибок, если в массиве а есть нули.
а применение i++; во вложенном цикле вовсе непонятно.

Верным алгоритмом будет такой:
1. Проходим по элементам массива а
2. НАХОДИМ такой же элемент в массиве b(среди неиспользованных)
2.1. Если элемент найден, то помечаем что этот элемент использован(созраняем использованные индексы например)
2.2. Если среди неиспользованных элемент не найден, то массивы не идентичны - выход из цикла.

Таким образом выполнение прерывается и не выполняется лишних действий. И если есть одинаковые элементы, то запоминание использованных элементов исключит их повторное сравнение.
Yandex
Объявления
28.12.2012, 15:09     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?)
Ответ Создать тему
Опции темы

Текущее время: 05:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru