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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2013, 18:31   #1
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию ошибка в коде программы

Код:
#include <iostream>
#include <ctime>
#include <stdlib.h>
#include <iomanip>
using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
const int N=10;
int x[N];
int y[N];
int z[2*N];
int k;
int j;
srand(time(NULL)); 
for (int i=0; i<N; i++)
x[i]=rand()%20;

/* вывод массива на экран */
cout << " массив x" << endl;
for (int i=0; i<N; i++)
cout << setw(4) << x[i];
cout << endl;


for (int j=0; j<N; j++)
y[j]=rand()%20;

/* вывод массива на экран */
cout << " массив y" << endl;
for (int j=0; j<N; j++)
cout << setw(4) << y[j];
cout << endl;
k=1;

for (int i=0; i<N; i++)

for (int j=0; j<N; j++)
{
if(x[i]==y[j]){
z[k]=x[i];
k++;}
}

cout << "массив z" << endl;
for (int i=0; i<k-1; i++)
cout << setw(4) << z[i];
cout << endl;

if ((x[i]!=y[j])&&(k==1)) //ошибка в этой строчке
cout << "пересечения нет" << endl;
system("pause");
return 0;
}

Последний раз редактировалось Stilet; 01.06.2013 в 20:41.
fkty вне форума Ответить с цитированием
Старый 01.06.2013, 18:57   #2
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Код:
if ((x[i]!=y[j])&&(k==1))
Переменную i вы объявляете только внутри цикла. Область её видимость - тело цикла. Здесь вы пользоваться ей не можете. Или вынесете переменную в объявления вначале программы - или поместите условие в тело цикла.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 01.06.2013, 19:06   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

переменная j не проинициализирована и содержит мусор.
_Bers вне форума Ответить с цитированием
Старый 01.06.2013, 19:25   #4
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

объявила переменную i вначале программы,но теперь она неправильно работает...что не так?
fkty вне форума Ответить с цитированием
Старый 01.06.2013, 20:42   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
что не так?
Виидмо все.
Задание какое?
Впрочем стелепатирую:
Код:
int k=0;
for (int i=0; i<k-1; i++){
 cout << setw(4) << z[i];
 if ((x[i]==y[j]) k++
}
if(k) cout <<endl<< "пересечения нет" << endl;
system("pause");
return 0;
I'm learning to live...

Последний раз редактировалось Stilet; 01.06.2013 в 20:45.
Stilet вне форума Ответить с цитированием
Старый 01.06.2013, 21:48   #6
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

хотите сказать код такой?но он не работает....сама задача:даны два массива x,y размера n.построить третий массив z размером не более 2n,где этот массив есть пересечение массивов x,y
Код:
#include <iostream>
#include <ctime>
#include <stdlib.h>
#include <iomanip>
using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
const int N=10;
int x[N];
int y[N];
int z[2*N];
int j,i,k;
srand(time(NULL)); 
for (int i=0; i<N; i++)
x[i]=rand()%20;

/* вывод массива на экран*/
cout << " массив x" << endl;
for (int i=0; i<N; i++)
cout << setw(4) << x[i];
cout << endl;


for (int j=0; j<N; j++)
y[j]=rand()%20;

/* вывод массива на экран*/
cout << " массив y" << endl;
for (int j=0; j<N; j++)
cout << setw(4) << y[j];
cout << endl;
 k=0;
for (int i=0; i<k-1; i++){
 cout << setw(4) << z[i];
 if ((x[i]==y[j]) k++
}
if(k) cout <<endl<< "пересечения нет" << endl;
system("pause");
return 0;
}
а если сделать так,так будет правильно?
Код:
#include <iostream>
#include <ctime>
#include <stdlib.h>
#include <iomanip>
using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
const int N=10;
int x[N];
int y[N];
int z[2*N];
int k;
int j,i;
srand(time(NULL)); 
for (int i=0; i<N; i++)
x[i]=rand()%20;

/* вывод массива на экран */
cout << " массив x" << endl;
for (int i=0; i<N; i++)
cout << setw(4) << x[i];
cout << endl;


for (int j=0; j<N; j++)
y[j]=rand()%20;

/* вывод массива на экран */
cout << " массив y" << endl;
for (int j=0; j<N; j++)
cout << setw(4) << y[j];
cout << endl;
k=0;

for (int i=0; i<N; i++)

for (int j=0; j<N; j++)
{
if(x[i]==y[j]){
z[k]=x[i];
k++;}
}

cout << "массив z" << endl;
for (int i=0; i<k; i++)
cout << setw(4) << z[i];
cout << endl;

if ((x[i]!=y[j])&&(k==1))

cout << "пересечения нет" << endl;



system("pause");
return 0;
}

Последний раз редактировалось Stilet; 01.06.2013 в 22:59.
fkty вне форума Ответить с цитированием
Старый 01.06.2013, 23:06   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я бы делал так:
Код:
#include <iostream>
#include <ctime>
#include <stdlib.h>
#include <iomanip>
using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
const int N=10;
int x[N]={0}, y[N]={0}, z[2*N]={0};
int j,i,k=0;
srand(time(NULL)); 
for (int i=0; i<N; i++){
  x[i]=rand()%20;
  y[i]=rand()%20;
  for(j=0;j<i;j++) if(x[j]==y[i]){
   for(int l=0;l<k && z[l]!=x[j];l++);
   if(l==k) z[k++]=x[j];
   break;
  }
}

/* вывод массива на экран*/
cout << " массив x" << endl; for (int j=0; j<N; j++) cout << setw(4) << x[j]; cout << endl;
cout << " массив y" << endl; for (int j=0; j<N; j++) cout << setw(4) << y[j]; cout << endl;
cout << " массив z" << endl; for (int j=0; j<k; j++) cout << setw(4) << z[j]; cout << endl;

if(!k) cout <<endl<< "пересечения нет" << endl;
system("pause");
return 0;
}
Код не проверял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2013, 23:10   #8
alexelev
Пользователь
 
Регистрация: 05.12.2012
Сообщений: 26
По умолчанию

да, будет правильно
http://ideone.com/Cu3LYK
или тоже изящно
http://ideone.com/2vFBbP

Последний раз редактировалось alexelev; 01.06.2013 в 23:19.
alexelev вне форума Ответить с цитированием
Старый 01.06.2013, 23:25   #9
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

спасибо большое=)
fkty вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в коде программы. Proger16 Помощь студентам 3 14.04.2013 10:59
Ошибка в коде программы. Proger16 Visual C++ 1 14.04.2013 10:45
ошибка в коде программы Ioane Visual C++ 5 12.02.2012 12:00
Ошибка в коде программы VB Мина Помощь студентам 1 02.12.2011 06:54
Ошибка в коде программы eXtrem Помощь студентам 5 09.04.2011 19:34