Задача =)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Sinex, 3 May 2007.

  1. Sinex

    Sinex Elder - Старейшина

    Joined:
    17 Aug 2006
    Messages:
    111
    Likes Received:
    24
    Reputations:
    5
    Помогите пожалуйста с задачей на C++,буду благодарен до конца жизни, не получается у самого, опыта нет =(
    В рабочем каталоге Exzample размещен файл, содержащий информацию об итогах сессии в учебной группе. Сведения о каждом студенте предоставлены в следующем виде:
    Фамилия, инициалы - 20 букв
    оценки по физике, математике, механики и истории - 1 байт
    Составить программу создания индексного файла в каталоге E:/rab с именем Ind1.dat, в котором разместить записи, средний балл по всем экзаменам в которых меньше 3,5.
    Функции работы с записями оформить в виде открытого метода.
     
  2. Gorn

    Gorn Member

    Joined:
    25 Oct 2006
    Messages:
    13
    Likes Received:
    8
    Reputations:
    2
    Если я правильно понял задачу - то вот прога:
    Code:
    #include <stdio.h>
    #include <string.h>
    
    class CFind
    {
    	char *FILEIN,*FILEOUT;
    public:
    	void SetInFile(char *name) { FILEIN = new char[strlen(name)]; strcpy(FILEIN,name); }
    	void SetOutFile(char *name) { FILEOUT = new char[strlen(name)]; strcpy(FILEOUT,name); }
    	void Make()
    	{
    		char line[21],fio[21];
    		int p,m,meh,h;
    		double res;
    		FILE *fin = fopen(FILEIN,"r");
    		FILE *fout = fopen(FILEOUT,"w");
    		while (fgets(line,20,fin))
    		{
    			strcpy(fio,line);
    			fgets(line,20,fin);
    			sscanf(line,"%d %d %d %d",&p,&m,&meh,&h);
    			if ((double)(p+m+meh+h)/4.0>=3.5) continue;
    			fputs(fio,fout);
    			fputs(line,fout);		
    		}
    		fclose(fin);
    		fclose(fout);
    	}
    };
    
    int main()
    {
    	CFind fnd;
    	fnd.SetInFile("base.txt");
    	fnd.SetOutFile("E:/rab/ind1.dat");
    	fnd.Make();
    	return 0;
    }
    
    Формат in файла:
    Code:
    Пупкин В.В.
    3 5 7 2 
    Петров П.П
    4 6 8 3 
    Иванов И.И
    1 2 2 2 
    
    Формат out файла:
    Code:
    Иванов И.И
    1 2 2 2 
    
    Если чё не так - пиши )
     
    #2 Gorn, 4 May 2007
    Last edited: 4 May 2007
  3. Sinex

    Sinex Elder - Старейшина

    Joined:
    17 Aug 2006
    Messages:
    111
    Likes Received:
    24
    Reputations:
    5
    Спасибо огромное =)
     
  4. Sinex

    Sinex Elder - Старейшина

    Joined:
    17 Aug 2006
    Messages:
    111
    Likes Received:
    24
    Reputations:
    5
    Опять не могу решить, помогите плиз, это последняя для сдачи. Вся надежда на родной античат =(

    Файл Rez1.dat,расположенный в каталогу EXZAMPL диска, содержит вещественные числа, являющиеся значениями матрицы размера 8*9. Составить объект имеющий метод чтения их в динамический массив и поиска минимального значения из максимальных значений строк матрицы. На экран вывести значение и исходной матрицы, полученные максимальные значения и выбранное минимальное.
     
  5. sni4ok

    sni4ok Elder - Старейшина

    Joined:
    4 Nov 2006
    Messages:
    115
    Likes Received:
    37
    Reputations:
    12
    просто ужас, куча мемори ликов.
     
    1 person likes this.
  6. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    блин я ужасно торможу и голова болит!вот что получилось:
    Code:
    class matr
    {
    public:
    	int m[8][9];
    	void read(char* filename)
    	{
    		ifstream f(filename);
    		for(int i=0;i<8;i++) for(int j=0;i<9;i++) f>>m[i][j];
    	}
    	void show()
    	{
    		for(int i=0;i<8;i++) for(int j=0;i<9;i++) cout<<m[i][j]<<endl;
    	}
    };
    
     
  7. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    А вот и поиск мах числа из мах строк. Мог где-нить не поставить } . И не забудь про +
    Code:
    //матрица int m[8][9] уже есть. Ищем Макс значения в стрроках.
    
    int e;
    int n;
    int w = 0;
    int s=8;//строки и столбцы
    int k=9; 
    int l = 0;
    for(s; s=>0; s--)
    {
    for (k;k=>0; k--)
    {
    if(l==0){ //если ваще первый наш элемент 
    e = [s][k];
    l++;
    }
    else{
    if(e<m[s][k]){ //если текущий эл-мент больше мах значение строки
    e=m[s][k]; 
    }
    }
    if(k == 0){//если посчитали всю строку 
    if(w==0){ //если наша первая  строка
    n = e; //текущее мах значение строки кладём в мах всей матрицы 
    w++;
    }
    if(e>n){ //текущее мах значение строки больше мах всей матрицы 
    n = e;
    }  
    l = 0; //  посчитали всю строку  
    }
    
    
    }
    }
     
    #7 Ky3bMu4, 14 May 2007
    Last edited: 14 May 2007
    1 person likes this.
  8. Sinex

    Sinex Elder - Старейшина

    Joined:
    17 Aug 2006
    Messages:
    111
    Likes Received:
    24
    Reputations:
    5
    всем спасибо)