Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> задача на работу с файлами 
:(
    Опции темы
1122
Дата 6.4.2008, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 24.10.2007

Репутация: -1
Всего: нет



ок. Спасибо за помощь.
Вот еще вопрос возник, как быть в такой ситуации:
Есть массив чисел (кратный 7, например 21 число). Нужно брать из этого массива по 7 чисел и анализировать на наличие какой-нибудь цифры. Если данная цифра (например ноль) есть в выбранной семерке, то ее дальше не рассматривать. После анализа вывести на экран данный массив, но без этих групп цифр (по 7 шт), в которых встретились, например, нули. Подскажите алгоритм пожалуйста.

Это сообщение отредактировал(а) 1122 - 6.4.2008, 20:20
PM MAIL   Вверх
archimed7592
Дата 6.4.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(1122 @  6.4.2008,  20:18 Найти цитируемый пост)
Подскажите алгоритм пожалуйста. 

Код

Для каждого кортежа из 7 чисел в массиве // for
    Для каждого числа из кортежа // for
         Проанализировать число, если подходит, то break.



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
1122
Дата 6.4.2008, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 24.10.2007

Репутация: -1
Всего: нет



Вот придумал такой код:

Код

    for(i=0; i<=N; i++)
    {
        if(i%7==0)
        {
            for(j = b; j <= i; j++)
            {
                if(arr1[j] != 0)
                {
                    f = 0;
                }
                else f = 1;
            }
            if(f == 0)
            {
                for(j = b; j <= i; j++)
                {
                    arr2[a] = arr1[j];
                    a++;
                }
            }
            b = i;
        }
    }


Но он выдает опять же абру-кадабру из цифр.
PM MAIL   Вверх
opjox
Дата 6.4.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 17.1.2008

Репутация: 2
Всего: 14



Цитата(1122 @  6.4.2008,  18:02 Найти цитируемый пост)
нужно считать из типизированного файла числа (кстати, что значит типизированный? это не текстовой? если да, то какой?).

В дельфях это бинарные файлы, из которых можно читать данные только одного типа (соответственно, сдвиги в файле будут фактически равны sizeof(int)*n, но там нужно будет указать только n). В Си нет такой строгой типизации, но если подразумевается именно это, то работа, наверно, будет примерно такой:

Код

#include <stdio.h>

#define num 3

int main()
{
  
  if(FILE * f = fopen("test.int", "wb")) { // ключ 'b' открывает файл как бинарный
    int mas[num] = {0, 255, 65535};
    if(fwrite(mas, sizeof(int), num, f) != num) printf("not write\n");
    fclose(f);
  } else printf("not create file\n");

  if(FILE * f = fopen("test.int", "rb")) { // опять открываем как бинарный, но теперь на чтение
    int mas[num];
    if(fread(mas, sizeof(int), num, f) == num) {
      for(int i=0; i<num; i++) printf("%d\n", mas[i]);
    } else printf("not read\n");
    fclose(f);
  } else printf("not open file\n");

  return 0;
}


Цитата(1122 @  6.4.2008,  20:53 Найти цитируемый пост)
Вот придумал такой код:
...
Но он выдает опять же абру-кадабру из цифр.

Если я правильно понял условия задачи, то:
Код

#include <stdio.h>

#define jmp 2
#define n 3

bool FindDig(int in, int find); // поиск цифры в числе

int main()
{
  int mas[jmp*n] = {15, 16, 17, 18, 15, 16};
  bool out[n] = {1, 1, 1}; // все true

  for(int i=0; i<n; i++) {
    for(int j=0; j<jmp; j++) {
      if(FindDig(mas[i*jmp + j], 0)) {
        out[i] = false;
        break;
      }
    }
  }

  for(int i=0; i<n; i++) { // вывод
    if(out[i]) {
      for(int j=0; j<jmp; j++) printf("%d ", mas[i*jmp+j]);
    }
    printf("\n");
  }

  return 0;
}


jmp в твоем случае будет 7, а n = 21/jmp 
Функцию нахождения цифры в числе (FindDig) реализуй сам


PM MAIL ICQ   Вверх
1122
Дата 6.4.2008, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 24.10.2007

Репутация: -1
Всего: нет



Спасибо за помощь.
PM MAIL   Вверх
archimed7592
Дата 7.4.2008, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(1122 @  6.4.2008,  20:53 Найти цитируемый пост)
    for(i=0; i<=N; i++)
    {
        if(i%7==0)
        {

Такую абракадабру обычно пишут так:
Код

for(int i = 0; i < N; i += 7)
{
   // ...
}



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.