Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 13.12.2017, 18:17   #1
NO ONE
Новичок
 
Регистрация: 12.12.2017
Сообщений: 1
Репутация: 10
По умолчанию Не могу понять почему не работает программа на С.

Ребята, помогите, я только учусь программированию на С. И после долгих раздумий, решил попросить помощи. Спасибо! Разъясните, пожалуйста, что здесь неправильно. И как это исправить.

Код:

//дано два одномерных массива A и B. Вычислить одномерный массив С, который содержит элементы в одном экземпляре 
//которые меньше заданного числа и присутствуют в нескольких экземплярах в одном из массивов и отсутствуют в другом

#include <stdio.h>
#include <stdlib.h>

int main() {
	int a[20], *i, b[20], *j, c[20], zadanchislo, *p, *p2, *l, n, m, k, *p3;
	printf("Vvedite kolvo elementov massiva A");
	scanf("%d", &n);
	printf("Vvedite massiv  A");
	for (i = a; i < a + n; i++) {
		printf("a[i]=", i);
		scanf("%d", &i);
	}

	printf("Vvedite kolvo elementov massiva B");
	scanf("%d", &m);
	printf("Vvedite massiv  B");
	for (j = a; j < a + m; j++) {
		printf("b[j]", j);
		scanf("%d", &j);
	}
	printf("Vvedite zadannoe chislo");
	scanf("%d", &zadanchislo);

	for (i = a; i < a + n; i++) {
		if (*i < zadanchislo) {
			for (j = b; j < b + m; j++) {
				if (*j != *i){
					k++;
				}
			}
			if (k == m) {
				*p = *i;
				p++;
			}
		}
	}
	

	for (l = c; l<p; l++) {
		for (p2 = c + 1; p2<p; p2++) {
			if (*p == *p2) {
				p = p - 1;
				for (p3 = p2; p3<l; p3++) {
					*p3 = *(p3 + 1);
				}
			}
		}
	}
}


Последний раз редактировалось Alex11223; 13.12.2017 в 18:20.
NO ONE вне форума   Ответить с цитированием
Старый 13.12.2017, 18:21   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 15,818
Репутация: 3110

icq: 512-765
skype: alexp.frl
По умолчанию

А почему вы решили, что что-то неправильно?
Alex11223 на форуме   Ответить с цитированием
Старый 13.12.2017, 18:23   #3
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 10,871
Репутация: 1806

icq: 216409213
По умолчанию

1. Кто вас так учил массивы вводить? Вы уже b не туда вводите. Пишите без арифметики указателей:
Код:

for(i = 0; i < n; i++) {
printf("a[%d]=", i);
scanf("%d", &a[i]);
}

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

3. Почему при проверке кол-ва вы проверяете не несколько как по условию, а весь другой массив?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!

Последний раз редактировалось p51x; 13.12.2017 в 18:27.
p51x на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять почему не работает Valeriy_136 Помощь студентам 2 15.10.2017 09:10
Не могу понять почему не работает функция SeRhy JavaScript, Ajax 0 09.02.2012 17:41
Не могу понять почему не работает микрофон Stilet Железо 8 08.10.2010 16:54
Cходящийся ряд (программа по идее должна работать но почему не работает понять не могу) в С++ Vultar Помощь студентам 3 17.12.2009 14:04
Почему не работает...хм....понять не могу! Артур Иваныч Microsoft Office Excel 9 01.12.2009 18:58


22:02.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru