Näytä kirjoitukset

Tässä osiossa voit tarkastella kaikkia tämän jäsenen viestejä. Huomaa, että näet viestit vain niiltä alueilta, joihin sinulla on pääsy.


Viestit - teele

Sivuja: [1] 2 3 ... 46
1
Toisen tekoälyn kirjoittaman ohjelman kanssa onnistui vähän paremmin. Ohjelma tuntuu toimivan, ja nyt pitäisi sitten selvittää, mitä se oikeastaan tekee. Pitäisi päästä käsiksi niihin tallennettuihin ääniarvoihin lukuina.

Mutta alkuperäinen kysymys taitaa olla ratkennut. Kiitoksia lähestymistapavihjeistä :)

Ohjelma on tässä:

Koodia: [Valitse]

#include <iostream>
#include <vector>
#include <alsa/asoundlib.h>
#define RATE 44100
#define CHANNELS 1
#define SECONDS 5
void configure_pcm(snd_pcm_t* handle) {
 snd_pcm_hw_params_t* params;
 snd_pcm_hw_params_alloca(&params);
 snd_pcm_hw_params_any(handle, params);
 snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED);
 snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_S16_LE);
 snd_pcm_hw_params_set_channels(handle, params, CHANNELS);
 unsigned int rate = RATE;
 snd_pcm_hw_params_set_rate_near(handle, params, &rate, 0);
 snd_pcm_hw_params(handle, params);
}
int main() {
 snd_pcm_t *capture_handle, *playback_handle;
 long total_frames = RATE * SECONDS;
 std::vector<int16_t> buffer(total_frames);
 // Open capture device (Microphone)
 if (snd_pcm_open(&capture_handle, "default", SND_PCM_STREAM_CAPTURE, 0) < 0) return 1;
 configure_pcm(capture_handle);
 std::cout << "Recording for 5 seconds..." << std::endl;
 snd_pcm_readi(capture_handle, buffer.data(), total_frames);
 snd_pcm_close(capture_handle);
 // Open playback device (Speakers)
 if (snd_pcm_open(&playback_handle, "default", SND_PCM_STREAM_PLAYBACK, 0) < 0) return 1;
 configure_pcm(playback_handle);
 std::cout << "Playing back..." << std::endl;
 snd_pcm_writei(playback_handle, buffer.data(), total_frames);
 
 snd_pcm_drain(playback_handle);
 snd_pcm_close(playback_handle);
 return 0;
}


Käännös näin ja ajo

Koodia: [Valitse]
g++ äänikoe.cpp -o äänikoe -lasound
./äänikoe


2

Tekoälyn käyttö oli hyvä vihje. Se kirjoittaakin nopeasti ohjelmia pyydettäessä

Koodia: [Valitse]
On Ubuntu 24.04 with the libasound2-dev package, write a c++ program that reads a sound sample of 5 seconds from the laptop microphone and stores in a buffer as 16 bit values from a single channel and then outputs the sample from the buffer via the laptop speakers.

Ylllä olevan pyynnön tuloksena saatu ohjelma kääntyy ilman varoituksia, mutta ei näytä tekevän yhtään mitään. Lisäsin sinne yhden tulostusrivinkin tarkistusta varten, mutta sekään ei tulostu.

En valitettavasti vielä ymmärrä äänenkäsittelystä niin paljon, että voisin arvioida, voisiko ohjelman kohtuutyöllä saada toimimaan.

Koodia: [Valitse]

#include <iostream>
#include <vector>
#include <alsa/asoundlib.h>

int main() {
    const unsigned int sample_rate = 44100;
    const unsigned int seconds     = 5;
    const unsigned int channels    = 1;
    const snd_pcm_format_t format  = SND_PCM_FORMAT_S16_LE;

    const snd_pcm_uframes_t total_frames = sample_rate * seconds;
    const snd_pcm_uframes_t period_size  = 1024; // frames per read/write
    std::vector<int16_t> buffer(total_frames * channels);

    int rc;
    snd_pcm_t* capture_handle  = nullptr;
    snd_pcm_t* playback_handle = nullptr;
    snd_pcm_hw_params_t* params = nullptr;

    // --------- Open and configure capture (microphone) ----------
    rc = snd_pcm_open(&capture_handle, "default",
                      SND_PCM_STREAM_CAPTURE, 0);
    if (rc < 0) {
        std::cerr << "Unable to open capture device: "
                  << snd_strerror(rc) << std::endl;
        return 1;
    }

    snd_pcm_hw_params_malloc(&params);
    snd_pcm_hw_params_any(capture_handle, params);
    snd_pcm_hw_params_set_access(capture_handle, params,
                                 SND_PCM_ACCESS_RW_INTERLEAVED);
    snd_pcm_hw_params_set_format(capture_handle, params, format);
    snd_pcm_hw_params_set_channels(capture_handle, params, channels);
    unsigned int rate = sample_rate;
    snd_pcm_hw_params_set_rate_near(capture_handle, params, &rate, nullptr);

    snd_pcm_uframes_t psize = period_size;
    snd_pcm_hw_params_set_period_size_near(capture_handle, params, &psize, nullptr);

    rc = snd_pcm_hw_params(capture_handle, params);
    if (rc < 0) {
        std::cerr << "Unable to set capture HW params: "
                  << snd_strerror(rc) << std::endl;
        snd_pcm_hw_params_free(params);
        snd_pcm_close(capture_handle);
        return 1;
    }
    snd_pcm_hw_params_free(params);

    // --------- Capture into buffer ----------
    {
        snd_pcm_uframes_t frames_captured = 0;
        while (frames_captured < total_frames) {
            snd_pcm_uframes_t frames_to_read =
                std::min(psize, total_frames - frames_captured);

            rc = snd_pcm_readi(capture_handle,
                               buffer.data() + frames_captured * channels,
                               frames_to_read);
            if (rc == -EPIPE) {
                // Overrun
                snd_pcm_prepare(capture_handle);
                continue;
            } else if (rc < 0) {
                std::cerr << "Error reading from capture device: "
                          << snd_strerror(rc) << std::endl;
                break;
            } else {
                frames_captured += rc;
            }
        }
    }

    snd_pcm_drain(capture_handle);
    snd_pcm_close(capture_handle);


    std::cout << "näyte luettu:" << rc << std::endl;

    // --------- Open and configure playback (speakers) ----------
    rc = snd_pcm_open(&playback_handle, "default",
                      SND_PCM_STREAM_PLAYBACK, 0);
    if (rc < 0) {
        std::cerr << "Unable to open playback device: "
                  << snd_strerror(rc) << std::endl;
        return 1;
    }

    snd_pcm_hw_params_malloc(&params);
    snd_pcm_hw_params_any(playback_handle, params);
    snd_pcm_hw_params_set_access(playback_handle, params,
                                 SND_PCM_ACCESS_RW_INTERLEAVED);
    snd_pcm_hw_params_set_format(playback_handle, params, format);
    snd_pcm_hw_params_set_channels(playback_handle, params, channels);
    rate = sample_rate;
    snd_pcm_hw_params_set_rate_near(playback_handle, params, &rate, nullptr);

    psize = period_size;
    snd_pcm_hw_params_set_period_size_near(playback_handle, params, &psize, nullptr);

    rc = snd_pcm_hw_params(playback_handle, params);
    if (rc < 0) {
        std::cerr << "Unable to set playback HW params: "
                  << snd_strerror(rc) << std::endl;
        snd_pcm_hw_params_free(params);
        snd_pcm_close(playback_handle);
        return 1;
    }
    snd_pcm_hw_params_free(params);

    // --------- Play back from buffer ----------
    {
        snd_pcm_uframes_t frames_written = 0;
        while (frames_written < total_frames) {
            snd_pcm_uframes_t frames_to_write =
                std::min(psize, total_frames - frames_written);

            rc = snd_pcm_writei(playback_handle,
                                buffer.data() + frames_written * channels,
                                frames_to_write);
            if (rc == -EPIPE) {
                // Underrun
                snd_pcm_prepare(playback_handle);
                continue;
            } else if (rc < 0) {
                std::cerr << "Error writing to playback device: "
                          << snd_strerror(rc) << std::endl;
                break;
            } else {
                frames_written += rc;
            }
        }
    }

    snd_pcm_drain(playback_handle);
    snd_pcm_close(playback_handle);

    return 0;
}

/*
g++ play_after_01.cpp -o play_after_01 -lasound
./play_after_01
*/


Muokk.
Muokkasin vähän vanhaa otsikkoa, ehkä olisi pitänyt laittaa uusi aihe, mutta toiminnan tarkistamiseksi se ääni olisi kätevää saada myös ulos koneesta. Tavote olisi siis saada ääni taullukkoon ja sieltä ulos kaiuttimelle tässä vaiheessa.


3
Näkymä nm:n vastauksessa on juuri samanlainen, jonka olen onnistunut saamaan esille, pienenä erona saattaa olla se, että alareunan pallukkarivistä puuttuu pallukoita ja se on paljon lyhyempi.

Mutta näkymä ei tulekaan aina esille kuvaketta napsautettaessa, joskus se häviää itsestään aika nopeasti, ennen kuin siihen on ehditty koskea ja ainakin yhden kerran pääsin valinnoissa kielivalinnoista eteen päin seuraaviin valintaikkunoihin.

Tapahtumat näyttävät olevan epäsäännöllisiä, ennakoimattomia ja sattuman varaisia. Koskaan varsinainen asentaminen ei kuitenkaan ole alkanut, niin pitkällen en ole päässyt kyselyikkunoissa. ja puuttuvat keskeytysvektorit ovat 1.55,  2.55 ja 3.55 eikä /boot/ osiota näemmä löydy.

Voisivatko nämä oireet viitata siihen, että koneessa tai kiintolevyssä on ongelmia. Asennusversio on Ubuntu 24.04.3, enkä muista, olenko sen joskus ennen asentanut vai hainko sen vain varalle.


4
Sen verran mitä muistan nyt yrittäessäni saada 24.04 ubuntua asennetuksi on, että ensin tulee ilmoitus, että poista asennuslähde ja paina sitten enteriä.

Sen jälkeen kone sammuu. Onnistuin yhdellä kerralla sammuttamaan koneen niin, että se käynnistyikin horrostilasta tikun ollessa paikallaan, käynnistys menikin aika nopeasti verrattuna tikulta käynnistymiseen.

Mitä etua on vanhemman version asentamisessa, onko 24.04 -versiossa joitain asioita, joita et halua. Eikö kone sammu, jos vain pitää virtanappia pohjassa.

5
Pääsen Ubuntun kokeilutilaan ja se näyttää toimivan oikein hyvin, tekstinkäsittely käynnistyy jne.. Mutta asennusvalinta tuottaa vain kielikysymyksen pitkine valinnaiskielivaihtoehtoineen ja sen jälkeen ei taphdu mitään.

(sivuhuomio: kone oli näköjään horrostanut Ubuntun asennustilassa ja käynnistyi todella nopeasti, samutin sen viimeksi jotenkin väärin luultavasti)

Kun koneen käynnistää asennustikku usb-paikassa, tulee virheilmoitus /boot/ not found, mutta esittelytila käynnistyy tikulta.

Suoritin on AMD A8-6410 APU

Bios ilmoittaa oevansa InsydeH20 rev. 3.7

Secure boot settings on laitettu pois päältä.

Tikulta käynnistyessä tulee ilmoitus /boot/ not found ja vähän myöhemmin että no irq vectoreita 3 kpl puuttuu.

Tekoaälystä ei ole ollut apua. Se toimittaa hyvin pitkän listan toimista, joiden merkitystä en oikein ymmärrä.

" How can you set InsydeH20 bios to allow installation of Ubuntu "24.04 on acer E5-521" esimerkiksi grok.comissa tai perplexity.aissa


6
vielä asentamatta, sellaisissa ohjeissa, jotka löysin, neuvotaan laittamaan UEFI-tiedosto luotetuksi ja pitäisi löytyä

" Navigate to: HDD0 > EFI > 'ubuntu' and select SHIMX64.EFI (Enter shimx64 as name)  "

mutta pystyn löytämään ainoastaan    HDD1 -> EF! ->   <,,>
                                                                                        <Microsoft>
                                                                                        <Boot>
                                                                                        <OEM>

Ubuntu tai siihen viittaava puuttuu?

USB taitaakin olla jo luotettu, koska kone käynnistyy oikein hyvin tikulta kokeilu- ja asennustilaan.

Biosin ohjelma on InsydeH20 setup utility.


7

Nyt on php-osuus kommentoitu pois ja tiedostotyypiksi vaihdettu html php:n tilalle. Sivu näkyy ainakin omalla koneellani nyt muotoiltuna.

Jotain oli jossain muuttunut, koska näkymä oli selaimella vaihtunut, mutta onko muutos ollut selaimessa vai apachessa, ei vielä ole selvinnyt.

Kiitoksia neuvoista :)



8

Omassa koneessani näkyy selaimessa lähdeteksti, ja siinä on pikku pätkä php:tä lopussa, joka pitäisi oikeastaan kommentoida pois, mutta se ei ole ennenkään haitannut näkymää. Toinen sivu toisessa osoitteessa palvelimella näkyy  kuitenkin muotoiltuna, eli ehkä apachea ei tarvitsisi opetella säätämään. Voisiko omassa firefoxissani olla jotain, mikä vaikuttaa asiaan?

Koodia: [Valitse]
<!--
https://www.w3schools.com/html/html_layout.asp
-->

<!DOCTYPE html>
<html lang="fi">
<head>
<title>SLAM ry</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {
  box-sizing: border-box;
}

body {
  font-family: Arial, Helvetica, sans-serif;
}

/* Style the header */
header {
  background-color: #666;
  padding: 30px;
  text-align: center;
  font-size: 35px;
  color: white;
}

/* Create two columns/boxes that floats next to each other */
nav {
  float: left;
  width: 30%;
  height: 300px; /* only for demonstration, should be removed */
  background: #ccc;
  padding: 20px;
}

/* Style the list inside the menu */
nav ul {
  list-style-type: none;
  padding: 0;
}

article {
  float: left;
  padding: 20px;
  width: 70%;
  background-color: #f1f1f1;
  /* height: 300px; */  /* only for demonstration, should be removed */
}

/* Clear floats after the columns */
section:after {
  content: "";
  display: table;
  clear: both;
}

/* Style the footer */
footer {
  background-color: #777;
  padding: 10px;
  text-align: center;
  color: white;
}

/* Responsive layout - makes the two columns/boxes stack on top of each other instead of next to each other, on small screens */
@media (max-width: 600px) {
  nav, article {
    width: 100%;
    height: auto;
  }
}
</style>
</head>

<body>

<header>
  <h4>SLAM ry </h4>
  Suomen lentokoneasentajat ja mekaanikot ry
</header>

<section>
  <nav>
    <ul id = "my_links1">  <!-- tämän linkit korvataan -->
     <li><a href="tarina01.html">Artikkeli 1</a></li>
     <li><a href="tarina02.html">Artikkeli 2</a></li>
     <li><a href="tarina03.html">Artikkeli 3</a></li>
     <li><a href="tarina04.html">Artikkeli 4</a></li>
     <li><a href="tarina05.html">Artikkeli 5</a></li>
     <li><a href="tarina06.html">Artikkeli 6</a></li>
     <li><a href="tarina07.html">Artikkeli 7</a></li>
     <li><a href="tarina08.html">Artikkeli 8</a></li>
     <li><a href="tarina09.html">Artikkeli 9</a></li>
     <li><a href="tarina10.html">Artikkeli 10</a></li>
     <li><a href="tarina11.html">Artikkeli 11</a></li>
     <li><a href="tarina12.html">Artikkeli 12</a></li>
    </ul>
  </nav>
 
<script src="script01.js"></script>   <!-- linkkien korvausscripti -->
                                      <!-- my_links1 korvataan     -->
  <article>
 
<!--
         XXXXXXXXXXXXXXXXXXXXX    ÄLÄ POISTA TÄSTÄ YLÖS PÄIN YHTÄÄN MITÄÄN  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->


    <h1>
Vuosikokous
    </h1>


<br/>
Slam ry:n vuosikokous on pidetty ja sääntömääräiset asiat käsitelty.
        Yhdistyksen toiminta jatkuu tavalliseen tapaan. Kiitokset osallistjille!

        <br/><br/>
       
