首页 > 其他分享 >一次自我挑战的尝试(虽然没成功)

一次自我挑战的尝试(虽然没成功)

时间:2023-12-07 21:37:14浏览次数:31  
标签:尝试 case testresult int 挑战 自我 break num printf

于2023/12/7

项目原型

点我查看

目前结果

我花了很长时间在这个项目上,但是很明显效果不是很好,所以说我承认我现在暂时无法完成这么一个项目。
无法完成,但是也有收获。
我的逻辑是设定两个数组,一个是符号数组,一个是数字数组;
然后通过打印可以得到类似的结果。

但是我无法正确处理负数的逻辑。
在我这种思路下,我甚至无法计算出这个算式的正确值,因为我无法设计一个算法,使得它能够正确处理乘除符号比加减符号更优先。
我也考虑了括号的加入,但我只能在printf之中有用,至于计算正确的结果则十分困难。

基于AI

我问了gpt,但是gpt给出的逻辑明显是错误的。它将符号一个一个处理,或者先处理乘除,但显然这很复杂,因为逻辑不好处理。也许GPT-4能完成这个任务。

额外收获

我知道命令行参数的使用(虽然没有在本代码表现出来,因为本代码的主体逻辑就有问题);

我在CSDN上阅读了一些基于c语言的四则运算相关处理,得知解决符号运算优先的解决办法之一是将操作数和操作符进行考虑的思想。这其中涉及到栈的处理,以我现在的能力还无法达到。
类似项目原文

失败代码

我还是将代码放出。这是吃了算法思想不足的亏。也许继续依照这个逻辑写下去能够写出来,但是现在我是无法做到。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 9
//交换函数
void swap(int* xp, int* yp) {
    int temp = *xp;
    *xp = *yp;
    *yp = temp;
}

// 生成随机整数(1-N)
int GRNumber(void) {
    return rand() % N + 1;
};

// 生成随机运算符
char GROperator()
{
    char operators[] = { '+', '-', '*', '|' };//"|"代表“÷”;
    int index = (rand()) % 4;
    return operators[index];
}

// 生成随机四则运算表达式
void GRExpression() {
    char o[3];//储存3个运算符的一维数组
    int num[4];//储存4个随机数字的一维数组
    int pbracket = GRNumber() % 3 + 1;
    num[0] = GRNumber();
    o[0] = GROperator();
    num[1] = GRNumber();
    o[1] = GROperator();
    num[2] = GRNumber();
    o[2] = GROperator();
    num[3] = GRNumber();

    if (0)//先禁用括号
    {
        switch (pbracket)
        {
        case 1:
            printf("(%d %c %d) %c %d %c %d =     ?\n", num[0], o[0], num[1], o[1], num[2], o[2], num[3]);
            break;
        case 2:
            printf("%d %c (%d %c %d) %c %d =     ?\n", num[0], o[0], num[1], o[1], num[2], o[2], num[3]);
            break;
        case 3:
            printf("%d %c %d %c (%d %c %d) =     ?\n", num[0], o[0], num[1], o[1], num[2], o[2], num[3]);
            break;
        }
    }
    else
    {
        int testresult = 0;
        printf("  %d %c %d %c %d %c %d =     ?\n", num[0], o[0], num[1], o[1], num[2], o[2], num[3]);//检测用
        // 先处理乘法和除法
        for (int i = 0; i < 3; i++) {
            if (o[i] == '*' || o[i] == '|')
            {
                switch (o[i]) 
                {
                case '*':
                    testresult =testresult+num[i]*num[i+1];
                    break;
                case '|':
                    testresult /= num[i + 1];//如果有除法,统一变成真分数的算法;
                    break;
                }
            }
        }

        for (int i = 0; i < 3; i++) {
            if (o[i] == '+' || o[i] == '-') {
                switch (o[i]) {
                case '+':
                    testresult += num[i + 1];
                    break;
                case '-':
                    testresult -= num[i + 1];
                    break;
                }
                if (testresult < 0) {
                    o[i] = '+';
                    testresult = 0;
                    break;
                }
            }
        }
        printf("  %d %c %d %c %d %c %d =     ?\n", num[0], o[0], num[1], o[1], num[2], o[2], num[3]);//正常版本。
    }
}

int main()
{
    srand(time(NULL));

    GRExpression();

    return 0;
}

