Kezdőoldal » Számítástechnika » Programozás » Grafikus feladat C-ben?

Grafikus feladat C-ben?

Figyelt kérdés

A feladat: Egy versenyben 7 énekes: Aliz, Béla, Cecil, Dalma, Elemér, Ferenc és Georgina maradt a végső döntőre. A döntőben elhangzott dalokat a nézők SMS-szavazatai alapján rangsorolták. Az SMS-ben a szimpatikus énekes nevének kezdőbetűjét kellett beküldeni. A rangsoroláshoz készítse el a következő programot: A program billentyűzetről egy ciklusban bekéri a 125432 beérkezett SMS-ben található nagybetűket és gyűjti a darabszámokat egy 7 elemű vektorba. Majd meghatározza az első három helyezettre érkezett szavazatok számát és ábrázolja a darabszámokat egy oszlopdiagrammal.

Elég kezdő vagyok és eddig ennyit sikerült összehozni, de ez sem működőképes:

#include<stdio.h>

#define N 125432


typedef struct

{

char nev[7];


}ADATTIP;


int main()

{

ADATTIP szav[N];

int i;

int a,b,c,d,e,f,g=0;

printf("Add meg a szavazatokat (A,B,C,D,E,F,G)\n");

for(i=0;i<N;i++){

fflush(stdin);

printf("%d. szavazat ",i+1);

scanf("%s",&szav[i].nev);

}

printf("\nA szavazatok\n");

for(i=0;i<N;i++){

printf("%s ",szav[i].nev);

}

switch(szav[i].nev)

{

case A: a++; break;

case B: b++; break;

case C: c++; break;

case D: d++; break;

case E: e++; break;

case F: f++; break;

case G: g++;

}

printf("\nA %d, B %d, C %d, E %d, F %d, G %d szavazatot kapott\n",a,b,c,d,e,f,g);

return 0;

}

Tudnátok segíteni, hogy hogyan kellene megszámolni a szavazatokat aztán sorbarendezni és az első hármat kiválasztani? Előre is köszönöm a segítséget!



2019. márc. 18. 19:24
1 2
 11/12 A kérdező kommentje:
Pár órát már szenvedtem vele, utánaolvastam, de nem sikerül megszámolni őket. Ha le tudnád írni a megoldást megköszönném, mert más tárgyra is tanulnom kellene.
2019. márc. 20. 10:11
 12/12 anonim ***** válasza:

Szerintem nagyon félreértelmezted a feladatot!

SMS-ben csak a kezdőbetűk vannak (azaz char típus). A hetes szám pedig a 7-elemű vektorra vonatkozik, nem a nevek hosszára. Ebben a vektorban (tömbben) kell összegezni a szavazatokat.


Tehát a változók:

char sms;

int szav[7];


A tömböt nullázni kell, például így:

memset(szav, 0, sizeof(szav));

Vagy ciklussal bejárod és beállítod 0-ra.


Utána beolvasol N inputot for ciklussal például. Azaz minden iterációban:

scanf(" %c", &sms);


És hozzáadod a megfelelő számlálóhoz a szavazatot:

++szav[sms - 'A'];


Ha beolvastad az összes inputot, akkor utána már csak az első 3-at kell kiválasztani.


A példa kódom:

#include<stdio.h>

#include<string.h>


#define N 3


int main() {

char sms;

int szav[7];

memset(szav, 0, sizeof(szav));


for (int i = 0; i < N; ++i) {

scanf(" %c", &sms);

++szav[sms - 'A'];

}


for (int i = 0; i < 7; ++i) {

printf("%c: %d\n", ('A' + i), szav[i]);

}


return 0;

}


Ez kiírja az eredményeket, nincs benne rendezés vagy ilyesmi.

2019. márc. 20. 14:51
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!