<br/><br/>

<br/><br/>

<br/><br/>

<br/><br/>

<br/><br/>

<br/><br/>

<br/><br/>

<br/><br/>

<br/><br/>

<br/><br/>

<br/><br/>
 

<br/><br/>

   



<!--
         XXXXXXXXXXXXXXXXXXXXX    ÄLÄ POISTA TÄSTÄ ALAS PÄIN YHTÄÄN MITÄÄN  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
  </article>
</section>

<footer>
  <p> Ensimmäisen tarinan loppu</p>
</footer>




<?php 

$handle 
fopen("mycounter.txt""r");
if(!
$handle){

 echo 
"could not open the file" ;

}
else {


$counter = (int ) fread($handle,20);
fclose ($handle);
$counter++;
echo" <strong> tarkistusnumero "$counter " </strong> " ;
$handle fopen("mycounter.txt""w" );
fwrite($handle,$counter) ;
fclose ($handle) ;
}
?>




</body>
</html>

9
Tähän asti pilvikoneessa oleva sivu

slam.dy.fi

on näkynyt oikein muotoiltuna, mutta nyt se näkyy tekstinä firefoxissa. Miten saisi sen näkymään jälleen muotoiltuna apachella, niin kuin ennenkin?

Firefoxin network manager näyttää että

Accept on
   text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

pitäisikö sitä jotenkin muuttaa?



10
Tikulla on ubuntu 24,04. -ubuntu, joka käynnistyy ja näyttää ihan oikealta kaikkine Install or try -kuvakkeineen, mutta mitään ei aloiteta asentamaan, vaikka kuvakkeita napsauttaa.  Muuten kaikki näkymä on sellainen, kuin kokeilu tai asennustikulla käynnistettäesä yleenä on ollut.

Tikulta käynnistettäessä tulee kuitenkin tekstitilassa nopeasti näkyvä valitus, että irq vektoria ei löydy. Myös boot -virheilmoitus näkyy ihan ensimmäisenä. Voin yrittää saada sen tarkemmin tänne, jos se on ratkaiseva tieto. Netistä löytyi tietoa, että acerilla on oma luottamusasetus, jota pitää muutella biosissa, mutta tarkempaa tietoa siitä ei ole.

Asennustikku siis kuitenkin käynnistyy ja näyttää muuten toimivan näkymässä, eli ainakin itsensä asennustikun ubuntu on osannut käynnistää, ei lisene siis kysymys boot-tiedoston löytymättömyydestä? Mistä pitäisi alkaa etsiä ratkaisua.

muokk.:
tässä netistä asiaan mahdollisesti liittyvää tietoa, en ole ehtinyt kokeilla
"
So, you need to be in UEFI mode, set that in the BIOS, then set the EFI file on the Linux install flash drive as trusted. If the drive actually works, which is still up in the air right now, the install should proceed fine. Your EFI file is usually located in the /boot/efi partition or folder on the installer. It's probably called something like bootx64.efi.

"

11
Kun koneen mikrofoni kuulee ääntä, tämä muutettaneen jossain vaiheessa digitaaliseksi eli numeroiksi.

Miten saisi tällaisia mikrofonilta peräisin olevia numeroita esimerkiksi 100-paikkaiseen taulukkoon aina tietyin aikavälein, kun koneessa on 24.04 Ubuntu.

Millaisella nopeudella tai taajuudella näitä digitalisoituja numeroita tulee 24.04 Ubuntussa ja saisiko vaikka kaikki 100 peräkkäistä arvoa taulukkoon niin, että se olisi kohtuullisen kevyt toiminto suorittimelle tai väylälle tai muille asiaan liittyville laitteille.

En tunne digitaalista äänitekniikkaa Ubuntussa yhtään, joten ihan käytännönselitykset olisivat  tervetulleita.


12

Asia selvisi, avattaessa vain valitaan oikea ohjelma ehdotetuista.

Kiitoksia  :)

13
Koneessa on ubuntu 24.04 perusversiona ja sen mukana tullut snap-firefox.

