Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Генрисон
4 / 3 / 1
Регистрация: 30.10.2012
Сообщений: 299
1

В файл out.txt записать те числа, которые больше своих соседей

10.02.2013, 17:24. Просмотров 1529. Ответов 8
Метки нет (Все метки)

Дан ряд чисел в файле in.txt : 0 2 -3 4 1 8 7 10
Нужно в файл out.txt записать те числа,которые больше своих соседей.(здесь это 2,8,10)
Подскажите,каким образом можно сделать сравнение.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2013, 17:24
Ответы с готовыми решениями:

Удалить из массива числа, которые равны среднему арифметическому своих соседей
#include <stdio.h> #include<locale.h> /*Программа должна убирать число которое равно среднему...

Найти количество вещественных чисел, которые больше своих "соседей"
Даны натуральное число n и вещественные числа Х1 X2, ..., Xn. Найти количество вещественных чисел,...

Циклы: определить, сколько элементов последовательности больше своих соседей
Дано 20 вещественных чисел. Определить, сколько из них больше своих «соседей», то есть предыдущего...

Дано n вещественных чисел. Определить, сколько из них больше своих соседей
"Дано n вещественных чисел. Определить сколько из них больше своих соседей, т.е. предыдущего и...

Определить, сколько элементов массива Х(40) больше своих соседей (слева и справа) как минимум вдвое
Определить сколько элементов массива Х(40) больше своих соседей( слева и справа) как минимум вдвое(...

8
Belkin-VD
156 / 155 / 81
Регистрация: 31.12.2012
Сообщений: 254
10.02.2013, 18:03 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Только еще и 4 тоже больше чем соседи:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
 
   double a[8];
   int i=0;
   char *fname="in.txt",*fnameout="out.txt",t[5],*stopstring;
   
   FILE *r;
   r = fopen(fname, "r");
   
   printf("\nRead file: %s",fname);
   printf("\n");
   
   while ((fgets(t,5,r))!=NULL) {
      a[i]=strtod(t,&stopstring);
      printf(" %.0f",a[i]);
      i++;
   }
   
   fclose(r);
   printf("\n\nEti elementy bol`she svoix sosedey:\n\n");
   
   FILE *w;
   w = fopen(fnameout, "a");
   
   for(i=0; i<8; i++) {
      if(a[i] > a[i+1] && i==0) {
         printf("\n%.0f",a[i]);
         fprintf(w, "\n%.0f", a[i]);
      }
      else if(a[i] > a[i-1] && i==7) {
         printf("\n%.0f",a[i]);
         fprintf(w, "\n%.0f", a[i]);
      }
      else if(a[i] > a[i+1] && a[i] > a[i-1]) {
         printf("\n%.0f",a[i]);
         fprintf(w, "\n%.0f", a[i]);
      }
   }
   
   printf("\n");
   fclose(w);
   
   return 0;   
}
0
Миниатюры
В файл out.txt записать те числа, которые больше своих соседей  
Croessmah
10.02.2013, 18:12
  #3

Не по теме:

Цитата Сообщение от Генрисон Посмотреть сообщение
0 2 -3 4 1 8 7 10
//...
(здесь это 2,8,10)
а 4?

0
Генрисон
4 / 3 / 1
Регистрация: 30.10.2012
Сообщений: 299
10.02.2013, 18:19  [ТС] 4
Belkin-VD,скажите пожалуйста,если мы не знаем заранее,сколько чисел в файле in.txt,тоесть их там N,то сильно ли усложнится код?

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


а 4?

простите,четвёрку не увидел.
0
10.02.2013, 18:19
Belkin-VD
156 / 155 / 81
Регистрация: 31.12.2012
Сообщений: 254
10.02.2013, 18:32 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Ну в общем думаю нет.
Если прям с N, Тоесть незнаешь сколько их будет то тогда с динамическим выделением будет решение(malloc + free), т.к. ты не будешь знать под сколько выделять массив.

Но я предлагаю так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
 
   double a[50];
   int i=0,j=0;
   char *fname="in.txt",*fnameout="out.txt",t[5],*stopstring;
   
   FILE *r;
   r = fopen(fname, "r");
   
   printf("\nRead file: %s",fname);
   printf("\n");
   
   while ((fgets(t,5,r))!=NULL) {
      a[j]=strtod(t,&stopstring);
      printf(" %.0f",a[j]);
      j++;
   }
   
   fclose(r);
   printf("\n\nEti elementy bol`she svoix sosedey:\n\n");
   
   FILE *w;
   w = fopen(fnameout, "a");
   
   for(i=0; i<j; i++) {
      if(a[i] > a[i+1] && i==0) {
         printf("\n%.0f",a[i]);
         fprintf(w, "\n%.0f", a[i]);
      }
      else if(a[i] > a[i-1] && i==7) {
         printf("\n%.0f",a[i]);
         fprintf(w, "\n%.0f", a[i]);
      }
      else if(a[i] > a[i+1] && a[i] > a[i-1]) {
         printf("\n%.0f",a[i]);
         fprintf(w, "\n%.0f", a[i]);
      }
   }
   
   printf("\n");
   fclose(w);
   
   return 0;   
}
Программа будет считывать до тех пор пока есть строки в файле, а проверять от 1 до последней считанной строки.
Программа будет работать, если строк в файле с числами не более 50.
Если хочешь больше поставь

P.S. 4 я учел
1
Изображения
 
Генрисон
4 / 3 / 1
Регистрация: 30.10.2012
Сообщений: 299
10.02.2013, 19:03  [ТС] 6
Belkin-VD,спасибо Вам большое!

Добавлено через 3 минуты
И можете пояснить вот эти строки:
Цитата Сообщение от Belkin-VD Посмотреть сообщение
C
1
while ((fgets(t,5,r))!=NULL) { a[j]=strtod(t,&stopstring); printf(" %.0f",a[j]); j++; }
0
Belkin-VD
156 / 155 / 81
Регистрация: 31.12.2012
Сообщений: 254
10.02.2013, 19:12 7
C
1
while ((fgets(t,5,r))!=NULL) { a[j]=strtod(t,&stopstring); printf(" %.0f",a[j]); j++; }
Открываем цикл и проходим до тех пор, пока не закончатся строки.
fgets() - считывает построчно от 1 и до последней строки.
a[] - масси объявленный как вещественный.
Вот ты взял допустим третью строку: число -3
но ты взял как символ, и тут вступает в дело функция strtod.
Функция позволяет преобразовать символ числа в вещественное число, причем если это возможно, если это будет не возможно то преобразуется только та часть взятого выражения которая состоит целиком из чисел, указатель укажет на первую встречную лексему.
Суть в общем не в этом.
Берешь символ - strtod преобразуешь в число вещественное и записываешь в ячейку массива.
0
Генрисон
4 / 3 / 1
Регистрация: 30.10.2012
Сообщений: 299
10.02.2013, 19:19  [ТС] 8
Belkin-VD,спасибо огромное) очень благодарен! Очень хорошо объяснили и я всё понял. Просто наш преподаватель работает по такому принципу-он дает на уроке основы какие-то и рассказывает теорию,а что бы написать уже что-то дома,мы должны по его словам по работать сами довольно много,он считает,что это хорошо.
0
Belkin-VD
156 / 155 / 81
Регистрация: 31.12.2012
Сообщений: 254
10.02.2013, 19:25 9
Может быть у него не очень много времени на практику...
Я благодарен тем, кто меня обучал и обучает. Тут много от методики преподавателя зависит, хотя в большей степени конечно от студента
0
10.02.2013, 19:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2013, 19:25

Записать в массив С все элементы из массивов А и В, которые больше числа Р
#include &lt;stdio.h&gt; int main() { int a; int b; int c; int p; int j,i; printf(&quot;Vvedi p=&quot;);...

Массив: Определить, сколько из элементов массива больше своих "соседей"...
Заданные действительные числа x1, x2,. . . , X25. Определить, сколько из них больше своих...

Записать в файл file.txt таблицу умножения числа 5
Записать в файл file.txt таблицу умножения числа 5. Самім легким способом


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru