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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2011, 17:58   #1
limaxY
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 12
По умолчанию Строки (найти ошибку)

помогите найти ошибку


Цитата:
#include <iostream>
using namespace std;

void main()
{
setlocale(LC_ALL,"Russian");
long a[100], b[100], c[200];
int ia,ib,ic,i,k1,k2;

cout<<"Введите 1-ый массив: "; //количество элементов в массиве A
cin>>k1;
for(i=0;i<k1;i++)
cin>>a[i];

cout<<"Введите 2-ой массив: "; //количество элементов в массиве B
cin>>k2;
for(i=0;i<k2;i++)
cin>>b[i];

for(ia=0,ib=0,ic=0;(ia<k1)&&(ib<k2) ;ic++) //используем for
if(a[ia]<b[ib])
c[ic]=a[ia++];
else c[ic]=b[ib++];

for(;ia<k1;ia++,ic++)
c[ic]=a[ia];
for(;ib<k2;ib++,ic++)
c[ic]=b[ib];

cout<<"Результат: ";
for(i=0;i<(k1+k2);i++)
cout<<c[i]<<" ";
}
limaxY вне форума Ответить с цитированием
Старый 04.01.2011, 18:07   #2
kenwood2010
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 97
По умолчанию

а в чем проблема?
и что за ошибка выходит?
Вложения
Тип файла: rar Результат.rar (94.5 Кб, 9 просмотров)
kenwood20072@rambler.ru ICQ: 701 302 135. (Программирование на C++, С. Решение задач по физике)

Последний раз редактировалось kenwood2010; 04.01.2011 в 18:13.
kenwood2010 вне форума Ответить с цитированием
Старый 04.01.2011, 18:12   #3
limaxY
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 12
По умолчанию

вот условие:

Цитата:
Задана две целочисленные неубывающие последовательности A=(ai), i=1..n, n<=100 и B=(bi),
i=1..n, n<=100, т.е. есть одинаковые элементы. Объединить эти массивы так,
чтобы результирующий массив стал строго возрастающим.
у меня выводит числа как вздумаетя компилятору(((
limaxY вне форума Ответить с цитированием
Старый 04.01.2011, 18:15   #4
kenwood2010
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 97
По умолчанию

Цитата:
Сообщение от limaxY Посмотреть сообщение
у меня выводит числа как вздумаетя компилятору(((
см.приложение.
выходит все по порядку!
kenwood20072@rambler.ru ICQ: 701 302 135. (Программирование на C++, С. Решение задач по физике)
kenwood2010 вне форума Ответить с цитированием
Старый 04.01.2011, 18:19   #5
limaxY
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 12
По умолчанию

да...только если ввести в первом массиве и втором числа не по-порядку, то и результирующий будет не по порядку(((
limaxY вне форума Ответить с цитированием
Старый 04.01.2011, 18:23   #6
kenwood2010
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 97
По умолчанию

вон в чем дело!
делай массивы не статическими, а динамическими или ставь защиту если введут число больше 100!
kenwood20072@rambler.ru ICQ: 701 302 135. (Программирование на C++, С. Решение задач по физике)
kenwood2010 вне форума Ответить с цитированием
Старый 04.01.2011, 18:26   #7
limaxY
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 12
По умолчанию

kenwood2010
спасибо! попробую что-нибудь сделать)
limaxY вне форума Ответить с цитированием
Старый 04.01.2011, 21:18   #8
limaxY
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 12
По умолчанию

ааа....я не знаю, как делать! ((((((((
limaxY вне форума Ответить с цитированием
Старый 05.01.2011, 04:55   #9
Tony Parker
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 52
По умолчанию

Динамические массивы реализуются так:

Код:
#include <cstdlib>
#include <iostream>
using namespace std;

void main()
{
	setlocale(LC_ALL,"Russian");
	long *a, *b, *c;
	int ia,ib,ic,i,k1,k2;

	cout<<"Введите 1-ый массив: "; //количество элементов в массиве A
	cin>>k1;
	a = (long *)malloc( k1*sizeof(long) );
	for(i=0;i<k1;i++)
		cin>>a[i];
	// TODO: отсортировать a[]

	cout<<"Введите 2-ой массив: "; //количество элементов в массиве B
	cin>>k2;
	b = (long *)malloc( k2*sizeof(long) );
	for(i=0;i<k2;i++)
		cin>>b[i];
	// TODO: отсортировать b[]

	c = (long *)malloc( (k1+k2)*sizeof(long) );

	for(ia=0,ib=0,ic=0;(ia<k1)&&(ib<k2) ;ic++) //используем for
		if(a[ia]<b[ib]) 
			c[ic]=a[ia++]; 
		else c[ic]=b[ib++]; 

	for(;ia<k1;ia++,ic++)
		c[ic]=a[ia];
	for(;ib<k2;ib++,ic++)
		c[ic]=b[ib];

	cout<<"Результат: ";
	for(i=0;i<(k1+k2);i++)
		cout<<c[i]<<" ";
	free(a); free(b); free(c);
}
Плюс для правильной работы программы надо отсортировать массивы a и b -- места где надо доделать сортировку помечены "// TODO:"
AllSuccess1.ru - каталог полезных курсов.
Tony Parker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти ошибку(строки) Nafanja20 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 21.05.2010 21:42
Строки в Паскале, найти ошибку bingooo Помощь студентам 0 07.04.2010 19:24
Корявое копирование строки. Помогите найти ошибку. GonZaleZ Общие вопросы C/C++ 14 02.12.2009 21:58
Строки. Помогите найти ошибку. 5nizza77 Помощь студентам 1 16.10.2009 16:10