Follow along with the video below to see how to install our site as a web app on your home screen.
Huomio: This feature may not be available in some browsers.
[1]
[2] [3] [4]
[5] [6] [7]
public class Organisation {
Long id;
String organisation_name;
Long parent_organisation_id;
public Organisation(Long id, String organisation_name, Long parent_organisation_id) {
this.id = id;
this.organisation_name = organisation_name;
this.parent_organisation_id = parent_organisation_id;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getOrganisation_name() {
return organisation_name;
}
public void setOrganisation_name(String organisation_name) {
this.organisation_name = organisation_name;
}
public Long getParent_organisation_id() {
return parent_organisation_id;
}
public void setParent_organisation_id(Long parent_organisation_id) {
this.parent_organisation_id = parent_organisation_id;
}
@Override
public String toString() {
return "Organisation{" +
"id=" + id +
", organisation_name='" + organisation_name + '\'' +
", parent_organisation_id=" + parent_organisation_id +
'}';
}
}
Organisation organisation1 = new Organisation(1L, "A", null);
Organisation organisation2 = new Organisation(2L, "B", 1L);
Organisation organisation3 = new Organisation(3L, "C", 1L);
Organisation organisation4 = new Organisation(4L, "D", 1L);
Organisation organisation5 = new Organisation(5L, "E", 2L);
Organisation organisation6 = new Organisation(6L, "F", 3L);
Organisation organisation7 = new Organisation(7L, "G", 4L);
List<Organisation> orgs = Arrays.asList(organisation1, organisation2, organisation3, organisation4, organisation5, organisation6, organisation7);
orgs.stream().collect(groupingBy(o -> o.getParent_organisation_id() != null ? o.getParent_organisation_id() : o.getId()));
{
"1": [
{
"id": 1,
"organisation_name": "A",
"parent_organisation_id": null
},
{
"id": 2,
"organisation_name": "B",
"parent_organisation_id": 1
},
{
"id": 3,
"organisation_name": "C",
"parent_organisation_id": 1
},
{
"id": 4,
"organisation_name": "D",
"parent_organisation_id": 1
}
],
"2": [
{
"id": 5,
"organisation_name": "E",
"parent_organisation_id": 2
}
],
"3": [
{
"id": 6,
"organisation_name": "F",
"parent_organisation_id": 3
}
],
"4": [
{
"id": 7,
"organisation_name": "G",
"parent_organisation_id": 4
}
]
}
[
{
id: 1,
organisation_name: "A",
child: [
{
id: 2,
organisation_name: "B",
child: [
{
id: 5,
organisation_name: "E"
}
]
},
{
id: 3,
organisation_name: "C",
child: [
{
id: 6,
organisation_name: "F"
}
]
},
{
id: 4,
organisation_name: "D",
child: [
{
id: 7,
organisation_name: "G"
}
]
}
]
}
];
Javan kirjastot ei ole tuttuja, mutta jos tavoitteena on rekursiivinen lista niin olettaisin, että myös tietomallin olisi hyvä olla rekursiivinen.Välillä jotain muuta kuin JavaScriptiä.
Kielenä Java ja ongelmana seuraava. Kyseisistä oliosta pitäisi rakentaa hierarkinen puu. Jokaisella oliolla on ylemmän tason organisaation id tiedossa.
Organisaatiorakenne on tässä esimerkissä seuraavanlainen
Koodi:[1] [2] [3] [4] [5] [6] [7]
Itse organisaatio-luokka näyttää tältä:
Java:public class Organisation { Long id; String organisation_name; Long parent_organisation_id; public Organisation(Long id, String organisation_name, Long parent_organisation_id) { this.id = id; this.organisation_name = organisation_name; this.parent_organisation_id = parent_organisation_id; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getOrganisation_name() { return organisation_name; } public void setOrganisation_name(String organisation_name) { this.organisation_name = organisation_name; } public Long getParent_organisation_id() { return parent_organisation_id; } public void setParent_organisation_id(Long parent_organisation_id) { this.parent_organisation_id = parent_organisation_id; } @Override public String toString() { return "Organisation{" + "id=" + id + ", organisation_name='" + organisation_name + '\'' + ", parent_organisation_id=" + parent_organisation_id + '}'; } }
Muutama olio luotuna:
Java:Organisation organisation1 = new Organisation(1L, "A", null); Organisation organisation2 = new Organisation(2L, "B", 1L); Organisation organisation3 = new Organisation(3L, "C", 1L); Organisation organisation4 = new Organisation(4L, "D", 1L); Organisation organisation5 = new Organisation(5L, "E", 2L); Organisation organisation6 = new Organisation(6L, "F", 3L); Organisation organisation7 = new Organisation(7L, "G", 4L); List<Organisation> orgs = Arrays.asList(organisation1, organisation2, organisation3, organisation4, organisation5, organisation6, organisation7);
Kokeilin hieman Javan Stream API:a, muttei tuo ole ihan sitä mitä haetaan.
Java:orgs.stream().collect(groupingBy(o -> o.getParent_organisation_id() != null ? o.getParent_organisation_id() : o.getId()));
Tulos:
JSON:{ "1": [ { "id": 1, "organisation_name": "A", "parent_organisation_id": null }, { "id": 2, "organisation_name": "B", "parent_organisation_id": 1 }, { "id": 3, "organisation_name": "C", "parent_organisation_id": 1 }, { "id": 4, "organisation_name": "D", "parent_organisation_id": 1 } ], "2": [ { "id": 5, "organisation_name": "E", "parent_organisation_id": 2 } ], "3": [ { "id": 6, "organisation_name": "F", "parent_organisation_id": 3 } ], "4": [ { "id": 7, "organisation_name": "G", "parent_organisation_id": 4 } ] }
Lopputuloksen olisi tarkoitus olla kuitenkin jotain vastaavaa:
JSON:[ { id: 1, organisation_name: "A", child: [ { id: 2, organisation_name: "B", child: [ { id: 5, organisation_name: "E" } ] }, { id: 3, organisation_name: "C", child: [ { id: 6, organisation_name: "F" } ] }, { id: 4, organisation_name: "D", child: [ { id: 7, organisation_name: "G" } ] } ] } ];
Onko tuota edes mahdollista parsia Stream API:n avulla tuollaiseksi hierarkiseksi puuksi vai vaatiiko tämä muutoksia tuohon itse organisaatio-luokkaan?
Javan kirjastot ei ole tuttuja, mutta jos tavoitteena on rekursiivinen lista niin olettaisin, että myös tietomallin olisi hyvä olla rekursiivinen.
Olisiko siitä mitään apua, jos pelkän parentin idn sijaan lisäät organisaatiolle viittauksen parentin organisaatioinstanssiin. Tai toisinpäin lisäät organisaatioluokalle listan kaikista sen aliorganisaatioista. Sitten kun luot organisaatioita niin linkität ne keskenään tyyliin organisaatio1.addChild(organisaatio2);
Kun linkitykset on saatu kohdilleen niin pitäisi olla triviaalia tulostaa ne halutussa muodossa.
def my_split(s):
lista = []
for lause in sentence:
sana = ''
for ch in lause:
if ch == ' ' and sana != '':
lista.append(sana)
sana = ''
else:
sana += ch
if sana != '':
lista.append(sana)
return lista
def my_join(lista):
vastaus = ''
for sana in lista:
vastaus += sana
return vastaus
#===========================================
sentence = str(input("kirjoita lause:"))
print(my_join(my_split(sentence,' '),','))
print(my_join(my_split(sentence,' '),'\n'))
Aluksi voisit kertoa mitä tuon pitäisi tehdä ja miten se ei toimi.Osaako kukaan sanoa miten saa toimivaksi ilman että kajoaa alaosaan?Python:def my_split(s): lista = [] for lause in sentence: sana = '' for ch in lause: if ch == ' ' and sana != '': lista.append(sana) sana = '' else: sana += ch if sana != '': lista.append(sana) return lista def my_join(lista): vastaus = '' for sana in lista: vastaus += sana return vastaus #=========================================== sentence = str(input("kirjoita lause:")) print(my_join(my_split(sentence,' '),',')) print(my_join(my_split(sentence,' '),'\n'))
Osaako kukaan sanoa miten saa toimivaksi ilman että kajoaa alaosaan?Python:def my_split(s): lista = [] for lause in sentence: sana = '' for ch in lause: if ch == ' ' and sana != '': lista.append(sana) sana = '' else: sana += ch if sana != '': lista.append(sana) return lista def my_join(lista): vastaus = '' for sana in lista: vastaus += sana return vastaus #=========================================== sentence = str(input("kirjoita lause:")) print(my_join(my_split(sentence,' '),',')) print(my_join(my_split(sentence,' '),'\n'))
Aluksi voisit kertoa mitä tuon pitäisi tehdä ja miten se ei toimi.
elikkäs esimerkki tulostus:
- my_split: joka jakaa ensimmäisenä parametrina annetun lauseen toisena parametrina annetun erotinmerkin erottelemiin listan alkioihin, funktio palauttaa tuloksena listan.
- my_join: joka liittää ensimmäisenä parametrina annetun listan alkiot merkkijonoksi, jossa alkioiden väliin on lisätty toisena parametrina annettava merkki, fuktio palauttaa merkkijonon.
Kirjoita lause: Tämä on lyhyt lause
Tämä,on,lyhyt,lause
Tämä
on
lyhyt
lause
ja tämmöistä virhettä herjaa:
print(my_join(my_split("sentence is not working",' '),','))
TypeError: my_split() takes 1 positional argument but 2 were given
eli ilmeisesti funktiosta puuttuu jotain pientä
def my_split(sentence, delimiter):
return sentence.split(delimiter)
def my_join(lista, delimiter):
return delimiter.join(lista)
#===========================================
print(my_join(my_split('hei maailma', ' '), '\n'))
Ideana on ettei käytä Pythonin valmiita split- ja join-funktioitaPython:def my_split(sentence, delimiter): return sentence.split(delimiter) def my_join(lista, delimiter): return delimiter.join(lista) #=========================================== print(my_join(my_split('hei maailma', ' '), '\n'))
Riviäkään pyyttonia en ole koodannut, mutta annatko(?) tässä my_split funktiolle kaksi parametria:elikkäs esimerkki tulostus:
- my_split: joka jakaa ensimmäisenä parametrina annetun lauseen toisena parametrina annetun erotinmerkin erottelemiin listan alkioihin, funktio palauttaa tuloksena listan.
- my_join: joka liittää ensimmäisenä parametrina annetun listan alkiot merkkijonoksi, jossa alkioiden väliin on lisätty toisena parametrina annettava merkki, fuktio palauttaa merkkijonon.
Kirjoita lause: Tämä on lyhyt lause
Tämä,on,lyhyt,lause
Tämä
on
lyhyt
lause
ja tämmöistä virhettä herjaa:
print(my_join(my_split("sentence is not working",' '),','))
TypeError: my_split() takes 1 positional argument but 2 were given
eli ilmeisesti funktiosta puuttuu jotain pientä
print(my_join(my_split(sentence,' '),','))
def my_split(s):
TypeError: my_split() takes 1 positional argument but 2 were given
Juu, mutta en kyllä millään tiiä mitkä parametrit. vaikka mitä 1X2 yrittääVirheet kannattaa lukea ajatuksella. Eli tuossa sanotaan että funktio my_split() haluaa vain yhden parametrin mutta sille annettiin kaksi parametria. Jos funktio on määritelty def my_split(s), niin sä et voi kutsua sitä näin: my_split(eka, toka). Kääntäjä huomaa, että tunget sinne liikaa niitä parametreja, eli pilkulla erotettuja muuttujia tai arvoja.
Juu, mutta en kyllä millään tiiä mitkä parametrit. vaikka mitä 1X2 yrittää
joo tommoinkin oon koittanut mutta ei lähe toimimaanKutsut funktioita my_split() sekä my_join() syöttäen niille kaksi parametriä vaikka molemmat odottavat saavansa vain yhden.
Esim. funktio my_split() pitäisi muuttaa muotoon my_split(s, d), jolloin se odottaa saavansa kaksi parametria. Nämä parametrithan ovat:
- my_split: joka jakaa ensimmäisenä parametrina annetun lauseen(s = lause) toisena parametrina annetun erotinmerkin(d = erotinmerkki) erottelemiin listan alkioihin, funktio palauttaa tuloksena listan.
pystytkö selittämään ELI5? muutaman kk vasta näitä pyöritellyt niin ei ihan vielä ole selkärangassaHaluatko tosiaan tulostaa viimeisen sanan kahdesti? Tuossa on muuten tuo toinen append() väärin.
Mitä tulee ongelmiisi, niin mietipä, että miksi annat my_split:lle parametriksi välilyönnin ja my_join:lle pilkun ja rivinvaihdon? Sellaiset lähetät noille funktioille, mutta mitä varten? (Oikeasti siis et lähetä, kun nuo funktiot ei ota niitä vastaan, mutta yrität lähettää.)
def my_split(s):
if ch == ' ' and sana != '':
def my_join(lista):
pystytkö selittämään ELI5? muutaman kk vasta näitä pyöritellyt niin ei ihan vielä ole selkärangassa
Kyllä kopsasin osittain. Tosin ajattelin opetella näitä pythonin alkeita ennen kuin kouluun haen. Ymmärsin kyllä virheen syyn mutta en saa sitä korjattuaEttet nyt vain ole koittanu kopsata koulutehtävään jostain koodeja, kun ei tunnu pienintäkään ymmärrystä olevan omasta koodista... Aika selkeesti on moneen kertaan kerrottu ongelman syy (joka ilmenee jo siitä kääntäjän virheilmoituksestakin).
Kyllä kopsasin. Tosin ajattelin opetella näitä pythonin alkeita ennen kuin kouluun haen. Ymmärsin kyllä virheen syyn mutta en saa sitä korjattua
joskus tulee näitä mitkä vaatii multa 10x enemmin pyörittelyä kuin muut ennen kuin tulee se ahaa efekti ja kaikki loksahtaa paikalleen nupissa. Tuntuu että tämä vaati enemmänTuossa on se ongelma, että et opi koodaan copypastella. Ohjelmointikieli on vain työkalu. Pistä editori tyhjäksi ja aloita alusta. Ratkaise ongelma itse. Jos on liian vaikea, niin ratkaise ensin helpompia tehtäviä.
Pitääkin tuo lukassa ennen kuin jatkan pään takomista seinäänKolmanneksi tosiaan annat useamman parametrin kun funktiot odottavat yhtä. Kannattaa ottaa Python-opas käteen ja lukea, miten funktiot toimivat. Aloita vaikka tästä: Python Functions
Toinen ongelma on se, että mistä tuo sentence edes tulee? Ei tuo funktio sitä näe tuolta toisesta paikasta.
def my_split(s):
Mitenköhän Reactissa hoidetaan tilanhallinta(state) rekursiivisessa komponentissa?
Ongelmana lähinnä se, että alempien tasojen tilat katoaa kun ylempi taso suljetaan. Tilaan tallennetaan tieto siitä onko kyseinen kerros avattu vai ei.
codesandbox esimerkki
Yksi keino on ainakin ottaa tuo sun state talteen sinne app.js tiedostoon ja viedä propsina komponentteihin (App.js puolelta ja myös itse RecursiveTreestä). Silloin se "pää state" on tallessa tuolla ylimmällä tasolla.
muokattu esimerkki
Mitenköhän Reactissa hoidetaan tilanhallinta(state) rekursiivisessa komponentissa?
Ongelmana lähinnä se, että alempien tasojen tilat katoaa kun ylempi taso suljetaan. Tilaan tallennetaan tieto siitä onko kyseinen kerros avattu vai ei.
codesandbox esimerkki
interface Props extends React.HTMLAttributes<HTMLButtonElement> {
className?: string;
type?: "button" | "submit" | "reset";
children: string;
}
const CustomButton = ({ className, children, type, ...rest }: Props) => {
return (
<button
type={type === undefined ? "button" : type}
{...rest}
className={`${className} bg-sky-600 hover:bg-sky-700 transition-colors
text-white rounded-full shadow-md shadow-sky-600 font-semibold hover:scale-110`}
>
{children}
</button>
);
};
export default CustomButton;
Olisiko ongelma siinä, että tuo interface perii attribuutit HTMLAttributes-rajapinnalta eikä ButtonHTMLAttributes -rajapinnalta?JavaScript:interface Props extends React.HTMLAttributes<HTMLButtonElement> { className?: string; type?: "button" | "submit" | "reset"; children: string; } const CustomButton = ({ className, children, type, ...rest }: Props) => { return ( <button type={type === undefined ? "button" : type} {...rest} className={`${className} bg-sky-600 hover:bg-sky-700 transition-colors text-white rounded-full shadow-md shadow-sky-600 font-semibold hover:scale-110`} > {children} </button> ); }; export default CustomButton;
Miksi tuo koodi esim. <CustomButton form="blaa" /> valittaa että Property 'form' does not exist on type 'IntrinsicAttributes & Props' , vaikka button tagilla pitäisi olla form attribuutti? Jouduin just ton typescriptin valituksen takia lisäämään ton type attribuutin manuaalisesti tuohon Props interfaciin, koodi kyllä toimii ilmankin, mutta typescript valittaa. Myös tuon type={type === undefined ? "button" : type} jouduin lisäämään ainakin tässä vaiheessa kun joskus type oli tyyppiä "submit" vaikka sellaista en ollut laittanut itse <CustomButton />.
Ongelma liittyy myös logiikkaohjelmointiin, mutta helposti yleitettävissä tännekin. Elikkäns:
Mulla logiikka kirjoittaa lokitietedostoa pariin csv-filuun. Sitten on yksi erikseen muotoiltu graafinenkin excel-file joka kerää datan näistä kahdesta csv-fileistä ja kaikki toimii kuin unelma.
Ongelma on kun haluan näyttää tätä exceliä logiikan käyttöliittymässä, joka on siis läjätty ihan perus HTML/javaScriptillä, kuten webbisivut.
Kysymys kuuluukin: Miten saisin tämän paikallisen excelin näytettyä HTML:n kanssa esim. jossain framessa? Ikään kuin haluaisin näyttää upotetun excelin perusnettisivulla.
Excelin tallentaminen HTML-muotoon toimii kaikkien muiden osalta, paitsi tuolloin datan vetäminen csv-lähteistä loppuu.
Tuntuu järjettömältä kui tää voi olla näin vaikeaa
Toimiikohan tää, mikä tuossa on ensimmäisenä, en jaksa ruveta testailemaan:Tääkin on kyl erittäin kätsy, mutta ei oikein käy tämän hetken tilanteeseen.
Toimiikohan tää, mikä tuossa on ensimmäisenä, en jaksa ruveta testailemaan:
How to Embed an Excel File on a Web Page using plain HTML
In this article, we show how to embed a microsoft Excel file on a web page using plain HTML. We simply need to use an anchor tag and Microsoft's provided API.www.learningaboutelectronics.com
Jos sulla on siis se muotoiltu excel saatavissa lokaalilta levyltä. Tuo src-attribuuttikin näkyy huolivan lokaalin filen.
Oli kyllä niin helppo googlattava, että epäilen, että tää ois jo löytynyt, jos kelpais, eikä oo kyllä meikäläisen alaa tämmönen
Joo, näköjään se noin on (että lähdetiedosto pitäs olla OneDrivessä).Joo kiitti vaan
Toi toimii one driveen tallennetuille exceleille, eli filun pitää olla online. Ei toimi paikallisille valitettavasti
Joo, näköjään se noin on (että lähdetiedosto pitäs olla OneDrivessä).
Tuossa ei tainnu olla puhetta siitä, miten se muotoiltu taulukko generoidaan ja minkälaisia vaatimuksia homman dynaamisuudelle on, mutta Excel-taulukon saa exportattua sekä PDF:ksi että HTML:ksi, jotka pystyy kummatkin näyttämään verkkosivulla. En tiedä auttaako tuokaan mitään.
Muuten sitten alkaa näyttämään minusta siltä, että menee askarteluksi siitä CSV-datasta.
Onko joku todella monimutkainen Excel kyseessä?Jep. Olen siis juurikin askarrellut yhden .xlsx filen, joka importtaa kahdesta csv:stä dataa ja parsii erilaisten funktioiden kautta sitä siistimmäksi ja käytettäväksi. Se myös päivittelee ajankohtaiset kellonajat yms. piirtää graafit datasta.
Tämän excelin haluaisin siis HTML:n 'pollaavan' aina kun se avataan selaimella. Mut tää ei kyllä näytä tälläisenä toimivan, vaan menee todellakin askarteluksi noista csv:stä
nimi = input("Anna nimesi:")
if nimi == "Tupu":
print("Olet luultavasti Aku Ankan veljenpoika.")
else:
print("Et ole kenenkään tuntemani hahmon veljenpoika.")
nimi = input("Anna nimesi:")
if nimi == "Tupu" or "Hupu" or "Lupu":
print("Olet luultavasti Aku Ankan veljenpoika.")
else:
print("Et ole kenenkään tuntemani hahmon veljenpoika.")
Harjoittelen pythonia ajankulukseni ja ongelma johon en keksi ratkaisua.
Alla oleva koodi toimii haluamallani tavalla.
Koodi:nimi = input("Anna nimesi:") if nimi == "Tupu": print("Olet luultavasti Aku Ankan veljenpoika.") else: print("Et ole kenenkään tuntemani hahmon veljenpoika.")
Tähän taas voi syöttää minkä tahansa nimeksi niin aina tulostuu "Olet luultavasti Aku Ankan veljenpoika."
Missä vika?Koodi:nimi = input("Anna nimesi:") if nimi == "Tupu" or "Hupu" or "Lupu": print("Olet luultavasti Aku Ankan veljenpoika.") else: print("Et ole kenenkään tuntemani hahmon veljenpoika.")
if nimi == "Tupu" or nimi == "Hupu" or nimi == "Lupu":
Tuossa sinulla vertaillaan onko seuraavat asiat tosia:Harjoittelen pythonia ajankulukseni ja ongelma johon en keksi ratkaisua.
Alla oleva koodi toimii haluamallani tavalla.
Koodi:nimi = input("Anna nimesi:") if nimi == "Tupu": print("Olet luultavasti Aku Ankan veljenpoika.") else: print("Et ole kenenkään tuntemani hahmon veljenpoika.")
Tähän taas voi syöttää minkä tahansa nimeksi niin aina tulostuu "Olet luultavasti Aku Ankan veljenpoika."
Missä vika?Koodi:nimi = input("Anna nimesi:") if nimi == "Tupu" or "Hupu" or "Lupu": print("Olet luultavasti Aku Ankan veljenpoika.") else: print("Et ole kenenkään tuntemani hahmon veljenpoika.")
if nimi in ["Tupu", "Hupu", "Lupu"]:
ERROR in ./node_modules/bootstrap-material-design/dist/css/bootstrap-material-design.min.css 1:0
Module parse failed: Unexpected token (1:0)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
> .card{font-size:.875rem;font-weight:400}
|
| /*!
i 「wdm」: Failed to compile.
#include <complex.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
static void run(const int nmax) {
double imin = 2;
a = 2;
for (int b = 2; b <= nmax; b++) {
for (int c = 2; c <= nmax; c++)
for (int d = 2; d <= nmax; d++) {
const double complex x = a + I * b;
const double complex y = c + I * d;
... rivejä deletoitu ...
}
}
}
int main() {
run(700);
return EXIT_SUCCESS;
Yritin niitä int argc, char *argv[]
Kerrotko, miten tarkalleen yritit ja millaisia virheitä sait? Täällä yksinkertainen esimerkki:
- miten tuohon lisätään mukaan nuo argc argv asiat? Olen pihalla jo tässä kohdassa ...
- laitanko tuonne loppuun run(atoi(argv[4])) vai miten
$ cat positive.c
#include <complex.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
static void run(int argc, char *argv[]) {
double imin = 2;
int aaa = atoi(argv[1]);
int bbb = atoi(argv[2]);
int ccc = atoi(argv[3]);
int ddd = atoi(argv[4]);
int nnn = atoi(argv[5]);
int a = aaa;
for (int b = bbb; b <= nmax; b++) {
for (int c = ccc; c <= nmax; c++)
for (int d = ddd; d <= nmax; d++) {
const double complex x = a + I * b;
const double complex y = c + I * d;
printf( ... poistettu
}
}
}
}
int main() {
run(nnn);
return EXIT_SUCCESS;
}
$ gcc -o fuck positive.c
positive.c: In function ‘run’:
positive.c:14:27: error: ‘nmax’ undeclared (first use in this function); did you mean ‘fma
’?
14 | for (int b = bbb; b <= nmax; b++) {
| ^~~~
| fmax
positive.c:14:27: note: each undeclared identifier is reported only once for each function it appears in
positive.c: In function ‘main’:
positive.c:30:8: error: ‘nnn’ undeclared (first use in this function); did you mean ‘nan’?
30 | run(nnn);
| ^~~
| nan
positive.c:30:4: error: too few arguments to function ‘run’
30 | run(nnn);
| ^~~
positive.c:6:13: note: declared here
6 | static void run(int argc, char *argv[]) {
| ^~~