Miten olisi paras toimia pdf-asiakirjojen kanssa selaimessa. Joskus aikaisemmin oli mahdollista ruksata asetuksista avaa pdf-tiedostona -valinta, mutta nuykyään sen tilalla lienee system handler -valinta. Mitä se oikein tarkoittaa?

Liittyykö netin pdf:iin jotain turvallisuusongelmia ja niitä ei saisi asiakirjankatselimella suoraan availla.?

Helppoa olisi, jos pdf:t avautuisivat suoraan pdf:inä ja ne voisi halutessaan tallentaa asiakirjankatselimella, miten haluaa, vai onko suositeltavampaa avata ne selaimessa pdf:nä?





14

Kokeilu onnistui. Heti ensimmäisestä vastauksissa olleista linkeistä onnistuttiin nuottipapperi tulostamaan pdf-tiedostoksi.

Rosegarden näyttää myös mielenkiintoiselta, ehkä se pitäisi laittaa kokeiluun flatpackina tai odottaa, että se tulee vakiopaketteihin.

Kiitoksia  vastauksista  :)

15
Voisiko perusohjelmilla, write, impress, tms., tehdä tavallisen nuottiviivaston, jossa on sävel- ja bassoalueet tavalliseen tapaan, siis sellaisen Aaron pienokoulu -nuottiviivaston.

Oma koneeni on pieni, enkä haluaisi asennella ylimääräisiä ohjelmia. (lilypod olisi oikein mukava, mutta, koska sen nuottimerkinnät eivät liene vakiomuotoisia, ei sitäkään viitsisi asennella tilaa viemään. Vakiomuotoiset nuottimerkinnät olisivat mielestäni sellaisia, joita ymmärretään esim. midistandardejen mukaan)

Tekoälyltä saadut ohjeet nuottiviivaston tekemiseksi writelle eivät vaikuttaneet kovin päteviltä.


16
 Jälleen "mielenkiintoinen" c++ strinstream -ongelma. En millään keksi, miksi alla olevassa lyhyessä kokeiluohjelmassa ei koskaan löydetä syötteen lopussa olevia ylimääräisiä merkkejä.

Kolmen kentän arvot (nu ss os) luetaan oikein ja haluttu määrä int arvojakin (j) onnistutaan lukemaan, mutta en koskaan onnistu havaitsemaan ylimääräisiä merkkejä viimeisen j:n jäljessä.
Miksi char-muuttujia lukevaan while-silmukkaan ei koskaan mennä eikä ylimääräinen_merkki saa koskaan luettuja arvoja (näyttäisi, että ääkköset toimivat g++ -kääntäjässä muuttujan nimessä)

Koodia: [Valitse]

#include <iostream>
#include <string>
#include <sstream>

#include <vector>

struct ParsedData
{ int nu;
  std::string ss;
  std::string os;
  std::vector<int> valinnat;  // valinnat
 
};

int j;  // valinta intinä

bool string_to_vector(const std::string& syote, ParsedData& tulos)
{ std::stringstream ss(syote);
  if(!(ss >> tulos.nu >> tulos.ss >> tulos.os))
    {
     return false; // Jäsentäminen epäonnistui.
    }
        std::cout <<tulos.nu << tulos.ss << tulos.os << std::endl;
  while(ss >> j)
    {
      tulos.valinnat.push_back(j);
          std::cout << j << std::endl;
    }
 char ylimääräinen_merkki = 'q'; //ääkköset toimivat muuttujassa myös???  <<===============
   //if(ss >> ylimääräinen_merkki)
   while(ss >> ylimääräinen_merkki) //   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<???????
     {                              //  <<<<<<<<<<<<<<<<<<<< tänne ei päästä koskaan ?????
       //return false;  // Ylimääräistä dataa löytyi.
       std::cout << "yy ";   //  ei koskaan tulla tänne ??????
     }
  return true; // Jäsentäminen onnistui ja syöte oli täysin käytetty.
}

// Pääohjelma, joka esittelee funktion käyttöä.
int main(int argc, char *argv[])

  ParsedData tulos;
  if( string_to_vector(argv[1], tulos) )
    { std::cout << "onnistui" << std::endl;
    }   
  else
    { std::cout << "tuli virhe" << std::endl;
    }
 
  return 0;
}

