Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2009, 22:13   #1
Bella
Пользователь
 
Регистрация: 24.09.2009
Сообщений: 23
По умолчанию Зачада на массив. Язык С.Создание файла

Здравствуйте! Исправьте пожалуйста программу:
нужно создать массив из 20 случайных элементов(в виде матрицы).Найти сумму максимального и минимального элемента массива в каждой строке.Результат записать в файл.
include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include "string.h"
#define FNAME "D:\\n.txt.\0"\


void main()


{ char name[20];
int a[4][5];
int i,j,max,min;
FILE *k;
int b;
srand(time(NULL));
k=fopen(FNAME,"wt");
if (k==NULL)
{
printf ("Error");
getch ();
}
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
a[i][j] = rand()%100;
printf("%2i ",a[i][j]);
fprintf(k,"a[i][j]:");
scanf("%2i",&a[i][j]);
fprintf(k,"%2i/n",a[i][j]);

}
printf("\n");
}
for(i=0;i<4;i++)
{
max=min=a[i][j];
for(j=0;j<4;j++)
{
if (a[i][j]>max) max=a[i][j];
if (a[i][j]<min) min=a[i][j];
}

b=max+min;
printf("%i max+min = %i+%i = %i\n",i+1,max,min,max+min);
fprintf(k,"max+min");
scanf("%i",&b);
fprintf(k,"%2i\n",b);
fclose(k);
}
getch ();
}
В принципе без создания файла,программа работала правильно,а теперь файл создаёт,но чушь какая-то получается.
Bella вне форума Ответить с цитированием
Старый 03.11.2009, 23:40   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
scanf("%i",&b);
Не понятно для чего вы пытаетесь ввести новое значение поверх уже посчитанного, а затем писать ео в файл?

То же самое и при инициализации массива. Вы его или вручную вводите scanf("%2i",&a[i][j]); или рандомом a[i][j] = rand()%100;

При заполнении рандомом для того, чтобы числа были разными при каждом запуске программы, добавьте это

Код:
#include <time.h>
...

srand(time(0));
...
counter вне форума Ответить с цитированием
Старый 05.11.2009, 19:12   #3
Bella
Пользователь
 
Регистрация: 24.09.2009
Сообщений: 23
По умолчанию

Теперь в файл матрицу записывает и сумму максимального и минимального элемента только первой строки,а ещё три строки не записывает,почему?
void main()
{
int name [20];
int a[4][5];
int i,j,max,min;
int n;
FILE *fp;
srand(time(NULL));
fp=fopen(FNAME,"wt");

if (fp==NULL)
{
printf ("Error");
getch ();
}
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{

a[i][j]=rand()%100;
printf("%2i ",a[i][j]);
fprintf(fp,"%2i ",a[i][j]);

}
printf("\n");
fprintf(fp,"\n");

}
for(i=0;i<4;i++)
{
max=min=a[i][j];
for(j=0;j<4;j++)
{
if (a[i][j]>max) max=a[i][j];
if (a[i][j]<min) min=a[i][j];
}
printf("%i) max+min = %i+%i = %i\n",i+1,max,min,max+min);
fprintf(fp,"%i) max+min = %i+%i = %i\n",i+1,max,min,max+min);
fclose(fp);
}
getch ();
}

Bella вне форума Ответить с цитированием
Старый 05.11.2009, 19:40   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

вы закрываете файл после первой итерации цикла for(i=0;i<4;i++), вынесите fclose(fp) за скобку } перед getch()
counter вне форума Ответить с цитированием
Старый 05.11.2009, 19:58   #5
Bella
Пользователь
 
Регистрация: 24.09.2009
Сообщений: 23
По умолчанию

ой точно!!! Спасибо боооольшое))))),всегда я что-то простое пропускаю)
Bella вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на массив(язык С) Bella Помощь студентам 1 17.10.2009 17:44
Задача на массив (язык C) Bella Помощь студентам 2 08.10.2009 19:50
Проблема такова: язык:Delphi7; сохранения файла; загрузка файла в String Grid lightdevil Общие вопросы Delphi 3 06.03.2009 23:10