- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题是;我正在做作业。我需要读取首先给出的行和列(二维数组)大小的数组的一些值。读取值后,我需要使用冒泡排序算法按降序对它们进行排序。问题是;我需要为每个整数值分配一个字符(从 A 到 Z)(对其进行命名/分类),并使用我分配给它的字符对整数值进行排序...
#include <stdio.h>
#define IL 81
#define PARTI 26
///Variables:
int partiSayisi;
/**This variable is going to take a value between [0,81]
*so it will be ROW of the array when I read values.*/
int plakaKodu;
/**This is equal to 'plakaKodu', and I'm using it as the index,
*if I use the actual variable as the index, it isn't working. (Not
*sure why...)*/
int plakaKoduIndex;
/**The 2D array which holds variables I read from input.*/
int oySiniflama[IL][PARTI] = {0};
char partiIsimleri[26]=
{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q',
'R','S','T','U','V','W','X','Y','Z'};
///Function Prototypes:
//------------------------------------------//
void oyAl(int partiSayisi, int plakaKoduIndex); //Input Routine
//-------------------------------------------//
void ilOyGoster(int plakaKoduIndex, int partiSayisi); //Output Routine
//-------------------------------------------//
/**Bubble Sort Function:*/
void bubbleSort();
//-------------------------------------------//
///Functions.:
//-------------------------------------------//
void oyAl(int partiSayisi, int plakaKoduIndex)
{
int i;
char j='A';
for(i=0; i<partiSayisi; i++)
{
printf("%c Partisi'nin oy sayisini giriniz: ", j);
scanf(" %d", &oySiniflama[plakaKoduIndex-1][i]);
++j;
}
}
//-------------------------------------------//
void ilOyGoster(int plakaKoduIndex, int partiSayisi)
{
int i;
for(i=0; i<partiSayisi; i++)
{
printf("\n %c Partisi: %d oy.", partiIsimleri[i],
oySiniflama[plakaKoduIndex-1][i]);
}
}
//-------------------------------------------//
void bubbleSort()
{
/**Bubble Sort icin: */
int i = 0, j=0, m=0, gecici_int;
char gecici_char;
for(m=1; m<(IL*PARTI); m++)
{
for(i=0; i<IL; i++)
{
for(j=0; j<PARTI-1; j++)
{
if(oySiniflama[i][j] != 0)
{
if(oySiniflama[i][j] < oySiniflama[i][j+1])
{
gecici_int = oySiniflama[i][j];
oySiniflama[i][j] = oySiniflama[i][j+1];
oySiniflama[i][j+1] = gecici_int;
}
if(oySiniflama[i][j] < oySiniflama[i][j+1]);
{
gecici_char = partiIsimleri[j];
partiIsimleri[j] = partiIsimleri[j+1];
partiIsimleri[j+1] = gecici_char;
}
}
}
}
//For control.
for(i=0; i<IL-1; i++)
{
if (oySiniflama[i][PARTI-1] > oySiniflama[i+1][0])
{
gecici_int = oySiniflama[i][PARTI-1];
oySiniflama[i][PARTI-1] = oySiniflama[i+1][0];
oySiniflama[i+1][0] = gecici_int;
}
if (oySiniflama[i][PARTI-1] > oySiniflama[i+1][0])
{
gecici_char = partiIsimleri[i];
partiIsimleri[i] = partiIsimleri[i+1];
partiIsimleri[i+1] = gecici_char;
}
}
}
}
//-------------------------------------------//
预期输入和输出:
预期输入
//TEST
A Partisi'nin oy sayisini giriniz: 3082
B Partisi'nin oy sayisini giriniz: 2556
C Partisi'nin oy sayisini giriniz: 1900
D Partisi'nin oy sayisini giriniz: 2581
E Partisi'nin oy sayisini giriniz: 2000
F Partisi'nin oy sayisini giriniz: 1255
G Partisi'nin oy sayisini giriniz: 12
我按照指示进行了输入屏幕;输入一个字符(从 A 到 Z)用于对该整数值进行分类;现在出现了预期的输出:
预期输出
A Partisi 3082
D Partisi 2581
B Partisi 2556
E Partisi 2000
C Partisi 1900
F Partisi 1255
G Partisi 12
如何将一个字符分配给一个整数,并使用冒泡排序作为排序算法并使用函数和数组(分配规则很严格)对它们进行排序(如上所示)? (而且我不能使用结构......)
~感谢您抽出时间...
(PS。感谢您向我解释发帖规则。这是我第一次在这里写问题,抱歉写了一个难以理解的问题......我尽快编辑了它。)
(PS。[@John Bode]感谢您抽出时间。即使我第一次写了一个不清楚的问题......现在我对其进行了编辑,以便其他人如果也需要类似的问题可以得到帮助.
最佳答案
如果我理解您的问题,您需要一种方法来存储带有整数值的字符值而不使用partiIsimleri
数组,对吗?
可能最简单的方法是使用 struct
类型:
struct labeled_value {
int value;
char label;
};
您可以将 oySinfiflama 声明为
struct labeled_value oySiniflama[IL][PARTI] = {{0,0}};
您可以更改输入例程以使用以下内容:
for(i=0, j='A'; i<partiSayisi; i++, j++)
{
printf("%c Partisi'nin oy sayisini giriniz: ", j);
scanf(" %d", &oySiniflama[plakaKoduIndex-1][i].value);
oySiniflama[plakaKoduIndex-1][i].label = j;
}
您可以按如下方式更改冒泡排序的内部结构:
if(oySiniflama[i][j].value < oySiniflama[i][j+1].value ) /* Azalan sirada siralamak icin, > u < e cevir. */
{
struct labeled_value gecici = oySiniflama[i][j];
oySiniflama[i][j] = oySiniflama[i][j+1];
oySiniflama[i][j+1] = gecici;
}
IOW,您对 value
成员进行比较,但交换了整个 struct
值。这使您可以完全摆脱 partiIsimleri
数组,因此您可以从 bubblesort
例程中完全删除该部分。
然后,您的输出代码将显示为:
for(i=0; i<partiSayisi; i++)
{
printf("\n %c Partisi: %d oy.", oySiniflama[plakaKoduIndex-1][i].label, oySiniflama[plakaKoduIndex-1][i].value);
}
编辑
Bu the problem is; I can't use structs. As I said in information; I only can use basic features of C and some of the intermediate ones (Functions & Arrays). Rules are strict, that is why I am struggling...
哦,看在████的份上,struct
是“C的基本功能”。责怪你的老师让这项作业变得比实际需要的更难1。
好吧,那么您必须使用单独的数组来维护标签,并且它也需要是一个 2D 数组(以便每个数字都有一个唯一的标签元素):
char partiIsimleri[IL][PARTI];
所以你的输入例程将如下所示:
for(i=0, j='A'; i<partiSayisi; i++, j++)
{
printf("%c Partisi'nin oy sayisini giriniz: ", j);
scanf(" %d", &oySiniflama[plakaKoduIndex-1][i]);
partiIsimleri[plakaKoduIndex-1][i] = j;
}
您可以加强冒泡排序:
if(oySiniflama[i][j] != 0)
{
if(oySiniflama[i][j] < oySiniflama[i][j+1]) /* Azalan sirada siralamak icin, > u < e cevir. */
{
gecici_int = oySiniflama[i][j];
oySiniflama[i][j] = oySiniflama[i][j+1];
oySiniflama[i][j+1] = gecici_int;
gecici_char = partiIsimleri[i][j];
partiIsimleri[i][j] = partiIsimleri[i][j+1];
partiIsimleri[i][j+1] = gecici_char;
}
}
也就是说,您可以在同一个循环中执行这两个操作,而不是使用两个单独的循环来交换整数和标签。您确实不想在冒泡排序中添加更多循环。
<小时/>关于c - 我需要在数组中存储一些整数并用字母符号打印它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53820807/
我正在尝试学习 Fortran,并且看到了很多不同的定义,我想知道他们是否正在尝试完成同样的事情。以下有什么区别? 整数*4 整数(4) 整数(kind=4) 最佳答案 在 Fortran >=90
我以前从未编程过,最近(1 周前)才开始学习!第一门类(class)是函数式编程,使用 Haskell。 我有一项学校作业,我想通过删除一两个步骤来改进它,但我遇到了一个讨厌的错误。 基本上,我创建了
给定以下GraphQL请求和变量: 请求: query accounts($filter:AccountFilter, $first_:String, $skip_:Int) { accounts
我已经搜索了 StackOverflow,但找不到关于如何检查计算器应用程序的数字输入正则表达式的答案,该计算器应用程序将检查每个 keyup 的以下格式(jquery key up): 任何整数,例
类似于我上一篇致歉的文章,但没有那么长篇大论。基本上我想知道当每次重绘调用只重绘屏幕的一小部分时,优化重绘到 JFrame/JPanel 的最佳选择是什么。 此外,除了重绘重载之外,我并不是 100%
所以在我的教科书中有一个使用 f# 的递归函数的例子 let rec gcd = function | (0,n) -> n | (m,n) -> gcd(n % m,m);; 使用此功能,我的教科书
我有一个数据结构,例如表达式树或图形。我想添加一些“测量”功能,例如depth和 size . 如何最好地键入这些函数? 我认为以下三个变体的用处大致相同: depth :: Expr -> Int
这样写比较好 int primitive1 = 3, primitive2 = 4; Integer a = new Integer(primitive1); Integer b = new Inte
我是 Java 8 新手,想根据键对 Map 进行排序,然后在值内对每个列表进行排序。 我试图寻找一种 Java 8 方法来对键和值进行排序。HashMap>映射 map.entrySet().str
这就是我的目标... vector ,int> > var_name (x, pair (y),int>); 其中 x 是 vector var_name 的大小,y 是对内 vector 的大小。
这里是 an answer to "How do I instantiate a Queue object in java?" , Queue is an interface. You can't i
这个问题在这里已经有了答案: Weird Integer boxing in Java (12 个答案) Why are autoboxed Integers and .getClass() val
我们可以使用 C++ STL 做这样的事情吗?如果是,我将如何初始化元素?我试图这样做,但没有成功。 pair,vector>p; p.first[0]=2; 最佳答案 Can we do som
您好,我正在尝试为百分比和整数数组中的数字找到索引。假设 arraynum = ['10%','250','20%','500'] 并且用户发送一个值 15%,这个数字在哪个范围内居住?我可以使用这段
我与三列有关系:ProductName、CategoryID 和 Price。我需要选择仅那些价格高于给定类别中平均产品价格的产品。(例如,当apple(ProductName)是fruit(Cate
我已经坚持了一段时间,我正在尝试将一些数据配对在一起。这是我的代码。 #include #include using namespace std; int main() { pair data(
我收到错误:'(Int, Int)' 与 'CGPoint' 不相同 如何将 (Int, Int) 转换为 CGPoint let zigzag = [(100,100), (100,150)
我在 .cpp 文件中发现了以下代码。我不理解涉及头文件的构造或语法。我确实认识到这些特定的头文件与 Android NDK 相关。但是,我认为这个问题是关于 C++ 语法的一般问题。这些在某种程度上
我将这些输入到 Scala 解释器中: val a : Integer = 1; val b : Integer = a + 1; 我收到消息: :5: error: type mismatch;
C++:vector>v(size);当我试图打印出值时显示 0 作为值,但是当未声明 vector 大小时它显示正确的输出?为什么这样?例如: int x; cin>>x; vector>v(x);
我是一名优秀的程序员,十分优秀!