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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Black_wh!
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 14
#1

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

28.12.2012, 06:19. Просмотров 436. Ответов 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
#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++
Дана последовательность символов, состоящая из слов. Вывести на экран слова, в которых все символы повторяющиеся, или сообщение «Нет», если...

Thread C2893. Хотя аргументов у вызываемой функции нет - C++
Это код, где вызывается thread: void CChatClientDlg::OnBnClickedBtnSendMessage() { if (client.isConnected()) { UpdateData(true);...

Разбираюсь с заданием. Ошибок нет но результата нет - C++
Проштудировал весь форум.Решений много взял по примеру написал код, ошибок нет но ответа нужного нет помогите найти где не разобрался. С...

Конструктор Шредингера "нет подходящего конструктора по умолчанию", хотя он есть - C++
собственно, код. на 156-й строке ( cont(circi);) ругается на отсутствие конструктора в классе. но он там есть! я его видел! а если...

Полиндром или нет? - C++
#include &lt;iostream&gt; #include &lt;cstdio&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Russian&quot;); bool otvet; int i;...

Палиндром или нет? - C++
Определить, является ли заданное натуральное число палиндромом, т.е. таким, десятичная запись которого читается одинаково слева направо и...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
jonson
232 / 205 / 61
Регистрация: 18.03.2010
Сообщений: 749
28.12.2012, 06:48     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #2
Цитата Сообщение от Black_wh! Посмотреть сообщение
ошибок в си нет, я ее запускаю а она просто черная, эх...
Тут телепатов и экстрасенсов нет. Пожалуйста конкретнее, в чем проблема то?
Black_wh!
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 14
28.12.2012, 07:31  [ТС]     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #3
Ну она запускается, а на экране ничего нету, просто черный экран ) Не считает ничего, ничего не показывает...вот скрин
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
28.12.2012, 07:45     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?) #4
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
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
1035 / 842 / 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++
class my_class { public: my_class() { a = b = 0; } my_class(constint...

C++11 в production, да или нет? - C++
Всем привет. Выбил все-таки разрешение юзать С++11 на работе, по мелочи, лямбды вместо предикатов, range-based-for, auto. Сегодня наш тех....

симафор или нет? - C++
ПРивет всем! написал программу для следующего задания с использованием симафора: Написать программу, создающую два потока. Оба...

Задача на массивы (найти и вывести на экран те элементы массив В , которых нет в массиве А) - C++
Здравствуйте . Помогите , пожалуйста решить такую задачу: есть массив int A={2,4,5,6} и массив int B={7,1,2,5,9} нужно найти и...


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

Или воспользуйтесь поиском по форуму:
Learx
1035 / 842 / 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     Ошибка с массивами, хотя формально её нет (похожи ли массивы или нет?)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru