给出了大陆的河流一览表。找出所选大陆上的平均河流长度。 C ++

时间:2014-05-04 13:03:40

标签: c++ structure average

我一直试图在结构的帮助下解决问题。这是我到目前为止所拥有的:

#include <iostream>
#include <iomanip>
#include <conio.h>
#include <time.h>

using namespace std;

struct{
       char name[20];
       char continent[20];
       float length;
       }
       river[15] = {{ "Missisipi", "North America", 5969}, {"Yukon", "North America", 3180}, {"Mackenzie", "North America", 4240},
       {"Amazon", "South America", 6992}, {"Parana", "South America", 4700}, {"Orinoco", "South America", 2600},
       {"Danube", "Europe", 2850}, {"Dnieper", "Europe", 2201}, {"Volga", "Europe", 3530}, {"Yenisey", "Asia", 4102},
       {"Indus", "Asia", 3180}, {"Amur", "Asia", 4440}, {"Nile", "Afrika", 6670}, 
       {"Niger", "Afrika", 4160}, {"Congo", "Afrika", 4320}};

       int main()
       {
           char u[20];
           int i;
           cout << "World's longest rivers: \n";

           for (i=0; i<15; i++)
           {
               cout << setw(20) << river[i].name << setw(20) << river[i].continent << setw(20) << river[i].length << endl;
               }

               cout << "\nEnter name of the continent: ";
               cin >> u;
               cout << "\nChosen continent is:\n";
               for (int i=0; i<15; i++)
                if (river[i].continent == u)
                cout << setw(20) << river[i].name << setw(20) << river[i].continent << setw(20) << river[i].length << endl;
               getch();
               }

好吧,有几个问题困扰我:

  1. 代码编译,但当dos窗口显示时,信息 字符串Chosen continent is:下面是空白的;

  2. 我想知道如何解决所选河流的平均长度 大陆。

  3. 我在这一行找到的主要问题是:

     if (river[i].continent == u)
    

    比较永远不会产生true

1 个答案:

答案 0 :(得分:1)

在这一行

if (river[i].continent == u)

你正在比较两个char*指针(肯定不会有相同的值) 你可能想做

if (strncmp(river[i].continent,u,sizeof(u)) == 0)

检查指向的字符数组是否具有相同的内容。