Grafikus feladat C-ben?
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!
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!