Я новичок в программировании, и я стараюсь создавать различные виды забавных небольших приложений, чтобы понять основы. Я начал с C, чтобы действительно начинать снизу, поэтому ниже ссылается на C.Поиск массива - замена значений значениями из другого массива в C
Так что в основном я должен массировать [] и заменять [], которые 200 заполнены случайными числами.
Я хочу найти значение [] для значения 32 (ele) и заменить любое значение этого значения соответствующим значением взамен [].
E.g. если: a [22] = 32, замените [22] = 78 => a [22] = 78
В то же время я хотел бы, чтобы он «записывал» номер индекса (22) и записывал его на файл.
Я не могу заставить его проходить через [] несколько раз и заменять каждый экземпляр. Он заменяет только 1 экземпляр, а затем прерывает.
У меня нет ошибки. Msg. для кода ниже. Надеюсь, вы сможете помочь новичкам. Если у вас есть ответ, пожалуйста, найдите минутку, чтобы объяснить, как и почему.
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
FILE *ifp, *ofp;
int ix;
int ik;
int i;
int change;
int count = 0;
int ele = 32;
int num = 200;
int a[200];
int replace[200];
void swap(int a[], int replace[], int change)
{
int temp = replace[change];
a[change] = replace[change];
a[change] = temp;
ifp = fopen("/Users/kjaerolsen/tmp/ilog.txt", "a+");
fprintf(ifp, "%d\n", change);
fclose(ifp);
}
int main(int argc, char *argv[]) {
// creates array with random numbers to draw new numbers from.
srand(time(NULL));
for (int ik = 0; ik < 200; ik++)
{
rand();
replace[ik] = rand() % 200; ///rand_max;
}
for (int ik = 0; ik < 200; ik++)
{
fprintf(ifp, "%d\n", replace[ik]);
}
// creeates main array with random numbers.
srand(time(NULL));
for (int ix = 0; ix < 200; ix++)
{
rand();
a[ix] = rand() % 200; ///rand_max;
}
for (int ix = 0; ix < 200; ix++)
{
printf("plads %d i array: %d\n",ix, a[ix]);
}
// Looks for number 32 (ele) in array
i = 0;
for (int i =0; i < 200; i++)
{
change++;
swap(int a[], int replace[], int change)
count++;
}
if (count == 0)
printf("%d is not present in array.\n", ele);
else
printf("%d is present %d times in array.\n", ele, count);
// Opens the file and rewrites the new array.
ifp = fopen("file1.txt", "w+");
for (int ix = 0; ix < 200; ix++)
{
fprintf(ifp, "%d\n", a[ix]);
}
fclose(ifp);
printf("very done...");
return (0);
}
Не называть 'srand' несколько раз. И нет необходимости в дополнительном вызове 'rand' в циклах инициализации. –
Первое наблюдение, отформатируйте свой код таким образом, чтобы он был наиболее читаемым. И всегда проверяйте функции, которые могут потенциально потерпеть неудачу, например, 'fopen()' возвращает 'NULL', когда возникает проблема, проверьте это. Избегайте глобальных переменных, если вы действительно не знаете, что делаете, и избегайте их, когда не знаете, зачем они вам нужны. –
Что касается вашей проблемы, всегда отправляйте любые ошибки компилятора, полные и неотредактированные в свой вопрос. И вы * делаете * знаете, как вызывать функции массивов сбора данных? Вы делали это несколько раз, даже в этой программе (подсказка: посмотрите на эти вызовы 'printf'), чтобы вы знали, как это сделать, и как вызывать функции в целом. Это не так, как вы пытаетесь вызвать функцию 'swap'. –