/
// g++ kokeilu.cpp -o kokeilu -pedantic
// ./kokeilu '33 ppppp ööö 11   12 oooo'

Muokk. 1

Toisaalta aika tyhmä kysymys. Kun while(ss >> j) eli lukeminen virrasta ei enää onnistu, se ei onnistu myöheminkään while(ss >> ylimääräinen_merkki). Ei auta, vaikka merkki ei ole int.

Toisaalta voisi ajatella, että vaikka int:in lukeminen ei onnistu, char:in lukeminen voisi kuitenkin onnistua.

Millähän keinolla tilanteessa voisi tarkistaa, onko virrassa vielä ylimääräisia merkkejä sen jälkeen, kun viimeisen int:in lukeminen on onnistunut. Ehkä joutuu try -rakenteisiin :(

Muokk. 2

Tekoäly kertoi, että

Lainaus
to test whether a stream has reached the end or encountered a bad character, use the stream status functions such as .eof(), .fail(), .bad(), and .good(). The .eof() function checks if the end of the stream has been reached, .fail() detects input failures (such as reading unexpected characters), and .bad() indicates a serious error that makes the stream unusable.

joten asia varmaan ratkeaa.
 

17
std::stringstreamin pitäisi toimia kumpaankin suuntaan

"A stringstream is a part of the C++ Standard Library, defined in the <sstream> header file. It allows us to read from and write to strings like they are streams."

sivun

https://www.geeksforgeeks.org/cpp/stringstream-c-applications/

mukaan. Saman sivun mukaan

stringstream
   Both input and output

istringstream
   Input only (like cin)

ostringstream
   Output only (like cout)

En vielä ole ehtinyt kokeilla std::istringstreamia, mutta kokeilen heti

Muokk.

juu, taisinpa sekoittaa, piti kääntää <<,   mutta tarkistelen asiaa, ehkä sekoitan jotain muutakin

Kiitos neuvosta  :)

18
Kokeilin lukea tekstiä stringstreamilla, mutta miksi se ei koskaan ymmärrä, että anettu syöte on loppu eli miksi ja mistä se lukee ylimääräisen merkin alla olevassa esimerkissä.

Kokeilin syötteenä sanaa qwer ilman loppuvälilyöntiä, yhden loppuvälilyönnin kanssa ja useamman loppuvälilyönnin kanssa. Aina mennään if :iin << -operaattorin kanssa.

Miten  std::strinstreamin saisi ymmärtämään, että syöte on loppunut eikä ylimääräisiä merkkejä pitäisi olla.


Koodia: [Valitse]

#include <iostream>
#include <string>
#include <sstream>

int main()
{
  std::string syote1 =  "qwer    ";   // "qwer " tai "qwer" aina if menee läpi
  std::stringstream ss(syote1);
  std::string merkkijono;

  std::getline(ss, merkkijono, ' ');
  std::cout << syote1 << "|||" << std::endl;
  std::cout << merkkijono << "|||" << std::endl;
  char ylimaarainenMerkki;

  std::cout << "eka: " << (int)ylimaarainenMerkki << std::endl;
  if(ss << ylimaarainenMerkki   )
    {
      std::cout << "tästä virhe" << std::endl;
      std::cout << "toka: " << (int)ylimaarainenMerkki << std::endl;
      std::cout << "ylimaarainenMerkki on: " << ylimaarainenMerkki << std::endl;
    } 
  return 0;
}

// g++ testi_01.cpp -o testi_01 -pedantic
// ./testi_01


19

Ydin poistettu, asennettu uudestaan ja siivottu nm:n ohjeiden mukaan. Kaikki vaikuttaa toimivan.

Kiitoksia :)


20


Hmmm, enpä ole tainnut tässä varakoneessa koskaan laittaa sudo apt autoremovea tai muusta syystä vanhat ytimet ovat mukana

Mutta jos laitan sen nyt, voi olla vaarna, että se poistaakin tämän 6. 8. 0 -79 -version. Mikä olisi varma komento, jolla uusimman eli 6. 8. 0 -83 -version voi poistaa.

