Хорошо, у меня есть лабораторное задание для класса, чтобы сделать программу, которая, как предполагается, выполняет ряд вещей: 1. Функция void с именем convertWeight преобразует вес в фунтах (тип int) и унциях в эквивалентный вес в килограммах (тип int) и граммов
Функция void с именем showArray, которая принимает два параметра: один параметр массива базового типа int и один параметр по каждому значению параметра массива. Эта функция просто распечатывает все элементы параметра массива, где два последовательных элемента разделяются горизонтальной вкладкой.
В определении функции main() выполните следующие действия:
а. объявите массив с фунтами из 10 целых чисел, инициализируя свои первые 3 элемента следующими значениями: 1, 5, 10 и автоматически инициализируя оставшиеся элементы до 0.
б. напишите for-loop, который читает в 7 весах в фунтах, сохраняя введенные значения до последних 7 элементов массива фунтов.
с. распечатайте одну строку запроса "Весь список веса:", а затем вызовите функцию showArray, чтобы отобразить весь массив фунтов.
д. напишите еще один цикл for-loop, который вызывает функцию convertWeight для преобразования каждого веса в фунтах, заданного в массиве фунтов, до эквивалентного веса в килограммах и граммах.
Это то, что я придумал:
#include <iostream>
using namespace std;
void convertWeight(int pounds, double ounces, int& kg, double& grams);
//Preconditions: parameters pounds and ounces are nonnegative numbers, representing a weight in pounds and ounces
//Postcondition: parameters kg and grams will be set to values of the equivalent weight in kilograms and grams
void showArray(int pounds[10]);
int main()
{
int pounds[10]={1, 5, 10}, i, a, kg;
double ounces, grams;
cout << "Enter 7 additional weights in pounds: \n";
cin >> pounds[3];
for(i = 4; i < 10; i++)
{
cin >> pounds[i];
}
cout << "The entire list of weights: \n";
showArray(pounds[10]);
for(a = 0; a < 10; a++)
{
pounds = pounds[a];
convertWeight(pounds, ounces, kg, grams);
cout << pounds[a] << " pounds = " << kg << " kgs and " << grams << " grams";
}
return 0;
}
void showArray(int pounds[10])
{
cout << pounds[0] << " " << pounds[1] << " " << pounds[2] << " " << pounds[3] << " " << pounds[4] << " " << pounds[5] << " "
<< pounds[6] << " " << pounds[7] << " " << pounds[8] << " " << pounds[9] << " " << pounds[10] << " " ;
}
//Do NOT modify this function definition
void convertWeight(int pounds, double ounces, int& kg, double& grams)
{
const double KGS_PER_POUND = 0.45359237;
const double OUNCES_PER_POUND = 16.0;
const double GRAMS_PER_KG = 1000.0;
double totalKgs;
totalKgs = (pounds + ounces/OUNCES_PER_POUND)*KGS_PER_POUND;
kg = static_cast<int>(totalKgs);
grams = (totalKgs - kg)*GRAMS_PER_KG;
}
Я новичок в этой вещи Array, и я не могу получить то, что говорит мне моя книга. Не могли бы вы указать, что это не так с моей программой и рассказать мне, почему я знаю.
вот мой список ошибок:
1>c:\users\mackiller\documents\visual studio 2010\projects\lab12\lab12\lab12.cpp(30): error C2664: 'showArray' : cannot convert parameter 1 from 'int' to 'int []'
1> Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\mackiller\documents\visual studio 2010\projects\lab12\lab12\lab12.cpp(34): error C2440: '=' : cannot convert from 'int' to 'int [10]'
1> There are no conversions to array types, although there are conversions to references or pointers to arrays
1>c:\users\mackiller\documents\visual studio 2010\projects\lab12\lab12\lab12.cpp(35): error C2664: 'convertWeight' : cannot convert parameter 1 from 'int [10]' to 'int'
1> There is no context in which this conversion is possible
Любая помощь givin будет оценена!
c:\users\mackiller\documents\visual studio 2010\projects\lab12\lab12\lab12.cpp(30): ошибка C2664: 'showArray': невозможно преобразовать параметр 1 из 'int' в 'int []' 1>
Для преобразования от целочисленного типа к типу указателя требуется reinterpret_cast, листинг типа C или стиль функции
Проблема здесь
showArray(pounds[10]);
Это не пройдет массив, он попытается получить доступ к 11-му элементу массива (и вызвать неопределенное поведение) и передать его showArray
(который принимает указатель в качестве аргумента). Что вы хотите сделать:
showArray(pounds);
1> c:\users\mackiller\documents\visual studio 2010\projects\lab12\lab12\lab12.cpp(34): ошибка C2440: '=': невозможно преобразовать из 'int' в 'int [10]' 1> Переходов на типы массивов нет, хотя есть ссылки на ссылки или указатели на массивы
Эта проблема здесь:
pounds = pounds[a];
Вы пытаетесь назначить int
массиву. Вам не нужна эта строка вообще:
convertWeight(pounds[a], ounces, kg, grams);
Который также исправляет эту ошибку:
1> c:\users\mackiller\documents\visual studio 2010\projects\lab12\lab12\lab12.cpp(35): ошибка C2664: 'convertWeight': невозможно преобразовать параметр 1 из 'int [10]' в 'int' 1>
Нет никакого контекста, в котором это преобразование возможно
showArray
?
pounds = pounds[a];
- Вы не можете назначить отдельный элемент массива в самой переменной массива. Просто определите новую переменную int с не конфликтующим именем.