Třídění zlomků – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Třídění zlomků – C / C++ – Fórum – Programujte.comTřídění zlomků – C / C++ – Fórum – Programujte.com

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

Antonín Smékal
~ Anonymní uživatel
4 příspěvky
4. 3. 2018   #1
-
0
-

Dobrý den, mám za úkol naprogramovat funkci, která setřídí zlomky, v té funkci void Tridit(struct Zlomek D[], int n, char(*S)(struct Zlomek, struct Zlomek)), je ukazatel na funkci S, která bere dva parametry Struct Zlomek a struct Zlomek. Akorát když ji potom během třídění zavolám S(D[i].citatel,D[j].jmenovatel) tak mi to vyhodí chybu, že argument typu unsigned int je nekompatibilní s typem struct Zlomek. Mohli byste mě takříkajíc trošku "postričit" vpřed abych věděl co mám špatně a jak to opravit předem děkuji.

#include <stdio.h>
#include "Uloha3"
#include<conio.h>
#include<stdlib.h>


void Vypsat(struct Zlomek Z[], int n);
void Tridit(struct Zlomek D[], int n, char(*S)(struct Zlomek, struct Zlomek));
char Vetsi(struct Zlomek z1, struct Zlomek z2);
char Mensi(struct Zlomek z1, struct Zlomek z2);

void main(void)
{
	Vypsat(Z, Pocet);
	printf("\n");
	Tridit(Z, Pocet, Vetsi);
	Vypsat(Z, Pocet);
	//Tridit(Z, Pocet, Mensi);
	//Vypsat(Z, Pocet);
	getchar();
	getchar(); 
}


void Tridit(struct Zlomek D[], int n, char(*S)(struct Zlomek, struct Zlomek))
{
	
	
	
		for (int i = 0; i < n - 1; i++)
		{
			for (int j = 0; j < n - i - 1; j++)
			{
				if (S(D[i].citatel,D[j].jmenovatel)==1) 
				{
					struct Zlomek t = D[j + 1];
					D[j + 1] = D[j];
					D[j] = t;
				}
			}
		}

	



}

char Vetsi(struct Zlomek z1, struct Zlomek z2)
{
	if (z1.citatel*z2.jmenovatel > z2.citatel*z1.jmenovatel)
		return 1;
	else
		return 0;
}

char Mensi(struct Zlomek x1, struct Zlomek x2)
{
	if (x1.citatel*x2.jmenovatel < x2.citatel*x1.jmenovatel)
		return 1;
	else
		return 0;
}

void Vypsat(struct Zlomek Z[], int n)
{
	int i;
	for (i = 0; i < n; i++)
	{
		printf("%d/%d ", Z[i]);
	}
}
Nahlásit jako SPAM
IP: 185.199.85.–
KIIV
~ Moderátor
+43
God of flame
4. 3. 2018   #2
-
0
-

#1 Antonín Smékal
to je prirozene, kdyz to ceka dva zlomky a ty tam cpes citatel prvniho a jmenovatel druhyho zlomku

Nahlásit jako SPAM
IP: 185.163.41.–
Program vždy dělá to co naprogramujete, ne to co chcete...
MilanL+1
Expert
4. 3. 2018   #3
-
0
-

#2 KIIV
tak tak

navíc mě se ještě nezdá ta druhá smyčka.

nemělo by to být:

i=0;i<n-2;i++   a druhá pak  j=i+1;j<n-1;j++ ?

Nahlásit jako SPAM
IP: 185.112.167.–
KIIV
~ Moderátor
+43
God of flame
4. 3. 2018   #4
-
0
-

#3 MilanL

Vypada to na bubble sort, akorat ma blbe i indexy pri porovnavani. Uvnitr ifu to uz vypada dobre.

Proste kdyz tam da  if (S(D[j+1], D[j]))  tak by to melo i fungovat.

Jinak teda zboznuju cteni programu, kde se pouzivaji jednopismenkovy promenny, jeste velkejma. Jako i a j, dejme tomu, to je vcelku zazity. Ale S, D, Z.

Co je vubec Z? Ani neni deklarovane/definovane.

Nahlásit jako SPAM
IP: 185.163.41.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Antonín Smékal
~ Anonymní uživatel
4 příspěvky
4. 3. 2018   #5
-
0
-

#4 KIIV
Z je v tom souboru include "Uloha3", je to strukturovaný datový typ pro uložení
zlomku - struct Zlomek Z[]={15,11 ...}. P.S. za ty velké proměnné nemůžu já(radši používám přesné názvy, protože pokud použiji obecné proměnné pak se v tom nemůžu vyznat), ale učitel jazyka C, ten to tak chtěl. Jinak děkuji za rady. 

Nahlásit jako SPAM
IP: 185.199.85.–
KIIV
~ Moderátor
+43
God of flame
4. 3. 2018   #6
-
0
-

#5 Antonín Smékal
To se dobre necte nikomu. Nicmene v ramci funkci uz to muzes pojmenovat nejak rozumne. Jedine, co je pevne danne je to globalni Z. Vse ostatni je jen na tobe. Prototypy se daji psat i uplne bez nazvu promennych, staci tam jen typy. Ale pak se v tom uz ani prase nevyzna.

Je pravda, ze v C se "citelne" moc psat neda, ale proc to "vylepsovat" jeste blbejma nazvama promennych. Holt to zase uci nekdo, kdo radsi usetri par pismen, nez aby to bylo aspon trosku citelny. Tehle zlozvyku se asi blbe zbavuje, kdyz clovek neprogramuje profesionalne a nenarazi parkrat na svuj prasokod, tudiz se nemuze poucit.

Nahlásit jako SPAM
IP: 81.30.230.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 466 hostů

Podobná vlákna

Krácení zlomků. — založil Blujacker

Usměrňování zlomků — založil Luděk Kolanda

Spolecny jmenovatel dvou zlomku — založil romanzdk

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý