Программа для объединения двух массивов в один без повторения элементов и печати объединенного массива но его не печати
#include<stdio.h> #include<stdlib.h> int *add(int *p,int a,int *q,int b); void sort(int *p,int a); int tem=0; /* tem is the count of the total elements without repetition*/ int main() { int *p,*q,a,b,i,*r; printf("enter the number of elements in the first array\n"); scanf("%d",&a); p=(int *) malloc(a*sizeof(int)); printf("enter the number of elements in the second array\n"); scanf("%d",&b); q=(int *) malloc(b*sizeof(int)); printf("enter the elements in the first array\n"); for(i=0;i<a;i++) { printf("enter the %d element\n",i+1); scanf("%d",p+i); } printf("enter the elements in the second array\n"); for(i=0;i<b;i++) { printf("enter the %d element\n",i+1); scanf("%d",q+i); } sort(p,a);sort(q,b); r= add(p,a,q,b); sort(r,tem); printf("the sorted and combined list without repetitions is\n"); for(i=0;i<tem;i++) { printf("%d\n",*(r+i)); } return 0; } void sort(int *p,int a) { int i,j,temp; for(i=0;i<a;i++) { for(j=i;j<a;j++) { if(*(p+i)>*(p+j)) { temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } } } int *add(int *p,int a,int *q,int b) { int i,j,k; int *r; int z,count=a+b;/* initialized count as the total number of elements in both including repetitions*/ r=(int *) malloc(count*sizeof(int)); for(j=0;j<a;j++) { for(k=0;k<=tem;k++) { if(k==tem&&tem!=0) break; if(*(r+k)!=*(p+j)) { *(r+tem)=*(p+j); tem++; } } } for(j=0;j<b;j++) { for(k=0;k<tem;k++) { if(*(r+k)!=*(q+j)) *(r+tem)=*(q+j); tem++; }/*at last tem will be equal to count.*/ } return r; }
Richard MacCutchan
if(*(r+k)!=*(p+j))
*(r+tem)=*(p+j);
Как вы ожидаете, что кто-то (даже вы через несколько недель) поймет такие запутанные заявления? Используйте читаемые имена переменных и комментарии, чтобы сделать ваш код понятным.
Member 11324568
сэр,i,j,k-это общие переменные , используемые для выполнения цикла,а p, q-указатели на первый элемент двух массивов.Я использовал все переменные определенного вида в качестве непрерывных алфавитов, чтобы избежать путаницы.
[no name]
Переменные должны иметь значимые имена, иначе никто, даже вы, не сможет понять код. Почему вы оказались в такой ситуации - подумайте об этом? Зачем кому-то тратить драгоценное время на изучение этой головоломки? Перепишите его четко, и он может просто работать.
Member 11324568
Хорошо ,я буду использовать значимые переменные,попробуйте помочь мне найти здесь ошибку.
[no name]
В мире, где я живу, люди отлаживают свой собственный код. Это все, о чем вы просите. Стараться.
Member 11324568
Я новичок в программировании и умею писать алгоритмы, но делаю определенные ошибки при преобразовании их в код...я уже написал 2 версии кода без массивов, но я просто пытаюсь узнать свою ошибку здесь, чтобы не повторять их в долгосрочной перспективе...спасибо
Philippe Mori
Пожалуйста, пусть код отформатирован как код C++. Прекратите удалять форматирование. Это не трудно правильно использовать этот сайт, так что приложите некоторые усилия.
Andreas Gieriet
Пожалуйста, *не* возвращайте текущее форматирование - исходное форматирование было настолько нарушено, что никто не может разумно помочь.
Спасибо
Энди