标签:尝试,case,testresult,int,挑战,自我,break,num,printf
From: https://www.cnblogs.com/kitaikuyo/p/17884007.html

相关文章

  • 武汉星起航打造孵化平台助力亚马逊卖家迎接跨境出海挑战
    在数字化时代,跨境电商已经成为全球商业的不可或缺的一部分。作为全球最大的电子商务平台之一,亚马逊汇聚了数以百万计的卖家和合作伙伴。然而,随着市场竞争的激烈,成功运营亚马逊自营店铺需要更多的专业知识和资源。自2017年起,武汉星起航就将亚马逊自营店铺视为其核心焦点,逐步积累了丰......
  • 生产环境质量保障的四大挑战
    前面的文章分享过线上质量保障的第一要务——业务防资损的内容,也聊过我对于线上质量保障的一些实践和想法,但最终,想法和实践是要落地才能产生价值的。这篇文章,聊聊生产环境质量保障相关的话题,即为了保障生产环境的质量,我们要面临哪些挑战。 测试环境和生产环境的区别传统的软......
  • 与好友保持联系,尝试Line多开功能
    与好友保持联系,尝试Line多开功能导语:在现代社交网络的时代,与好友保持联系变得更加便捷和容易。而作为一种全球流行的通讯应用程序,Line提供了许多有趣和实用的功能,其中包括多开功能。本文将探讨如何利用Line多开功能与好友保持联系。第一段:随着社交媒体的普及,人们越来越依赖网络来......
  • 与好友保持联系,尝试Line多开功能
    与好友保持联系,尝试Line多开功能导语:在现代社交网络的时代,与好友保持联系变得更加便捷和容易。而作为一种全球流行的通讯应用程序,Line提供了许多有趣和实用的功能,其中包括多开功能。本文将探讨如何利用Line多开功能与好友保持联系。第一段:随着社交媒体的普及,人们越来越依赖网络......
  • python HTML文件标题解析问题的挑战
    引言在网络爬虫中,HTML文件标题解析扮演着至关重要的角色。正确地解析HTML文件标题可以帮助爬虫准确地获取所需信息,但是在实际操作中,我们常常会面临一些挑战和问题。本文将探讨在Scrapy中解析HTML文件标题时可能遇到的问题,并提供解决方案。问题背景在解析HTML文件标题的过程中,......
  • py通过链接爬取图片下载本地,提高数据自我掌握力
    (目录)前言不知道小伙伴们有没有一些困扰,一些数据以图片的形式存放在互联网上,我们想要使用图片里面的数据还需要自己的提取,然后经过一系列的整理之后才会达到我们想要的效果,而且整理数据还好,关键是难道这些图片真的需要我们自己一张一张的慢慢的右键,保存图片吗,那未免这样的效率......
  • emscripten cmake 简单尝试
    emscripten提供了比较完整的工具链,包含了对于make以及cmake等工具的支持,以下是一个简单的c代码转换为wasm的demo同时基于cmake进行项目管理参考项目项目结构├──CMakeLists.txt├──README.md├──app.js└──src├──add.c├──add.h└─......
  • 哈尔滨华德学院-新生编程挑战赛
    哈尔滨华德学院-新生编程挑战赛A-签到_哈尔滨华德学院-新生编程挑战赛(同步赛)(nowcoder.com)签到#include<bits/stdc++.h>#definedebug(a)cout<<#a<<"="<<a<<'\n';usingnamespacestd;usingi64=longlong;typedefpair<i64,i64>PII......
  • 什么是 ChallengeCoHapsar,挑战黑洞
    CC攻击(ChallengeCoHapsar,挑战黑洞)是一种常见的DDoS(分布式拒绝服务)攻击类型,旨在通过大量请求淹没目标服务器或网络资源,使其无法正常运行。这类攻击通常利用傀儡机器,组成一个庞大的僵尸网络,向目标发动集中而有组织的攻击。这里我将详细介绍CC攻击工具的原理、常见的工具类型以及一些......
  • 自我面试(左右互搏)
    1.讲一讲对AI的理解?(什么是AI、为什么要AI、怎么做AI)AI本质上就是一个输入系统,就像玩家有inputsystem一样,AI是NPC、怪物们的inputsystem。不同的是,玩家的输入是简单的、直白的;AI的输入往往会很复杂、多变。所以AI不是一个简单的输入系统,更像是一个环境感知+决策的系统。AI的复......