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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Сравнение массивов 
:(
    Опции темы
Baltazar5000
Дата 15.2.2007, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Требования:
1)Создать функцию "Вычитать массив из файла" и сохранить её в отдельном файле с расширением *.h

Пример библиотеки "вычитать массив из файла"(А какой он будет у меня?).
Код

int read_mas(int list[], int size)
{
    int i;FILE*f;
    char*ch="fil_mas.dat";
    if ((f=fopen(ch,"r"))==NULL)
    {
        fprintf(stderr,"Не удается открыть файл...\n");
        return 1;
    }
    for(i=0;i<size;i++)
    {
        fscanf(f,"%d", &list[i]);
    }fclose(f);
}


2)Обращения к функциям осуществлять из тела функции main()

ЗАДАНИЕ:
Создать программу - pr20.cpp
1)Вычитывающую из файла pr19.dat(смотрите ниже) значения элементов массива.
2)Выводящую на экран:
  -Значения элементов из pr19.dat
  -Числа из массива для которых a итое >= i


Вот pr19.cpp

WIND.h - Окно
Код

Wind(int x1, int y1, int x2, int y2, int z1, int z2)
    {    // построение тени цветом z1
        window(x1, y1, x2, y2);textbackground(z1); clrscr();
        // построениеокна для вывода значений цветом z2
        window(x1 - 2, y1 - 1, x2 - 2, y2 - 1);textbackground(z2); clrscr();
        return 0;
    }


pr19_i.h - Инициализация
Код

void setrandom(int h[], int size)
{
    int i;
    for(i=0;i<size;i++)
    h[i] = random(70)+20;
}


pr19_v.h - вывод на экран
Код

void get_mas(int h[], int size)
    {
        int i;
        for(i = 0; i < size; i++)
        {
            if(i%9==0)
            printf("\n   ");
            printf("%7d", h[i]);
        }
        printf("\n\n");
    }


pr19_p.h - вывод в файл
Код

int fil_mas(int h[], int size)
{
    int i;
    char*ch="../dat/pr19.dat";
    FILE*f;
    if((f=fopen(ch,"w"))==NULL)
    {
        fprintf(stderr,"Ошибка! Не удается открыть файл..\n");
        return 1;
    }
for(i=0;i<size;i++)
{
    fprintf(f,"%d\n", h[i]);
}
fclose(f);
return 0;
}

pr19.cpp - А вот и само задание.
Код

#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
// Подключение функций собственной библиотеки
#include"..\\h\\WIND.h"
#include"..\\h\\pr19_i.h" //Инициализация
#include"..\\h\\pr19_v.h" //Вывод на экран
#include"..\\h\\pr19_p.h" //Вывод в файл
int k;
int main()
{
    textmode(3);
    window(1,1,80,25);
    textattr(15 + (7 << 4));
    clrscr();
    Wind(1,1,80,25,0,9);
    Wind(15,3,65,6,8,3);
    gotoxy(12,2);
    cputs("Исходный массив");
    Wind(5,10,70,20,2,6);

    const int N=32;
    int h[N];randomize();

    k=32;
    setrandom(h,N);
    get_mas(h,N);
    fil_mas(h,N);


    getch();
    return 0;
}




PM MAIL   Вверх
V.A.KeRneL
  Дата 16.2.2007, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

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



Цитата(Baltazar5000 @  15.2.2007, 22:59 Найти цитируемый пост)

Создать функцию ... и сохранить её в отдельном файле с расширением *.h

Преподу твоему надо руки оторвать! Хидер-файлы не для этого!!

Цитата(Baltazar5000 @  15.2.2007, 22:59 Найти цитируемый пост)

Пример библиотеки "вычитать массив из файла"(А какой он будет у меня?).

А чем текущий вариант не устраивает?

Эх, удивительно, такой большой пост, а я так и не понял толком, что требуется... smile 
2 функции что ли, которые выводят это: 
Цитата(Baltazar5000 @  15.2.2007, 22:59 Найти цитируемый пост)

  -Значения элементов из pr19.dat
  -Числа из массива для которых a итое >= i

?

Если угадал, то: 
Код

#include <stdio.h>      /* for scanf(), printf(), puts(), putchar() */
#include <sys/types.h>  /* for size_t and ssize_t */

/* ========================   Printing of arrays   ======================== */

/* 
   Prints an array.
 */
void 
print_array(const int *arr, size_t nelem) 
{ 
    int i;  /* index, counter */
    
    putchar('[');
    if (nelem > 0) 
        printf("%d", arr[0]);
    for (i = 1; i < nelem; ++i) 
        printf(", %d", arr[i]);
    putchar(']');
    putchar('\n');
}  /* print_array() */

/* 
   Печатает [QUOTE]Числа из массива для которых a итое >= i[/QUOTE]
 */
void 
print_array_ai_ge_i(const int *arr, size_t nelem) 
{ 
    int i;  /* index, counter */
    int has_one = 0;  /* Есть ли хоть один элемент.  Если да, то можно печатать запятые.  */
    
    putchar('[');
    if (nelem > 0) 
        if (arr[0] >= 0) { 
            printf("%d", arr[0]);
            has_one = 1;
        }
    for (i = 1; i < nelem; ++i) 
        if (arr[i] >= i) { 
            if (has_one) { 
                putchar(',');
                putchar(' ');
            }
            printf("%d", arr[i]);
            has_one = 1;
        }
    putchar(']');
    putchar('\n');
}  /* print_array_ai_ge_i() */

/* ======================================================================== */



Это сообщение отредактировал(а) V.A.KeRneL - 16.2.2007, 00:54


--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
Syberex
Дата 16.2.2007, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

//открытие файла в массив 
unsigned char*  FileOpenToMass(char* Path)
  {
     int handle=open(Path,O_CREAT);
     unsigned long LenFile=filelength(handle);
     close (handle);
     fstream in(Path,ios_base::in |ios_base::binary);
     char *pointer=new char[LenFile];
     in.read(pointer,LenFile);
     in.close();
     //delete []  pointer;
     return  pointer;
  }

/запись в файл
void FileRecord(char* Path,char* first, char* last)
{
fstream in(Path,ios_base::out |ios_base::binary); 
in.write(first,last-first);
in.close();
};



считывание и запись массива

--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
V.A.KeRneL
  Дата 16.2.2007, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

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



Syberex, я думаю, для него настолько «приплюснутый» Си будет шоком. smile



--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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