Jostain syystä viimeinen listauksessa näkyvä ydin on generic eikä signed niin, kuin muut näyttäisivät olevan, mutta onko asialla mitään merkitystä.

Tässä ytimien listaus

Koodia: [Valitse]
$ dpkg -l | grep linux-image
rc  linux-image-5.19.0-32-generic                 5.19.0-32.33~22.04.1                     amd64        Signed kernel image generic
rc  linux-image-5.19.0-41-generic                 5.19.0-41.42~22.04.1                     amd64        Signed kernel image generic
rc  linux-image-5.19.0-42-generic                 5.19.0-42.43~22.04.1                     amd64        Signed kernel image generic
rc  linux-image-5.19.0-43-generic                 5.19.0-43.44~22.04.1                     amd64        Signed kernel image generic
rc  linux-image-5.19.0-45-generic                 5.19.0-45.46~22.04.1                     amd64        Signed kernel image generic
rc  linux-image-5.19.0-46-generic                 5.19.0-46.47~22.04.1                     amd64        Signed kernel image generic
rc  linux-image-5.19.0-50-generic                 5.19.0-50.50                             amd64        Signed kernel image generic
rc  linux-image-6.2.0-26-generic                  6.2.0-26.26~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.2.0-31-generic                  6.2.0-31.31~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.2.0-32-generic                  6.2.0-32.32~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.2.0-33-generic                  6.2.0-33.33~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.2.0-34-generic                  6.2.0-34.34~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.2.0-35-generic                  6.2.0-35.35~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.2.0-36-generic                  6.2.0-36.37~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.2.0-37-generic                  6.2.0-37.38~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.2.0-39-generic                  6.2.0-39.40~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.5.0-14-generic                  6.5.0-14.14~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.5.0-15-generic                  6.5.0-15.15~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.5.0-17-generic                  6.5.0-17.17~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.5.0-21-generic                  6.5.0-21.21~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.5.0-25-generic                  6.5.0-25.25~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.5.0-26-generic                  6.5.0-26.26~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.5.0-27-generic                  6.5.0-27.28~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.5.0-28-generic                  6.5.0-28.29~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.5.0-35-generic                  6.5.0-35.35~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.5.0-41-generic                  6.5.0-41.41~22.04.2                      amd64        Signed kernel image generic
rc  linux-image-6.5.0-44-generic                  6.5.0-44.44~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.5.0-45-generic                  6.5.0-45.45~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.8.0-40-generic                  6.8.0-40.40~22.04.3                      amd64        Signed kernel image generic
rc  linux-image-6.8.0-45-generic                  6.8.0-45.45~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.8.0-47-generic                  6.8.0-47.47~22.04.1                      amd64        Signed kernel image generic
rc  linux-image-6.8.0-48-generic                  6.8.0-48.48                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-49-generic                  6.8.0-49.49                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-50-generic                  6.8.0-50.51                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-51-generic                  6.8.0-51.52                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-52-generic                  6.8.0-52.53                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-53-generic                  6.8.0-53.55                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-54-generic                  6.8.0-54.56                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-55-generic                  6.8.0-55.57                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-56-generic                  6.8.0-56.58+1                            amd64        Signed kernel image generic
rc  linux-image-6.8.0-57-generic                  6.8.0-57.59                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-58-generic                  6.8.0-58.60+1                            amd64        Signed kernel image generic
rc  linux-image-6.8.0-59-generic                  6.8.0-59.61                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-60-generic                  6.8.0-60.63                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-62-generic                  6.8.0-62.65                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-63-generic                  6.8.0-63.66                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-64-generic                  6.8.0-64.67                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-71-generic                  6.8.0-71.71                              amd64        Signed kernel image generic
rc  linux-image-6.8.0-78-generic                  6.8.0-78.78                              amd64        Signed kernel image generic
ii  linux-image-6.8.0-79-generic                  6.8.0-79.79                              amd64        Signed kernel image generic
ii  linux-image-6.8.0-83-generic                  6.8.0-83.83                              amd64        Signed kernel image generic
ii  linux-image-generic                           6.8.0-83.83                              amd64        Generic Linux kernel image




Sivuja: [1] 2 3 ... 46