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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2010, 10:14   #1
НаташенькаRu
 
Регистрация: 10.09.2010
Сообщений: 3
По умолчанию Заполнение массива. Первый элемент вводит пользователь, а дальше рассчитывает программа

Пишу в Visual studio 2008. задание такое: нужно заполнить массив. Первое число вводит пользователь- это первый элемент массива. Размер массива 12. Следующие элементы массива должну составлять арифметическую прогрессию с шагом 7.3. Предоставляю часть программы, а точнее модуль.
В main размер массива указан. Компилятор ошибок не выдает.
Код:
float*GetMas(float *in_mas, int razm)
{
	printf("vvedite chislo:");
	scanf("%f", &in_mas[0]);
	for(int index = 1; index < razm; index = index + 1)
	{
		in_mas[index]=7,3+in_mas[index];
	}
	return in_mas;
}
в чём моя ошибка?

Последний раз редактировалось Stilet; 24.10.2010 в 12:59.
НаташенькаRu вне форума Ответить с цитированием
Старый 24.10.2010, 10:27   #2
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

in_mas[index]=7,3+in_mas[index];

Вы плюсуете еще незаполненный элемент
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 24.10.2010, 10:35   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вы плюсуете еще незаполненный элемент
+1
т.е. Вам надо так:
Код:
in_mas[index]=7,3+in_mas[index - 1];
p.s. по поводу 7,3 - А точно не 7.3 ?! - Неужели в студии настройки десятичного разделителя берутся из системы? А там, в качестве разделителя, запятая?! Брутально выглядит! я бы и предположить не мог, что такое возможно!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.10.2010, 10:41   #4
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
+1
т.е. Вам надо так:
Код:
in_mas[index]=7,3+in_mas[index - 1];
p.s. по поводу 7,3 - А точно не 7.3 ?! - Неужели в студии настройки десятичного разделителя берутся из системы? А там, в качестве разделителя, запятая?! Брутально выглядит! я бы и предположить не мог, что такое возможно!
ага, из системы) Мне выполняя одну задачу, где надо было обработать текстовый скрипт, где разделитель точка , а не запятая - пришлось менять настройку системы:>
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 24.10.2010, 10:58   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
ага, из системы)
Тогда сразу вопрос.
Это что получается.
Ставим разделитель запятая.
Пишем код: x = 7,3;
компилируем. Сохраняем.
Меняем разделитель в системе.
Открываем исходный текст.
Всё? Он уже не компилируется? Но это же бред!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.10.2010, 11:06   #6
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Тогда сразу вопрос.
Это что получается.
Ставим разделитель запятая.
Пишем код: x = 7,3;
компилируем. Сохраняем.
Меняем разделитель в системе.
Открываем исходный текст.
Всё? Он уже не компилируется? Но это же бред!
честно говоря не проверял, 1 раз поменял, переписал часть кода - и забыл об этом) Может в шарпе тоже есть, что-то типа setlocale, но как-то не сталкивался с подобным
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 24.10.2010, 11:52   #7
НаташенькаRu
 
Регистрация: 10.09.2010
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
+1
т.е. Вам надо так:
Код:
in_mas[index]=7,3+in_mas[index - 1];
p.s. по поводу 7,3 - А точно не 7.3 ?! - Неужели в студии настройки десятичного разделителя берутся из системы? А там, в качестве разделителя, запятая?! Брутально выглядит! я бы и предположить не мог, что такое возможно!
Спасибо. Теперь заполняет правильно. Действительно 7.3

Только у меня теперь другая проблема: неправильно считает сумму

код:

float SumMas(float*mas,int r)
{
float s=0;
for(int i=0; i<r; i=i+1)
{
s=mas[i]+s;
}
return s;
}
НаташенькаRu вне форума Ответить с цитированием
Старый 24.10.2010, 11:56   #8
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

напишите внутри цикла
cout<<mas[i];
и посмотрите какие значения будут там фигурировать. Возможно это поможет с дебагом. Точнее сказать, не видя программы -я не могу
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 25.10.2010, 21:03   #9
НаташенькаRu
 
Регистрация: 10.09.2010
Сообщений: 3
По умолчанию

Вот код программы:

function.h
float*GetMas(float*in_mas, int razm);
float SumMas(float*mas,int r);
void PrintMas(float *in_mas,int raz);
void CountF (float *in_mas, int razm, float *out_mas);
function.cpp
#include<stdio.h>
float*GetMas(float *in_mas, int razm)
{
printf("vvedite chislo:");
scanf("%f", &in_mas[0]);
for(int index = 1; index < razm; index = index + 1)
{
in_mas[index]=in_mas[index-1]+7.3;
}
return in_mas;
}

void PrintMas(float *in_mas,int raz)
{
for(int i=0; i<raz; i=i+1)
{
printf ( "\n %.3f ," , in_mas[i]);
}
return;
}
float SumMas(float*mas,int r)
{
float s=0;
for(int i=0; i<r; i=i+1)
{
s=mas[i]+s;

}
return s;
}
void CountF (float *in_mas, int razm, float *out_mas)
{
for (int i=0; i<razm; i++)
{
if (in_mas[i]<0) {out_mas[i]=3*in_mas[i]*in_mas[i]+3*in_mas[i]+8;}
if (0<=in_mas[i]<=20) {out_mas[i]=-5/(in_mas[i]-8);}
if (in_mas[i]>20) {out_mas[i]=4*(in_mas[i]+8);}
}
return;
}
main.cpp
#include<stdio.h>
#include<conio.h>
#include"function.h"
void main()
{
float in_mas[12];
GetMas(in_mas,12);
float sum=SumMas(in_mas, 12);
float out_mas [12];
CountF(in_mas, 12, out_mas);
printf ("Summa=%f", sum);
PrintMas (out_mas, 12);
getch();
return ;
}

как сделать, чтоб программа выводила преобразованные элементы массива вот в таком ввиде:
y1 0.468 (чтоб y1 соответствовал 0 элемент массива, y2 соответствовал 1 элемент массива) void PrintMas(float *in_mas,int raz)
y2 5.446
y3 45.187
...
...
проверьте пожалуйста правильно ли написано float SumMas.
НаташенькаRu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПОЛЬЗОВАТЕЛЬ ВВОДИТ ГОД СВОЕГО РОЖДЕНИЯ, НЕОБХОДИМО ОПРЕДЕЛИТЬ КТО ОНО ПО ВОСТОЧНОМУ КАЛЕНДАРЮ LION7777 Общие вопросы C/C++ 1 09.06.2010 12:20
Пользователь вводит три цисла, необходимо их вывести в порядке возростания LION7777 Фриланс 14 03.06.2010 11:50
первый нулевой элемент массива shelest Помощь студентам 2 15.11.2009 12:38
Пользователь вводит число критериев от 1 до 30. К каждому из введенных критериев может ввести от 1 до 10 Biowulf86 Общие вопросы Delphi 6 22.09.2007 00:24